---
output:
  knitrBootstrap::bootstrap_document:
    title: "TESTE YAML"
    theme: Cosmo
    highlight: Idea
    theme.chooser: TRUE
    highlight.chooser: TRUE
    menu: TRUE
---

```{r setup, include=FALSE, purl=FALSE, eval=TRUE}
opts_chunk$set(
    ## knitr options
    cache = TRUE,
    tidy = FALSE,
    comment = NA,
    fig.width = 10,
    fig.height = 8,
    fig.align = "center",
    dpi = 80, ## aumentar o dpi para exibir maior.
    dev = "png",
    # fig.path = "figures/",
    ## knitrBootstrap package options (YAML)
    # bootstrap.title = "TESTE",
    # bootstrap.theme.chooser = TRUE,
    # bootstrap.highlight.chooser = TRUE,
    # bootstrap.theme = "Cosmo",
    # bootstrap.highlight = "Github",
    # bootstrap.menu = TRUE,
    custom.header = NULL,
    clean_supporting = TRUE,
    ## knitrBootstrap chunck options
    bootstrap.thumbnail = TRUE,
    bootstrap.thumbnail.size = "col-md-12",
    bootstrap.panel = FALSE,
    bootstrap.show.code = TRUE,
    bootstrap.show.output = TRUE,
    bootstrap.show.message = FALSE,
    bootstrap.show.warning = FALSE,
    bootstrap.show.error = FALSE,
    bootstrap.class = "row"
    )
```

<center>
<h1>
CE 074 - Controle de Processos Industriais
</h1>
<h6>
<a href="http://leg.ufpr.br/doku.php/disciplinas:ce074-2015-02">http://www.leg.ufpr.br/ce074</a>
</h6>
</center>

<br><br>
<p style="display: flex; justify-content: space-between; line-height: 0.75;">
<span>
<a href="http://www.ufpr.br/portalufpr/">Universidade Federal do Paraná</a>
</span>
<span>
<a href="http://www.leg.ufpr.br/~fernandomayer">Prof. Fernando de Pol Mayer</a>
</span>
<p style="display: flex; justify-content: space-between; line-height: 0.75;">
<span>
<a href="http://www.coordest.ufpr.br/">Curso de Graduação em Estatística</a>
</span>
<span>
<a href="http://www.leg.ufpr.br">Lab. de Estatística e Geoinformação - LEG</a>
</span>
<p style="display: flex; justify-content: flex-end; line-height: 0.75;">
<a href="http://www.est.ufpr.br">Departamento de Estatística - UFPR</a>
</p> 

<center>
<hr width="100%" size="3px">
</center>


# Sumário

Revisão de conceitos de planejamento de experimentos.

# Planejamento de experimentos: conceitos básicos

- Experimento
- Tratamento
- Unidade Experimental (UE) ou parcela
- Delineamento experimental
- População
- Amostra

Em qualquer investigação científica, o procedimento geral é o de
formular hipóteses e verificá-las diretamente ou por meio de
consequências.

As hipóteses são testadas por meios de métodos de análise estatística,
que dependem do modo como as observações foram obtidas. Por isso é
importante o **planejamento de experimentos**.

O que nos obriga  a utilizar análises estatísticas para testar hipóteses
é a presença de efeitos de **fatores não controlados** que causam
**variação**. Estes efeitos podem ou não serem controlados. Exemplos:
difernças de fertilidade do solo, espaçamento nas plantações, variação
genética, etc.

Estes efeitos não podem ser conhecidos individualmente, e tendem a
mascarar o efeito do tratamento em estudo. O conjunto dos efeitos dos
fatores não controlados é denominado **variação ao acaso** ou **variação
aleatória**.

# Planejamento de experimentos: ideias gerais

1) Por que agrupamos unidades experimentais (UEs) em blocos?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Para fazer o controle local. Agrupar UEs em blocos serve para
homegeneizar as amostras em termos de variabilidade, pois o agrupamento
é feito para que as amostras dentro de cada bloco possuam
características similares.
```
2) Como se espera que sejam as UEs dentro de um bloco?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Espera-se que as UEs sejam homogêneas, ou seja, que a variabilidade
entre as amostras de um mesmo bloco seja pequena. A variabilidade das
amostras dentro de um bloco deve ser menor do que a variabilidade entre
as amostras se não houvessem os blocos.
```
3) Em experimentos agricolas é comum não se colher a bordadura das parcelas.
   Em experimentos médicos, médicos e pacientes não sabem que níveis do fator foram
   administrados. Nas pesquisas de opinião, evita-se que uma pessoa conheça a avaliação
   das demais. Por que são adotados tais procedimentos?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Para garantir a independência entre as amostras.
```
4) Por que aleatorizamos os níveis do fator às UE?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Para evitar que ocorram erros sistemáticos nas amostras. Sabemos que
mesmo entre UEs aparentemente idênticas, existe uma particularidade
natural de cada UE (e.g. plantas, máquinas, ...). A aleatorização entre
as UEs garante que os níveis do fator de interesse serão aplicados
independentemente destas características, fazendo com que qualquer
variação observada entre as UEs seja efeito apenas do nível do fator e
da variação aleatória intrínsica ao mecanismo gerador da resposta.
```
5) Como é a aleatorização dos níveis em um experimento inteiramente
cazualizado? 
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Os níveis dos fatores são atribuídos aleatoriamente para cada UE. Uma
forma simples de fazer este sorteio aleatório é definir um valor para
cada UE.
```
Como você faria se tivesse um fator com 3 níveis (A, B, C), e quisesse
fazer 4 repetições para cada nível do fator?
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
## Dessa forma, temos 3 x 4 = 12 UEs. Associamos os valores de 1 a 12
## para cada UE, e sorteamos os níveis dos fatores para cada uma
nf <- 3
r <- 4
n <- nf * r
fator <- rep(c("A", "B", "C"), each = r)
set.seed(123)
(DIC <- data.frame(UE = 1:n, Fator = sample(fator)))
## Croqui do experimento
matrix(DIC$Fator, ncol = nf, dimnames = list(1:r, 1:nf))
```
6) Como é a aleatorização dos níveis em um experimento de blocos ao
acaso?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Quando temos blocos, a aleatorização é realizada dentro de cada
bloco. Portanto precisamos inicialmente definir os blocos e verificar
quantas UEs pertencem a cada bloco.  Idealmente, cada nível do fator
deve estar presente em todos os blocos.
```
Suponha que temos um experimento com 4 blocos, e um fator com 6 níveis
para ser avaliado. Como seria a aleatorização?
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
## Nesse caso, temos 6 x 4 = 24 UEs. Associamos os valores de 1 a 24
## para cada UE, e alocamos cada 6 UEs em cada um dos 4 blocos. Os
## níveis dos fatores devem ser sorteados dentro de cada bloco
nf <- 6
b <- 4
n <- nf * b
fator <- rep(LETTERS[1:6], each = b)
blocos <- rep(c("I", "II", "III", "IV"), each = nf)
set.seed(123)
## Certo??
(DBC <- data.frame(UE = 1:n, Blocos = blocos, Fator = sample(fator)))
```
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
set.seed(123)
(DBC <- data.frame(UE = 1:n, Blocos = blocos,
                   Fator = as.vector(
                       replicate(b, sample(unique(fator)))
                   )))
## Croqui do experimento
matrix(DBC$Fator, ncol = b, dimnames = list(1:nf, paste("Bloco", 1:b)))
```
7) O que é um experimento fatorial $2^k$?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Experimentos fatorias são aqueles em que um mais fatores são estudados
simultaneamente. A vantagem é que podemos analisar se existe efeito da
interação entre estes fatores, não apenas efeitos individuais. Um
fatorial 2^k significa que temos um experimento com k > 1 fatores cada
um com apenas 2 níveis.
```
8) Estendendo a ideia: como é a aleatorização de um experimento
inteiramente ao acaso (DIC) no esquema fatorial $2^k$?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
É similar à aleatorização para um DIC com um fator, ou seja sorteamos
aleatoriamente as UEs que receberão determinado nível do fator. A grande
diferença é que como temos mais de um fator, devemos casualizar os
níveis combinados dos fatores.
```
Suponha que temos um experimento em DIC com 2 níveis do fator A ($a$), 2
níveis do fator B ($b$), e sem repetições ($r$), ou seja, um fatorial
$2^2$. Como seria a aleatorização?
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
## Nesse caso temos 2 níveis A x 2 níveis B  = 4 possibilidades de
## combinação. Criamos os níveis dos fatores e fazemos todas as
## combinações possíveis. Depois aleatorizamos as combinações para cada
## UE.
a <- 2
b <- 2
r <- 1 # sem repetição
n <- a * b * r
fatores <- expand.grid(A = c("A1", "A2"),
                       B = c("B1", "B2"))
fatores$AB <- paste(fatores$A, fatores$B, sep = ":")
fatores
set.seed(123)
(DICf <- data.frame(UE = 1:n, Fatores = sample(fatores$AB)))
table(DICf$Fatores)
## Croqui para este experimento
matrix(DICf$Fatores, ncol = a*b,
       dimnames = list(1:r, 1:(a*b)))
```
E se houvessem 4 repetições ($r$) de cada nível do fator?
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
a <- 2
b <- 2
r <- 4
n <- a * b * r
fatores <- expand.grid(A = rep(c("A1", "A2"), each = a),
                       B = rep(c("B1", "B2"), each = b))
fatores$AB <- paste(fatores$A, fatores$B, sep = ":")
fatores
set.seed(123)
(DICf <- data.frame(UE = 1:n, Fatores = sample(fatores$AB)))
table(DICf$Fatores)
## Croqui para este experimento
matrix(DICf$Fatores, ncol = a*b,
       dimnames = list(1:r, 1:(a*b)))
```
9) Quais as suposições de um experimento inteiramente casualizado?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
As UEs devem ser independentes.
A determinação dos níveis dos fatores para as UEs deve ser aleatória.
A distribuição dos dados amostrais deve ser normal (?).
A variância deve ser homocedástica entre os níveis dos fatores (?).
```
10) Quais as suposições de um experimento em blocos ao acaso?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Os blocos devem ser homogêneos (as características de dentro dos blocos
devem ser semehantes).
As UEs devem ser independentes.
A determinação dos níveis dos fatores para as UEs dentro dos blocos deve
ser aleatória.
A distribuição dos dados amostrais deve ser normal (?).
A variância deve ser homogêmea dentro dos blocos (?).
```
11) O que é um experimento em blocos incompletos?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
No DBC o número de UEs por bloco deve ser igual ao número de
tratamentos, mas nem sempre isso é possível. Quando não é possível
utilizar todos os tratamentos em cada um dos blocos deve-se utilizar um
delineamento em blocos incompletos. Por exemplo, podemos ter um fator
com 6 níveis, mas devido à alguma restrição (física, logística,
orçamentária, ...) temos apenas 4 UEs por bloco.
```
12) O que é um experimento em blocos incompletos balanceado?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Um bloco incompleto balanceado é um delineamento em que cada um dos
níveis do fator é repetido r vezes e ocorre no máximo uma vez em cada um
dos b blocos.
Todos os blocos tem o mesmo tamanho, e todos os tratamentos tem o mesmo
número de repetições.
```
<!-- Suponha um experimento com 4 níveis de um fator, em 4 blocos, mas com 3 -->
<!-- UEs em cada bloco. Como seria a aleatorização? -->
<!-- ```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE} -->
<!-- ## Nesse caso, temos 4 x 3 = 12 UEs no total. Associamos os valores de 1 -->
<!-- ## a 12 para cada UE, e alocamos cada 3 UEs em cada um dos 4 -->
<!-- ## blocos. NOTE que aqui haverá um nível do fator ausente em cada bloco, -->
<!-- ## mas o número total de vezes de cada nível é o mesmo (nesse caso -->
<!-- ## 3). Os níveis dos fatores devem ser sorteados dentro de cada bloco. -->
<!-- nf <- 4 -->
<!-- b <- 4 -->
<!-- k <- 3 -->
<!-- n <- b * k -->
<!-- fator <- rep(LETTERS[1:4], each = k) -->
<!-- ## factor(c(1,2,3, 1,2,4, 1,3,4, 2,3,4), -->
<!-- ##        labels = c("A", "B", "C", "D")) -->
<!-- blocos <- rep(c("I", "II", "III", "IV"), each = k) -->
<!-- set.seed(123) -->
<!-- (DBIC <- data.frame(UE = 1:n, Blocos = blocos, -->
<!--                     Fator = sample(unique(fator)))) -->
<!-- with(DBIC, table(Fator, Blocos)) -->
<!-- ## Croqui do experimento -->
<!-- matrix(DBIC$Fator, ncol = b, dimnames = list(1:k, paste("Bloco", 1:b))) -->
<!-- ``` -->
13) Einsten deseja avaliar a qualidade do café processado de duas maneiras diferentes
   (A e B). No sábado ele recebeu a visita de 4 amigos e serviu o café A para eles
   registrando as avaliações feitas. No domingo, sua esposa recebeu a visita de
   5 amigas e serviu o café B para elas registrando as avaliações. Existem
   problemas com o experimento de Einsten? Identifique-os. Aconselhe-o de como
   realizar o experimento para investigar sua hipótese.
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
O problema neste exprimento é que os efeitos estão confundidos. O tipo
de café está confundido com o dia, com o sexo das pessoas, e com a
pessoa que preparou o café. Uma análise dos dados deste experimento não
será muito informativa pois não conseguiremos separar os efeitos de
todos os fatores.
Uma análise para avaliar a qualidade do café poderia ser feita da
seguinte forma: Apenas Einstein prepara o café (fixa, ou controla, o
preparador). Ele prepara os cafés A e B para um grupo de homens e
mulheres em um dia. No outro dia ele prepara novamente os tipos A e B
para outro grupo de homens e mulheres. Nesse caso, os dias são os
blocos, pois o interessse da análise é na qualidade de cada tipo de café
avaliada por homens e mulheres.
```
14) O que são variáveis *dummy*?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
São variáveis que servem para codificar a presença (1) ou ausência (0)
do nível de algum fator em uma determinada UE.
```
15) Qual a diferença na matriz do modelo entre um modelo de regressão
    (fatores de níveis métricos) e modelo de experimento (fatores de
    níveis categóricos)?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
A matriz do modelo de um modelo de regressão contém os próprios valores
mensurados da variável resposta, enquanto que a matriz do modelo de um
experimento com um fator contém variáveis dummy para indicar a
presença/ausência dos níveis do fator.
```
```{r, bootstrap.show.code = FALSE, bootstrap.show.output = FALSE}
## Um exemplo com cars
set.seed(123)
(carros <- cars[sample(1:nrow(cars), size = 15), ])
model.matrix(dist ~ speed, data = carros)
## Um fator com 3 níveis e 4 repetições
fator <- rep(c("A", "B", "C"), each = 4)
model.matrix(~fator)
```
16) Por que precisamos adotar uma restrição paramétrica nos modelos com fator de nível
    categórico?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Porque a matriz do modelo com variáveis dummy de todos os níveis do
fator possui posto incompleto, ou seja, não é inversível. Como sabemos
que precisamos da inversa de (X'X), então é necessário impor uma
restrição para que essa matriz possa ser invertida, e assim podemos
estimar os parâmetros do modelo.
```
```{r, error=TRUE, bootstrap.show.error=TRUE}
## Fator com 3 níveis e 4 repetições
fator <- factor(rep(c("A", "B", "C"), each = 4))
## Cria a matriz do modelo sem nenhuma restrição
X <- matrix(0, nrow = 12, ncol = 3)
X[cbind(seq_along(fator), fator)] <- 1
(X <- cbind(1, X))
## X'
Xt <- t(X)
## X'X
(Xt %*% X)
## (X'X)^-1
solve(Xt %*% X)
## Impondo uma restrição: remove a coluna do primeiro nível -
## equivalente a zerar o primeiro nível do fator
(X <- X[, -2])
## X'
Xt <- t(X)
## X'X
Xt %*% X
## (X'X)^-1
solve(Xt %*% X)
```
17) Por que fazemos análise dos resíduos?
```{r, bootstrap.show.code = FALSE, results="asis", eval=FALSE}
Para verificar as suposições feitas para o modelo.
```

<center>
<hr width="100%" size="3px">
</center>


Última atualização: `r Sys.time()`
