From 899a801b2622d3e2c5a91f6b26beb20124c4a68c Mon Sep 17 00:00:00 2001
From: Walmes Zeviani <walmes@ufpr.br>
Date: Tue, 20 Sep 2016 14:13:06 -0300
Subject: [PATCH] Adiciona vinheta de DQL.

---
 vignettes/anaExpDQL.Rmd | 369 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 369 insertions(+)
 create mode 100644 vignettes/anaExpDQL.Rmd

diff --git a/vignettes/anaExpDQL.Rmd b/vignettes/anaExpDQL.Rmd
new file mode 100644
index 00000000..4208177f
--- /dev/null
+++ b/vignettes/anaExpDQL.Rmd
@@ -0,0 +1,369 @@
+---
+title: "Análise de Experimentos em Delineamento Quadrado Latino"
+author: "PET Estatística UFPR"
+vignette: >
+  %\VignetteIndexEntry{Análise de Experimentos em Delineamento Quadrado Latino}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
+---
+
+```{r setup, include=FALSE}
+source("config/_setup.R")
+```
+
+## Análise exploratória
+
+Para exemplificação da análise de um experimento em delineamento
+quadrado latino (DQL), vamos considerar o conjunto de dados
+`PimentelEg5.2`.
+
+```{r}
+library(labestData)
+
+# Selecione a keyword DQL para filtrar os experimentos em DQL.
+# labestDataView()
+```
+```{r, eval=FALSE}
+help(StorckEg2.3.5, help_type = "html")
+```
+
+Nesse experimento estudou-se o rendimento (resposta) de quatro
+cultivares de alho. O experimento foi instalado em delineamento quadrado
+latino para ser feito controle local em duas dimensões. A blocagem nas
+linhas foi em razão da heterogeniedade da fertilidade entre as curvas de
+nível (cada curva igual a uma linha) e a blocagem nas colunas foi devido
+à heterogeneidade entre os tamanhos dos bulbos de alho, portanto, em
+cada coluna foi usado uma classe de tamanho de bulbos.
+
+```{r}
+#-----------------------------------------------------------------------
+# Ler a partir do repositório do labestData.
+
+# url <- paste0("https://gitlab.c3sl.ufpr.br/pet-estatistica",
+#               "/labestData/raw/devel/data-raw/StorckEg2.3.5.txt")
+#
+# StorckEg2.3.5 <-
+#     read.table(file = url, sep = "\t", header = TRUE)
+
+#-----------------------------------------------------------------------
+# Análise exploratória.
+
+data(StorckEg2.3.5)
+
+# Estrutura do objeto.
+str(StorckEg2.3.5)
+
+# Tabela de frequência para os tratamentos.
+xtabs(~cult, data = StorckEg2.3.5)
+
+# Dados desempilhados.
+unstack(x = StorckEg2.3.5, form = rend ~ cult)
+
+library(lattice)
+
+# Diagrama de dispersão dos valores. Cores indetificam as colunas e
+# símbolos indentificam as filas.
+
+xyplot(rend ~ reorder(cult, rend),
+       data = StorckEg2.3.5,
+       pch = StorckEg2.3.5$fila,
+       col = StorckEg2.3.5$colun,
+       xlab = "Cultivares de alho",
+       ylab = expression("Rendimento" ~ (ton ~ ha^{-1})),
+       type = c("p", "a"))
+
+library(reshape)
+
+# Croqui do delineamento (em texto).
+cast(StorckEg2.3.5, fila ~ colun, value = "cult")
+
+# Croqui do delineamento (em gráfico).
+levelplot(rend ~ fila + colun,
+          data = StorckEg2.3.5, aspect = "iso",
+          col.regions = heat.colors,
+          xlab = "Blocagem das curvas de nível",
+          ylab = "Blocagem dos tamanhos de bulbo",
+          panel = function(x, y, z, subscripts, ...) {
+              panel.levelplot(x, y, z, subscripts = subscripts, ...)
+              panel.text(x, y, StorckEg2.3.5$cult[subscripts],
+                         cex = 0.8)
+              panel.text(x, y, z, pos = 1)
+          })
+```
+
+Conforme a análise preliminar, esse quadrado latino é de dimensão
+`r nlevels(StorckEg2.3.5$cult)`.
+
+No gráfico de dispersão, ordenamos as cultivares pela média amostral e
+as observações de uma mesma fila e coluna foram indentificas com
+símbolos e cores, respectivamente. Pelo diagrama de dispersão, os pontos
+em preto tem a tendência de seres os mais altos enquanto que os
+vermelhos são os mais baixos. Para os símbolos, a cruz diagonal
+($\times$) está mais em cima e a cruz vertical ($+$) mais embaixo.
+
+A variável resposta rendimento nesse experimento está representada em
+toneladas por hectare. Apesar de ser uma variável contínua, todos os
+valores observados são inteiros. Dificilmente o instrumento de medida
+usado no experimento tenha uma precisão tão pequena. Provavelmente os
+resultados tenham maior precisão mas foram arredodados para inteiros
+para facilitar a execução da análise sem computador.
+
+## Especificação e ajuste do modelo
+
+O modelo estatístico correspondente ao delineamento quadrado latino é
+
+$$
+\begin{aligned}
+  Y|\text{fila, colun, cult}
+    &\,\sim \text{Normal}(\mu_{ijk}, \sigma^2) \newline
+  \mu_{ij} &= \mu + \alpha_{i} + \gamma_{j} + \tau_{k},
+\end{aligned}
+$$
+
+em que $Y$ é a variável resposta, $\alpha_{i}$ é o efeito da fila $i$,
+$\gamma_j$ é o efeito da coluna $j$, $\tau_k$ é o efeito da cultivar
+$k$, $\mu$ é a média de $Y$ na ausência do efeito de todos os termos
+indexados e $\sigma^2$ é a variância das observações ao redor das suas
+respectivas médias. Note que a média ($\mu$) tem três índices referentes
+à fila, coluna e cultivar.
+
+Antes de declararmos o modelo, é importante notar que as variáveis
+`fila` e `colun` precisam ser convertidas para fator (variável
+qualitativa) para fazer a análise. Da forma como estão, serão
+interpretadas como fatores quantitativos para os quais será estimado um
+coeficiente de taxa, o que não faz sentido.
+
+```{r}
+#-----------------------------------------------------------------------
+# Ajuste do modelo.
+
+StorckEg2.3.5 <- transform(StorckEg2.3.5,
+                           fila = factor(fila),
+                           colun = factor(colun))
+str(StorckEg2.3.5)
+
+m0 <- lm(rend ~ fila + colun + cult, data = StorckEg2.3.5)
+
+# Estimativas dos efeitos. Restrição de zerar primeiro nível.
+cbind(coef(m0))
+
+# Aqui tem-se o grupo de coeficientes para cada um dos termos do
+# preditor para a média (\mu = 0, \alpha_i = 1, \gamma_j = 2,
+# \tau_k = 3).
+split(coef(m0), m0$assign)
+
+# Médias amostrais.
+aggregate(rend ~ cult, data = StorckEg2.3.5, FUN = mean)
+```
+
+No modelo estatístico para DQL, tem-se três termos com efeito na média:
+filas, colunas e cultivares, que são os parâmetros indexados no
+modelo. Como os fatores são categóricos, $k-1$ parâmetros são estimados
+para acomodar o efeito de cada um ($k$ é o número de níveis). O R por
+padrão usa a restrição de zerar o efeito do primeiro nível de cada fator
+e cada coeficiente corresponde, então, corresponde à diferença entre o
+nível de referência com cada um dos demais.
+
+O prefixo no nome dos coeficientes vem dos correspondentes termos do
+modelo. O elemento `assign` mostra que foi atribuido o mesmo número
+inteiro para os coeficientes do mesmo termo.
+
+```{r}
+# Médias ajustadas de mínimos quadrados (least squares means).
+# L <- doBy::LSmatrix(m0, effect = "cult")
+# dput(L)
+
+dput(t(matrix(c(1, 1, 1, 1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25,
+              0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25,
+              0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0, 1, 0,
+              0, 0, 0, 1, 0, 0, 0, 0, 1),
+            nrow = 4, byrow = FALSE)))
+
+
+L <- matrix(c(1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0, 0, 0,
+              1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 1, 0, 0,
+              1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0, 1, 0,
+              1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0, 0, 1),
+            byrow = TRUE,
+            nrow = nlevels(StorckEg2.3.5$cult),
+            dimnames = list(levels(StorckEg2.3.5$cult), NULL))
+
+# Médias de mínimos quadrados.
+L %*% coef(m0)
+```
+
+O interesse nesse experimento é estudar o efeito das cultivares de
+alho. No entanto, no modelo tem-se também o efeito de filas e colunas,
+que foram incluídos para controle local. Uma maneira de representar o
+efeito das cultivares é calcular as médias ajustadas, ao invés de
+reportar os coeficientes estimados. Deve considerar que para cada termo
+que não seja de interesse, seus efeitos terão que contribuir com peso
+igual ao inverso do número de níveis. Sendo assim, com 4 filas e 4
+colunas os pesos são 1/4, ou seja, cada nível contribui com 1/4 do seu
+efeito estimado. Perceba que isso é exatamente uma média de
+efeitos. Apesar da simplicidade, esse tipo de média ficou conhecida por
+*lsmeans* (Least Squares Means).
+
+## Avaliação dos pressupostos
+
+```{r}
+#-----------------------------------------------------------------------
+# Exibe o quarteto fantástico da avaliação dos pressupostos.
+
+par(mfrow = c(2, 2))
+plot(m0); layout(1)
+
+```
+
+Os gráficos de resíduos não apresentam evidências para o fuga dos
+pressupostos. O gráfico 2-1 (Scale-Location) mostra que a dispersão dos
+valores é a mesma independente da média. O gráfico 1-2 (Normal Q-Q)
+mostra que os pontos não fogem acentuadamente uma reta, indicando que a
+suposição de normalidade dos erros foi atendida. Deve-se considerar que
+o número de observações é pequeno, portanto, o reconhecimento de padrões
+é muito difícil.
+
+## Inferências
+
+O efeito das variedades é representado pelos coeficientes $\tau_k$ no
+modelo estatístico do experimento. Se não existe efeito das variedades,
+os valores estimados $\tau_{k}$ serão simultaneamente próximos a zero. A
+hipóteses nula de não haver efeito é representada por
+
+$$
+  \text{H}_{0}: \tau_k = 0, \text{para todo}\,k.
+$$
+
+Essa hipótese é avaliada pelo estatística F do quadro de análise de
+variância.
+
+```{r}
+anova(m0)
+```
+
+Pelo quadro, existe efeito das cultivares ($p<0.05$), ou seja, elas não
+apresentam a mesma produção média. Os códigos abaixo retornam os valores
+preditos para as cultivares sob efeito do primeiro nível de fila e de
+coluna. Ou seja, esses são os valores esperados de rendimento para as
+cultivares nessas condições. Se outras filas ou colunas forem
+consideradas, os valores médios serão diferentes devido à mudança no
+valor desses efeitos. No entanto, é importante enfatizar que as
+diferenças entre as médias das cultivares permanecerá a mesma,
+independente da escolha de fila ou coluna. Portanto, como o interesse
+está na diferença entre médias para cultivares, não importa em quais
+níveis estão fixados os valores dos demais termos.
+
+```{r}
+# Predição das médias das cultivares nos níveis 1 e 1 de fila e coluna.
+pred <- data.frame(cult = levels(StorckEg2.3.5$cult),
+                   fila = "1",
+                   colun = "1")
+pred <- cbind(pred,
+              as.data.frame(predict(m0,
+                                    newdata = pred,
+                                    interval = "confidence")))
+pred
+```
+
+Se por um lado as diferenças de médias de cultivar são as mesmas
+qualquer que sejam os níveis dos demais termos, existe uma preferência
+para usar o efeito médio ao invés de fixar em um nível qualquer. A
+vantagem que as médias ajustadas tem maior precisão quando consideram a
+média dos efeitos.
+
+```{r}
+suppressMessages(library(multcomp, quietly = TRUE))
+
+# Vetor de pesos para o valor esperado da cultivar 1 nos níveis 1 e 1 de
+# fila e coluna e na média dos efeitos.
+# média dos blocos.
+l1 <- matrix(c(1, 0,    0,    0,    0,    0,    0,    0, 0, 0),
+             nrow = 1)
+l0 <- matrix(c(1, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0, 0, 0),
+             nrow = 1)
+
+# Os erros padrões também são diferentes, assim como as médias.
+summary(glht(m0, linfct = l1))
+summary(glht(m0, linfct = l0))
+
+# Erros-padrões obtidos matricialmente.
+# sqrt(l1 %*% vcov(m0) %*% t(l1))
+# sqrt(l0 %*% vcov(m0) %*% t(l0))
+```
+
+O código acima mostra que ao considerar a médias dos efeitos o
+erro-padrão foi menor. Isso porque usando a média, os efeitos se anulam
+e por isso a contribuição para o erro-padrão da estimativa é 0.
+
+```{r}
+# IC *individual* de cobertura 95%.
+# ic <- confint(glht(m0, linfct = L), calpha = univariate_calpha())
+# ic <- as.data.frame(ic$confint)
+
+# IC *global* de cobertura 95%. CUIDADO, essa função demora muito quando
+# o número de níveis é grande.
+ic <- confint(glht(m0, linfct = L))
+ic <- as.data.frame(ic$confint)
+
+names(ic) <- c("fit", "lwr", "upr")
+
+pred <- cbind(cult = pred$cult, ic)
+pred
+
+library(latticeExtra)
+
+segplot(cult ~ lwr + upr, centers = fit, data = pred,
+        draw = FALSE, horizontal = FALSE,
+        xlab = "Cultivares de alho",
+        ylab = expression("Rendimento de alho" ~ (t ~ ha^{-1})),
+        panel = function(x, y, z, centers, ...) {
+            panel.segplot(x = x, y = y, z = z, centers = centers, ...)
+            panel.text(x = as.numeric(z), y = centers,
+                       label = sprintf("%0.2f", centers),
+                       srt = 90, cex = 0.8, adj = c(0.5, -0.5))
+        })
+```
+
+Por fim, uma representação intessante é colocar as médias ajustadas das
+variades com alguma presentação de incerteza, como o intervalo de
+confiança. No caso, foi usando o intervalo de confiança com cobertura
+global de 95%. Os intervalos de cobertura individual são aqueles cuja
+probabilidade de conter o parâmetro é, digamos, 5% para cada coeficiente
+separadamente.  Já o de confiança global, a probabilidade 5% é a de
+todos os intervalores conterem os parâmetros simultaneamente. Esses
+intervalos são mais amplos que os de cobertura individual.
+
+## Gerando experimento em DQL
+
+A casualização em um experimento em delineamento quadrado latino parece
+não ser simples devido às restrições de que os tratamentos não podem se
+repetir na mesma linha nem na mesma coluna. No entanto, gerar esse
+delineamento é bem simples, conforme ilustra o código a seguir.
+
+```{r}
+qldesign <- function(dim) {
+    # dim: escalar inteiro que é a dimensão do QL.
+    M <- matrix(1:dim, dim, dim)
+    N <- M + (t(M))
+    O <- (N %% dim) + 1
+    lin <- sample(1:dim)
+    col <- sample(1:dim)
+    M <- O[lin, col]
+    D <- expand.grid(lin = gl(dim, 1), col = gl(dim, 1))
+    D$trat <- c(M)
+    return(list(M = M, D = D))
+}
+
+# Quadrado latino de dimensão 5.
+qldesign(dim = 5)
+```
+
+## Informações da sessão
+
+```{r}
+sessionInfo()
+```
+
+<!------------------------------------------- -->
+
+[**labestData**]: https://gitlab.c3sl.ufpr.br/pet-estatistica/labestData
-- 
GitLab