Experimento em delineamento interiramente casualizado com número diferente de repetições

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

Os dados são de um experimento feito para avaliar o comprimento de conídios para 6 isolados do fungo Colletrotrichum lindemuthianum. O Experimento foi organizado em delineamento inteiramente casualizado com no máximo 10 repetições por isolado. Houveram parcelas perdidas.

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

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

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

## Nomes das variáveis em minúsculo.
names(da) <- tolower(names(da))

## Mostra a estrutura do objeto.
str(da)
## 'data.frame':    60 obs. of  2 variables:
##  $ iso : Factor w/ 6 levels "i1","i2","i3",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ comp: num  12.5 13.3 13.5 15.3 15.3 ...

##-----------------------------------------------------------------------------
## Tabela com o valores observados.

do.call(cbind, split(da$comp, da$iso))
##          i1    i2    i3    i4   i5    i6
##  [1,] 12.47 15.08 15.30 15.75 13.2 13.50
##  [2,] 13.27 12.60 15.98 16.20 11.4 13.28
##  [3,] 13.50 14.40 13.50 15.75 12.4 12.15
##  [4,] 15.30 13.05 12.15 16.20 12.6 11.48
##  [5,] 15.30 13.72 16.42 16.42 12.6 13.28
##  [6,] 16.42 12.80 14.18 17.55 13.4 13.78
##  [7,] 14.18 13.05 16.42 14.40 11.2 12.60
##  [8,] 16.20 15.08 15.25 15.75 13.4 12.38
##  [9,] 11.70    NA 13.72 20.25 17.4 12.82
## [10,] 14.62    NA 15.52 15.75   NA    NA

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

xyplot(comp~iso, data=da, jitter.x=TRUE,
       xlab="Isolado", ylab="Comprimento do conídio")+
    layer(panel.abline(v=1:nlevels(da$iso), col="gray50"))

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_i, \sigma^2) \newline \mu_i &= \mu+\alpha_i \end{aligned} \]

em que \(\alpha_i\) é o efeito do isolado \(i\) sobre a variável resposta \(Y\), \(\mu\) é a média de \(Y\) na ausência do efeito dos isolados, \(\mu_i\) é a média para as observações em cada nível de isolado e \(\sigma^2\) é a variância das observações ao redor desse valor médio.

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

m0 <- lm(comp~iso, data=da)

## Avaliação dos pressupostos.
par(mfrow=c(2,2))
plot(m0); layout(1)

plot of chunk unnamed-chunk-4


## Estimativas e erros padrões.
summary(m0)
## 
## Call:
## lm(formula = comp ~ iso, data = da)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -2.694 -0.672 -0.159  0.681  4.333 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   14.296      0.446   32.06   <2e-16 ***
## isoi2         -0.574      0.669   -0.86   0.3953    
## isoi3          0.548      0.631    0.87   0.3890    
## isoi4          2.106      0.631    3.34   0.0016 ** 
## isoi5         -1.229      0.648   -1.90   0.0635 .  
## isoi6         -1.488      0.648   -2.30   0.0258 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.41 on 50 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.456,  Adjusted R-squared:  0.402 
## F-statistic: 8.39 on 5 and 50 DF,  p-value: 8.1e-06

## Quadro de análise de variância.
anova(m0)
## Analysis of Variance Table
## 
## Response: comp
##           Df Sum Sq Mean Sq F value  Pr(>F)    
## iso        5   83.4   16.68    8.39 8.1e-06 ***
## Residuals 50   99.4    1.99                    
## ---
## 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="iso", level=0.95)

## Criando a tabela com as estimativas.
p0 <- cbind(p0$grid, as.data.frame(p0$coef))
p0 <- equallevels(p0, da)
p0
##   iso estimate     se df t.stat   p.value   lwr   upr
## 1  i1    14.30 0.4459 50  32.06 5.249e-35 13.40 15.19
## 2  i2    13.72 0.4985 50  27.53 7.196e-32 12.72 14.72
## 3  i3    14.84 0.4459 50  33.29 8.691e-36 13.95 15.74
## 4  i4    16.40 0.4459 50  36.78 7.166e-38 15.51 17.30
## 5  i5    13.07 0.4700 50  27.80 4.515e-32 12.12 14.01
## 6  i6    12.81 0.4700 50  27.25 1.156e-31 11.86 13.75

## Comparações múltiplas, contrastes de Tukey.
## Método de correção de p-valor: single-step.
g0 <- summary(glht(m0, linfct=mcp(iso="Tukey")),
              test=adjusted(type="fdr"))
g0
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Multiple Comparisons of Means: Tukey Contrasts
## 
## 
## Fit: lm(formula = comp ~ iso, data = da)
## 
## Linear Hypotheses:
##              Estimate Std. Error t value Pr(>|t|)    
## i2 - i1 == 0   -0.574      0.669   -0.86   0.4235    
## i3 - i1 == 0    0.548      0.631    0.87   0.4235    
## i4 - i1 == 0    2.106      0.631    3.34   0.0060 ** 
## i5 - i1 == 0   -1.229      0.648   -1.90   0.1059    
## i6 - i1 == 0   -1.488      0.648   -2.30   0.0484 *  
## i3 - i2 == 0    1.121      0.669    1.68   0.1498    
## i4 - i2 == 0    2.680      0.669    4.01   0.0010 ** 
## i5 - i2 == 0   -0.656      0.685   -0.96   0.4235    
## i6 - i2 == 0   -0.915      0.685   -1.34   0.2562    
## i4 - i3 == 0    1.558      0.631    2.47   0.0363 *  
## i5 - i3 == 0   -1.777      0.648   -2.74   0.0211 *  
## i6 - i3 == 0   -2.036      0.648   -3.14   0.0084 ** 
## i5 - i4 == 0   -3.335      0.648   -5.15  3.3e-05 ***
## i6 - i4 == 0   -3.594      0.648   -5.55  1.6e-05 ***
## i6 - i5 == 0   -0.259      0.665   -0.39   0.6986    
## ---
## 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)

## Formatando média seguida de letras.
p0$let <- sprintf("%.2f %s", p0$estimate, l0$mcletters$Letters)
p0$let
## [1] "14.30 bc" "13.72 ac" "14.84 c"  "16.40 d"  "13.07 ab" "12.81 a"

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

xlab <- expression("Comprimento de conídios"~(mu*m))
ylab <- expression("Isolados de"~italic("Colletotrichum lindemuthianum"))
sub <- list(
    "Médias seguidas de mesma letra indicam diferença nula à 5%.",
    font=1, cex=0.8)

p0 <- transform(p0, iso=reorder(iso, estimate))
p0 <- p0[order(p0$iso),]

segplot(iso~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