Experimento em delineamento de quadrado latino

Walmes Zeviani


Definições da sessão

##-----------------------------------------------------------------------------
## Definições da sessão, pacotes a serem usados.

pkg <- c("lattice", "latticeExtra", "doBy", "multcomp", "reshape",
         "plyr", "wzRfun")
sapply(pkg, library, character.only=TRUE, logical.return=TRUE)
##      lattice latticeExtra         doBy     multcomp      reshape         plyr 
##         TRUE         TRUE         TRUE         TRUE         TRUE         TRUE 
##       wzRfun 
##         TRUE

source("lattice_setup.R")

##-----------------------------------------------------------------------------
## Informações sobre as versões dos pacotes.

sessionInfo()
## R version 3.1.1 (2014-07-10)
## Platform: i686-pc-linux-gnu (32-bit)
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=pt_BR.UTF-8       
##  [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=pt_BR.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=pt_BR.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
## [10] LC_TELEPHONE=C             LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] splines   stats     graphics  grDevices utils     datasets  base     
## 
## other attached packages:
##  [1] wzRfun_0.1          plyr_1.8.1          reshape_0.8.5       multcomp_1.3-3     
##  [5] TH.data_1.0-3       mvtnorm_0.9-99992   doBy_4.5-10         MASS_7.3-33        
##  [9] survival_2.37-7     latticeExtra_0.6-26 RColorBrewer_1.0-5  lattice_0.20-29    
## [13] knitr_1.5          
## 
## loaded via a namespace (and not attached):
##  [1] evaluate_0.5.5      formatR_0.10        grid_3.1.1          lme4_1.1-6         
##  [5] Matrix_1.1-4        methods_3.1.1       minqa_1.2.3         nlme_3.1-117       
##  [9] Rcpp_0.11.1         RcppEigen_0.3.2.1.2 sandwich_2.3-0      stringr_0.6.2      
## [13] tools_3.1.1         zoo_1.7-11

## obs: Para instalar um pacote faça:
## install.packages("nome_do_pacote", dependencies=TRUE)

Importação dos dados

##-----------------------------------------------------------------------------
## Lendo arquivos de dados.

## Url de um arquivo com dados.
url <- "http://www.leg.ufpr.br/~walmes/data/pimentel_canadeacucar2.txt"

## Importa os dados a partir do arquivo na web.
da <- read.table(file=url, header=TRUE, sep="\t")

## Para facilitar, truncar os nomes.
names(da) <- substr(names(da), 1, 4)

## Converte linha e coluna de inteiro para fator.
da <- transform(da, linh=factor(linh), colu=factor(colu))

## Mostra a estrutura do objeto.
str(da)
## 'data.frame':    25 obs. of  4 variables:
##  $ linh: Factor w/ 5 levels "1","2","3","4",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ colu: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5 ...
##  $ vari: Factor w/ 5 levels "A","B","C","D",..: 4 3 5 2 1 1 5 2 4 3 ...
##  $ prod: int  432 724 489 494 515 518 478 384 500 660 ...

## Vendo o quadrado no plano.
cast(da, linh~colu, value="vari")
##   linh 1 2 3 4 5
## 1    1 D C E B A
## 2    2 A E B D C
## 3    3 B A C E D
## 4    4 C B D A E
## 5    5 E D A C B
cast(da, linh~colu, value="prod")
##   linh   1   2   3   4   5
## 1    1 432 724 489 494 515
## 2    2 518 478 384 500 660
## 3    3 458 524 556 313 438
## 4    4 583 550 297 486 394
## 5    5 331 400 420 501 318

## Tem registros perdidos?
sum(is.na(da$prod))
## [1] 0

##-----------------------------------------------------------------------------
## Análise exploratória.

xyplot(prod~vari, data=da, type=c("p","a"))

plot of chunk unnamed-chunk-3


## Gráfico do layout.
levelplot(prod~linh+colu,
          data=da, aspect="iso")+
    layer(with(da,
               panel.text(x=linh, y=colu,
                          label=paste(vari, prod))))

plot of chunk unnamed-chunk-3


Especificação e estimação do modelo

\[ \begin{aligned} Y|\text{fontes de variação} &\sim \text{Normal}(\mu_{ijk}, \sigma^2) \newline \mu_{ijk} &= \mu+\alpha_i+\beta_j+\tau_k \end{aligned} \]

em que \(\alpha_i\) é o efeito da linha \(i\), \(\beta_j\) é o efeito da coluna \(j\) e \(\tau_j\) o efeito da variedade \(j\) sobre a variável resposta \(Y\), \(\mu\) é a média de \(Y\) na ausência do efeito dos termos mencionados, \(\mu_{ijk}\) é a média para as observações de procedencia \(ijk\) e \(\sigma^2\) é a variância das observações ao redor desse valor médio.

##-----------------------------------------------------------------------------
## Estimação.

m0 <- lm(prod~linh+colu+vari, data=da)

##-----------------------------------------------------------------------------
## Diganóstico dos resíduos.
par(mfrow=c(2,2)); plot(m0, which=1:3); layout(1)

plot of chunk unnamed-chunk-4


##-----------------------------------------------------------------------------
## Quadro de análise de variância.

anova(m0)
## Analysis of Variance Table
## 
## Response: prod
##           Df Sum Sq Mean Sq F value  Pr(>F)    
## linh       4  55641   13910    4.89 0.01423 *  
## colu       4  30481    7620    2.68 0.08313 .  
## vari       4 137488   34372   12.09 0.00036 ***
## Residuals 12  34115    2843                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Comparações múltiplas

##-----------------------------------------------------------------------------
## Comparações múltiplas.

## Médias ajustadas (LSmeans).
p0 <- LSmeans(m0, effect="vari", level=0.95)

## Criando a tabela com as estimativas.
p0 <- cbind(p0$grid, as.data.frame(p0$coef))
p0 <- equallevels(p0, da)
p0
##   vari estimate    se df t.stat   p.value   lwr   upr
## 1    A    492.6 23.84 12  20.66 9.552e-11 440.6 544.6
## 2    B    440.8 23.84 12  18.49 3.489e-10 388.8 492.8
## 3    C    604.8 23.84 12  25.36 8.572e-12 552.8 656.8
## 4    D    413.4 23.84 12  17.34 7.344e-10 361.4 465.4
## 5    E    401.0 23.84 12  16.82 1.044e-09 349.0 453.0

## Comparações múltiplas, contrastes de Tukey.
## Método de correção de p-valor: single-step.
g0 <- summary(glht(m0, linfct=mcp(vari="Tukey")),
              test=adjusted(type="fdr"))
g0
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Multiple Comparisons of Means: Tukey Contrasts
## 
## 
## Fit: lm(formula = prod ~ linh + colu + vari, data = da)
## 
## Linear Hypotheses:
##            Estimate Std. Error t value Pr(>|t|)    
## B - A == 0    -51.8       33.7   -1.54  0.21493    
## C - A == 0    112.2       33.7    3.33  0.01507 *  
## D - A == 0    -79.2       33.7   -2.35  0.06134 .  
## E - A == 0    -91.6       33.7   -2.72  0.03747 *  
## C - B == 0    164.0       33.7    4.86  0.00130 ** 
## D - B == 0    -27.4       33.7   -0.81  0.48035    
## E - B == 0    -39.8       33.7   -1.18  0.32596    
## D - C == 0   -191.4       33.7   -5.68  0.00051 ***
## E - C == 0   -203.8       33.7   -6.04  0.00051 ***
## E - D == 0    -12.4       33.7   -0.37  0.71949    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- fdr method)

## Resumo compacto com letras.
l0 <- cld(g0, decreasing=TRUE)
l0
##    A    B    C    D    E 
##  "b" "bc"  "a" "bc"  "c"

## Formatando média seguida de letras.
p0$let <- sprintf("%.1f %s", p0$estimate, l0$mcletters$Letters)
p0$let
## [1] "492.6 b"  "440.8 bc" "604.8 a"  "413.4 bc" "401.0 c"

##-----------------------------------------------------------------------------
## Representação gráfica dos resultados.

xlab <- "Produção"
ylab <- "Variedades de cana-de-açúcar"
sub <- list(
    "Médias seguidas de mesma letra indicam diferença nula à 5%.",
    font=1, cex=0.8)

p0 <- transform(p0, vari=reorder(vari, estimate))
levels(p0$vari)
## [1] "E" "D" "B" "A" "C"
p0 <- p0[order(p0$vari),]

segplot(vari~lwr+upr, centers=estimate,
        data=p0, draw=FALSE,
        xlab=xlab, ylab=ylab, sub=sub, letras=p0$let,
        panel=function(x, y, z, centers, letras, ...){
            panel.segplot(x=x, y=y, z=z, centers=centers, ...)
            panel.text(y=as.numeric(z), x=centers,
                       label=letras, pos=3)
        })

plot of chunk unnamed-chunk-5