CE 063 - Planejamento e análise de experimentos irregulares

Universidade Federal do Paraná
Prof. Dr. Walmes M. Zeviani
Curso de Estatística - 2015/1
Lab. de Estatística e Geoinformação - LEG
Departamento de Estatística - UFPR

Revisão de modelos lineares

Análise de um experimento em DIC

##-----------------------------------------------------------------------------
## Pacotes.

pkg <- c("lattice", "latticeExtra", "plyr", "reshape",
         "doBy", "multcomp")
sapply(pkg, require, character.only=TRUE)
##-----------------------------------------------------------------------------
## Dados de experimento em DIC. Fator ração aplicada à suínos com 4
## níveis. A resposta é o ganho de peso ao final do experimento.

da <-
    read.table("http://www.leg.ufpr.br/~walmes/data/pimentel_racoes.txt",
               header=TRUE, sep="\t")
str(da)
## 'data.frame':    20 obs. of  2 variables:
##  $ racoes   : Factor w/ 4 levels "A","B","C","D": 1 1 1 1 1 2 2 2 2 2 ...
##  $ ganhopeso: int  35 19 31 15 30 40 35 46 41 33 ...
xyplot(ganhopeso~racoes, data=da, jitter.x=TRUE)

plot of chunk unnamed-chunk-4

## dotplot(ganhopeso~racoes, data=da, jitter.x=TRUE)
## bwplot(ganhopeso~racoes, data=da, pch="|")

##-----------------------------------------------------------------------------

X <- model.matrix(~racoes, data=da)
## X <- model.matrix(~0+racoes, data=da)
## X <- model.matrix(~-1+racoes, data=da)
## X <- model.matrix(~racoes, data=da, contrasts=list(racoes=contr.SAS))
## X <- model.matrix(~racoes, data=da, contrasts=list(racoes=contr.sum))
## X <- model.matrix(~racoes, data=da, contrasts=list(racoes=contr.helmert))

X
##    (Intercept) racoesB racoesC racoesD
## 1            1       0       0       0
## 2            1       0       0       0
## 3            1       0       0       0
## 4            1       0       0       0
## 5            1       0       0       0
## 6            1       1       0       0
## 7            1       1       0       0
## 8            1       1       0       0
## 9            1       1       0       0
## 10           1       1       0       0
## 11           1       0       1       0
## 12           1       0       1       0
## 13           1       0       1       0
## 14           1       0       1       0
## 15           1       0       1       0
## 16           1       0       0       1
## 17           1       0       0       1
## 18           1       0       0       1
## 19           1       0       0       1
## 20           1       0       0       1
## attr(,"assign")
## [1] 0 1 1 1
## attr(,"contrasts")
## attr(,"contrasts")$racoes
## [1] "contr.treatment"
## beta = (X'X)^{-1} X'y

XlX <- crossprod(X)
XlX
##             (Intercept) racoesB racoesC racoesD
## (Intercept)          20       5       5       5
## racoesB               5       5       0       0
## racoesC               5       0       5       0
## racoesD               5       0       0       5
Xly <- crossprod(X, da$ganhopeso)
Xly
##             [,1]
## (Intercept)  595
## racoesB      195
## racoesC      160
## racoesD      110
beta <- solve(XlX, Xly)
beta
##             [,1]
## (Intercept)   26
## racoesB       13
## racoesC        6
## racoesD       -4
##-----------------------------------------------------------------------------
## Matriz de contrastes aplicados e as estimativas de médias, \mu_i =
## \mu+\tau_i.

Z <- cbind(1, contrasts(C(da$racoes, contr="contr.treatment"))); Z
##     B C D
## A 1 0 0 0
## B 1 1 0 0
## C 1 0 1 0
## D 1 0 0 1
Z%*%beta
##   [,1]
## A   26
## B   39
## C   32
## D   22
##-----------------------------------------------------------------------------
## Obtendo o quadro de anova matricialmente.

X <- model.matrix(~racoes, data=da)

## Modelo: \mu+\alpha_i

Pmu <- X[,1]%*%solve(crossprod(X[,1]))%*%t(X[,1])
Pmualpha <- X%*%solve(crossprod(X))%*%t(X)
In <- diag(length(da$racoes))
y <- da$ganhopeso

## Somas de quadrados de ração e resídual.
t(y)%*%(Pmualpha-Pmu)%*%y
##       [,1]
## [1,] 823.8
t(y)%*%(In-Pmualpha)%*%y
##      [,1]
## [1,] 1100
## Graus de liberdade de ração e resídual.
sum(diag(Pmualpha-Pmu))
## [1] 3
sum(diag(In-Pmualpha))
## [1] 16
##-----------------------------------------------------------------------------
## Usando a lm().

m0 <- lm(ganhopeso~racoes, data=da)
coef(m0)
## (Intercept)     racoesB     racoesC     racoesD 
##          26          13           6          -4
anova(m0)
## Analysis of Variance Table
## 
## Response: ganhopeso
##           Df Sum Sq Mean Sq F value Pr(>F)  
## racoes     3    824   274.6    3.99  0.027 *
## Residuals 16   1100    68.8                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model.matrix(m0)
##    (Intercept) racoesB racoesC racoesD
## 1            1       0       0       0
## 2            1       0       0       0
## 3            1       0       0       0
## 4            1       0       0       0
## 5            1       0       0       0
## 6            1       1       0       0
## 7            1       1       0       0
## 8            1       1       0       0
## 9            1       1       0       0
## 10           1       1       0       0
## 11           1       0       1       0
## 12           1       0       1       0
## 13           1       0       1       0
## 14           1       0       1       0
## 15           1       0       1       0
## 16           1       0       0       1
## 17           1       0       0       1
## 18           1       0       0       1
## 19           1       0       0       1
## 20           1       0       0       1
## attr(,"assign")
## [1] 0 1 1 1
## attr(,"contrasts")
## attr(,"contrasts")$racoes
## [1] "contr.treatment"
##-----------------------------------------------------------------------------
## As médias ajustadas \mu_i = \mu_\alpha_i

LSmeans(m0, effect="racoes")
##   estimate    se df t.stat   p.value   lwr   upr racoes
## 1       26 3.708 16  7.012 2.935e-06 18.14 33.86      A
## 2       39 3.708 16 10.518 1.355e-08 31.14 46.86      B
## 3       32 3.708 16  8.630 2.047e-07 24.14 39.86      C
## 4       22 3.708 16  5.933 2.103e-05 14.14 29.86      D
LSmatrix(m0, effect="racoes")
##      (Intercept) racoesB racoesC racoesD
## [1,]           1       0       0       0
## [2,]           1       1       0       0
## [3,]           1       0       1       0
## [4,]           1       0       0       1
## Matriz de definição dos contrastes ou restrições.
C <- cbind(1, contrasts(da$racoes))

## Matriz de variância e covariância das estimativas: \sigma^2
## (X'X)^{-1}.
V <- vcov(m0)

## Erro padrão das estimativas dos parâmetros.
sqrt(diag(V))
## (Intercept)     racoesB     racoesC     racoesD 
##       3.708       5.244       5.244       5.244
## Erro padrão das estimativas das médias.
sqrt(diag(C%*%V%*%t(C)))
##     A     B     C     D 
## 3.708 3.708 3.708 3.708
##-----------------------------------------------------------------------------
## Estimativa de contrastes.

## \mu_2 - \mu_3.
K <- matrix(c(0,1,-1,0), ncol=1)
t(K)%*%coef(m0)
##      [,1]
## [1,]    7
## Erro padrão do contraste.
sqrt(t(K)%*%V%*%K)
##       [,1]
## [1,] 5.244
##-----------------------------------------------------------------------------
## Usando a glht() para avaliar hipóteses lineares.

summary(glht(m0, linfct=t(K)))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Fit: lm(formula = ganhopeso ~ racoes, data = da)
## 
## Linear Hypotheses:
##        Estimate Std. Error t value Pr(>|t|)
## 1 == 0     7.00       5.24    1.33      0.2
## (Adjusted p values reported -- single-step method)
confint(summary(glht(m0, linfct=C)))
## 
##   Simultaneous Confidence Intervals
## 
## Fit: lm(formula = ganhopeso ~ racoes, data = da)
## 
## Quantile = 2.783
## 95% family-wise confidence level
##  
## 
## Linear Hypotheses:
##        Estimate lwr    upr   
## A == 0 26.000   15.682 36.318
## B == 0 39.000   28.682 49.318
## C == 0 32.000   21.682 42.318
## D == 0 22.000   11.682 32.318
## Teste de um conjunto de hipóteses simples.
## \mu_1 - \mu_2, \mu_2 - \mu_3, \mu_3 - \mu_4.

K <- matrix(c(0,-1,0,0,
              0,1,-1,0,
              0,0,1,-1), ncol=3)

## Aplica uma correção aos p-valores devido a multiplicidade.
summary(glht(m0, linfct=t(K)))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Fit: lm(formula = ganhopeso ~ racoes, data = da)
## 
## Linear Hypotheses:
##        Estimate Std. Error t value Pr(>|t|)  
## 1 == 0   -13.00       5.24   -2.48    0.064 .
## 2 == 0     7.00       5.24    1.33    0.434  
## 3 == 0    10.00       5.24    1.91    0.182  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- single-step method)
## Sem correção, ou seja, p-valor vindo da distribuição t.
summary(glht(m0, linfct=t(K)), test=adjusted(type="none"))
## 
##   Simultaneous Tests for General Linear Hypotheses
## 
## Fit: lm(formula = ganhopeso ~ racoes, data = da)
## 
## Linear Hypotheses:
##        Estimate Std. Error t value Pr(>|t|)  
## 1 == 0   -13.00       5.24   -2.48    0.025 *
## 2 == 0     7.00       5.24    1.33    0.201  
## 3 == 0    10.00       5.24    1.91    0.075 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## (Adjusted p values reported -- none method)
## Teste simultâneo de hipótese.
summary(glht(m0, linfct=t(K)), test=Ftest())
## 
##   General Linear Hypotheses
## 
## Linear Hypotheses:
##        Estimate
## 1 == 0      -13
## 2 == 0        7
## 3 == 0       10
## 
## Global Test:
##      F DF1 DF2 Pr(>F)
## 1 3.99   3  16 0.0267
## Mesmo valor do teste F da anova. Sabe dizer por que?

Análise de um experimento em DBC

##-----------------------------------------------------------------------------
## Experimento feito com a cultura da batatinha, avaliando
## cultivares/variedades. A resposta é a produtividade. Foi instalado em
## DBC.

da <-
    read.table("http://www.leg.ufpr.br/~walmes/data/pimentel_batatinha.txt",
               header=TRUE, sep="\t")
str(da)
## 'data.frame':    32 obs. of  3 variables:
##  $ bloco    : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 1 1 1 1 2 2 ...
##  $ variedade: Factor w/ 8 levels "B 116-51","B 1-52",..: 7 6 8 5 3 2 1 4 7 6 ...
##  $ producao : num  9.2 21.1 22.6 15.4 12.7 20 23.1 18 13.4 27 ...
## xyplot(producao~variedade, data=da, jitter.x=TRUE)
xyplot(producao~variedade, data=da, jitter.x=TRUE, groups=bloco)

plot of chunk unnamed-chunk-5

##-----------------------------------------------------------------------------
## Matriz do modelo.

X <- model.matrix(~bloco+variedade, data=da)
head(X)
##   (Intercept) blocoII blocoIII blocoIV variedadeB 1-52 variedadeB 25-50 E
## 1           1       0        0       0               0                  0
## 2           1       0        0       0               0                  0
## 3           1       0        0       0               0                  0
## 4           1       0        0       0               0                  0
## 5           1       0        0       0               0                  1
## 6           1       0        0       0               1                  0
##   variedadeB 72-53 A variedadeBuena Vista variedadeHuinkul variedadeKennebec
## 1                  0                    0                0                 1
## 2                  0                    0                1                 0
## 3                  0                    0                0                 0
## 4                  0                    1                0                 0
## 5                  0                    0                0                 0
## 6                  0                    0                0                 0
##   variedadeS. Rafalela
## 1                    0
## 2                    0
## 3                    1
## 4                    0
## 5                    0
## 6                    0
## beta = (X'X)^{-1} X'y

XlX <- crossprod(X)
XlX
##                      (Intercept) blocoII blocoIII blocoIV variedadeB 1-52
## (Intercept)                   32       8        8       8               4
## blocoII                        8       8        0       0               1
## blocoIII                       8       0        8       0               1
## blocoIV                        8       0        0       8               1
## variedadeB 1-52                4       1        1       1               4
## variedadeB 25-50 E             4       1        1       1               0
## variedadeB 72-53 A             4       1        1       1               0
## variedadeBuena Vista           4       1        1       1               0
## variedadeHuinkul               4       1        1       1               0
## variedadeKennebec              4       1        1       1               0
## variedadeS. Rafalela           4       1        1       1               0
##                      variedadeB 25-50 E variedadeB 72-53 A variedadeBuena Vista
## (Intercept)                           4                  4                    4
## blocoII                               1                  1                    1
## blocoIII                              1                  1                    1
## blocoIV                               1                  1                    1
## variedadeB 1-52                       0                  0                    0
## variedadeB 25-50 E                    4                  0                    0
## variedadeB 72-53 A                    0                  4                    0
## variedadeBuena Vista                  0                  0                    4
## variedadeHuinkul                      0                  0                    0
## variedadeKennebec                     0                  0                    0
## variedadeS. Rafalela                  0                  0                    0
##                      variedadeHuinkul variedadeKennebec variedadeS. Rafalela
## (Intercept)                         4                 4                    4
## blocoII                             1                 1                    1
## blocoIII                            1                 1                    1
## blocoIV                             1                 1                    1
## variedadeB 1-52                     0                 0                    0
## variedadeB 25-50 E                  0                 0                    0
## variedadeB 72-53 A                  0                 0                    0
## variedadeBuena Vista                0                 0                    0
## variedadeHuinkul                    4                 0                    0
## variedadeKennebec                   0                 4                    0
## variedadeS. Rafalela                0                 0                    4
Xly <- crossprod(X, da$producao)
Xly
##                       [,1]
## (Intercept)          630.8
## blocoII              170.1
## blocoIII             160.3
## blocoIV              158.3
## variedadeB 1-52       89.1
## variedadeB 25-50 E    66.0
## variedadeB 72-53 A    91.2
## variedadeBuena Vista  49.7
## variedadeHuinkul     100.2
## variedadeKennebec     42.8
## variedadeS. Rafalela 101.8
beta <- solve(XlX, Xly)

##-----------------------------------------------------------------------------
## Quadro de anova.

## Modelo: \mu+\alpha_i+\tau_j.
## \mu: termo sempre presente, modelo nulo (termo 0).
## \alpha's: efeito de bloco (termo 1).
## \tau's: efeito de variedade (termo 2).

a <- attr(X, "assign")

Pmu <- X[,a==0]%*%solve(crossprod(X[,a==0]))%*%t(X[,a==0])
Pmualpha <- X[,a<=1]%*%solve(crossprod(X[,a<=1]))%*%t(X[,a<=1])
Pmualphatau <- X[,a<=2]%*%solve(crossprod(X[,a<=2]))%*%t(X[,a<=2])

In <- diag(length(da$producao))
y <- da$producao

## Somas de quadrados (sequênciais, porém ortogonais por desenho).
t(y)%*%(Pmualphatau-Pmualpha)%*%y ## SQ variedade.
##       [,1]
## [1,] 919.7
t(y)%*%(Pmualpha-Pmu)%*%y         ## SQ blocos.
##       [,1]
## [1,] 50.53
t(y)%*%(In-Pmualphatau)%*%y       ## SQ resíduos.
##       [,1]
## [1,] 179.5
## É possível fazer uma determinada decompisição matricial de
## Pmualphatau de forma que não seja necessários suas intermediárias.

## Graus de liberdade.
sum(diag(Pmualphatau-Pmualpha)) ## GL variedade.
## [1] 7
sum(diag(Pmualpha-Pmu))         ## GL blocos.
## [1] 3
sum(diag(In-Pmualphatau))       ## GL resíduos.
## [1] 21
##-----------------------------------------------------------------------------
## Usando a função lm().
    
m0 <- lm(producao~bloco+variedade, data=da)
coef(m0)
##          (Intercept)              blocoII             blocoIII              blocoIV 
##               20.550                3.500                2.275                2.025 
##      variedadeB 1-52   variedadeB 25-50 E   variedadeB 72-53 A variedadeBuena Vista 
##               -0.225               -6.000                0.300              -10.075 
##     variedadeHuinkul    variedadeKennebec variedadeS. Rafalela 
##                2.550              -11.800                2.950
anova(m0)
## Analysis of Variance Table
## 
## Response: producao
##           Df Sum Sq Mean Sq F value  Pr(>F)    
## bloco      3     51    16.8    1.97    0.15    
## variedade  7    920   131.4   15.37 5.7e-07 ***
## Residuals 21    179     8.5                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Médias ajustadas das variedades.
LSmeans(m0, effect="variedade")
##   estimate    se df t.stat   p.value    lwr   upr   variedade
## 1    22.50 1.462 21 15.393 6.524e-13 19.460 25.54    B 116-51
## 2    22.27 1.462 21 15.239 7.925e-13 19.235 25.31      B 1-52
## 3    16.50 1.462 21 11.288 2.229e-10 13.460 19.54   B 25-50 E
## 4    22.80 1.462 21 15.599 5.047e-13 19.760 25.84   B 72-53 A
## 5    12.42 1.462 21  8.501 3.071e-08  9.385 15.46 Buena Vista
## 6    25.05 1.462 21 17.138 8.028e-14 22.010 28.09     Huinkul
## 7    10.70 1.462 21  7.320 3.316e-07  7.660 13.74    Kennebec
## 8    25.45 1.462 21 17.412 5.878e-14 22.410 28.49 S. Rafalela
t(LSmatrix(m0, effect="variedade"))
##                      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## (Intercept)          1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
## blocoII              0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
## blocoIII             0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
## blocoIV              0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25
## variedadeB 1-52      0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00
## variedadeB 25-50 E   0.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00
## variedadeB 72-53 A   0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
## variedadeBuena Vista 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00
## variedadeHuinkul     0.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00
## variedadeKennebec    0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.00
## variedadeS. Rafalela 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00