Opravený model z minulého úkolu bude vypadat takto:
fit <- lm(y1 ~ fusion + time + position + as.factor(horse), data = df1)
alias(fit_5.30, complete = TRUE)
## Model :
## y1 ~ fusion + time + position + as.factor(horse)
##
## Complete :
## (Intercept) fusion time position as.factor(horse)2
## as.factor(horse)4 -1 1 0 0 0
## as.factor(horse)3
## as.factor(horse)4 -1
alias(fit_5.31, complete = TRUE)
## Model :
## y2 ~ fusion + time + position + as.factor(horse)
Vidíme, že když máme data získaná pomocí designu popsaném v Tabulce 5.30, je efekt ošetření lineárně závislý s efektem koně. Při designu z Tabulky 5.31 už tento problém nenastává.
V tomto úkolu se zabýváme příkladem 5.1 z knihy Milliken, Johnson (1989) Analysis of Messy Data II: Nonreplicated Experiments.
Příprava dat:
sausage <- rep(1:12, times = 4)
judge <- c(rep("A", 12),rep("B", 12),rep("C", 12),rep("D", 12))
salt <- c(2.4,2.3,2.6,6.0,4.6,3.8,4.6,3.6,0.5,2.2,4.3,9.0,
2.5,2.0,2.5,5.5,4.1,2.3,4.5,3.1,0.3,1.8,4.5,7.0,
3.0,3.0,3.0,6.0,3.9,4.2,5.0,3.9,1.1,2.5,4.7,7.9,
2.7,2.8,2.6,5.8,4.9,4.4,4.9,4.0,1.3,2.3,4.6,8.5)
df <- as.data.frame(cbind(salt,sausage,judge))
df$sausage <- as.factor(df$sausage)
df$judge <- as.factor(df$judge)
df$salt <- as.numeric(df$salt)
Přepočítání Tabulky 5.2 pomocí R.
fit1 <- lm(salt ~ sausage*judge, data=df)
anova(fit1)
## Warning in anova.lm(fit1): ANOVA F-tests on an essentially perfect fit are
## unreliable
## Analysis of Variance Table
##
## Response: salt
## Df Sum Sq Mean Sq F value Pr(>F)
## sausage 11 160.637 14.6034
## judge 3 3.938 1.3125
## sausage:judge 33 4.458 0.1351
## Residuals 0 0.000
Nyní zkusíme odhadnout parametry modelu 5.2.1.
fit2 <- lme(salt~judge*sausage,random=~1|sausage,data=df)
## Error in MEEM(object, conLin, control$niterEM): Singularity in backsolve at level 0, block 1
fit3 <- lmer(salt~judge*sausage + (1|sausage), data = df)
## Error in is.nloptr(ret): objective in x0 returns NA
Ani jednou z funkcí lme a lmer to ovšem nelze.
Teď provedeme test významnosti interakce.
fit4 <- lm(salt ~ sausage + judge, data = df)
Z <- matrix(residuals(fit4), nrow = 12, ncol = 4)
eigenvalues <- eigen( Z %*% t(Z))$values
U = eigenvalues[1]/sum(eigenvalues)
U
## [1] 0.6041585
Hodnota testové statistiky vychází 0.604 a je nesignifikantní na hladině 0.1.