我想对同时具有 btw-Ss 和 inside-Ss 因素的 ANOVA 进行趋势分析。
顺便说一句,因素是“治疗”,内部因素是“试验”。
test.data <- data.frame(sid = rep(c("s1", "s2", "s3", "s4", "s5"), each = 4),
treatments = rep(c("a1", "a2"), each = 20),
trials = rep(c("b1", "b2", "b3", "b4"), 10),
responses = c(3,5,9,6,7,11,12,11,9,13,14,12,4,8,11,7,1,3,5,4,5,6,11,7,10,12,18,15,10,15,15,14,6,9,13,9,3,5,9,7))}
ANOVA 与教科书 (Keppel, 1973) 中的完全匹配:
aov.model.1 <- aov(responses ~ treatments*trials + Error(sid/trials), data=tab20.09)
我遇到的问题是趋势分析。我想看看“试验”的线性、二次和三次趋势。也很高兴看到“治疗 x 试验”的这些相同趋势。
我已将趋势分析的对比设置为:
contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))
contrasts(tab20.09$trials)
[,1] [,2] [,3]
b1 -3 1 -1
b2 -1 -1 3
b3 1 -1 -3
b4 3 1 1
用于线性、二次和三次趋势。
根据吉宝的说法,趋势的结果应该是:
TRIALS:
SS df MS F
(Trials) (175.70) 3
Linear 87.12 1 87.12 193.60
Quadratic 72.90 1 72.90 125.69
Cubic 15.68 1 15.68 9.50
TREATMENTS X TRIALS
SS df MS F
(Trtmt x Trials)
(3.40) 3
Linear 0.98 1 0.98 2.18
Quadratic 0.00 1 0.00 <1
Cubic 2.42 1 2.42 1.47
ERROR TERMS
(21.40) (24)
Linear 3.60 8 0.45
Quadratic 4.60 8 0.58
Cubic 13.20 8 1.65
我对他的答案充满信心,因为曾经我不得不使用 6 功能计算器以及纸和铅笔作为补充,自己推导出它们。但是,当我这样做时:
contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))
aov.model.2 <- aov(responses ~ treatments*trials + Error(sid/trials), data=tab20.09)
summary(lm(aov.model.2))
我得到的似乎没有意义。
summary(lm(aov.model.2))
Call:
lm(formula = aov.model.2)
Residuals:
ALL 40 residuals are 0: no residual degrees of freedom!
Coefficients: (4 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.750e+00 NA NA NA
treatmentsa2 3.500e+00 NA NA NA
trials1 6.500e-01 NA NA NA
trials2 -1.250e+00 NA NA NA
trials3 -4.500e-01 NA NA NA
sids10 -3.250e+00 NA NA NA
sids2 4.500e+00 NA NA NA
sids3 6.250e+00 NA NA NA
sids4 1.750e+00 NA NA NA
sids5 -2.500e+00 NA NA NA
sids6 -2.000e+00 NA NA NA
sids7 4.500e+00 NA NA NA
sids8 4.250e+00 NA NA NA
sids9 NA NA NA NA
treatmentsa2:trials1 2.120e-16 NA NA NA
treatmentsa2:trials2 -5.000e-01 NA NA NA
treatmentsa2:trials3 5.217e-16 NA NA NA
trials1:sids10 1.500e-01 NA NA NA
trials2:sids10 7.500e-01 NA NA NA
trials3:sids10 5.000e-02 NA NA NA
trials1:sids2 -1.041e-16 NA NA NA
trials2:sids2 -2.638e-16 NA NA NA
trials3:sids2 5.000e-01 NA NA NA
trials1:sids3 -1.500e-01 NA NA NA
trials2:sids3 -2.500e-01 NA NA NA
trials3:sids3 4.500e-01 NA NA NA
trials1:sids4 -5.000e-02 NA NA NA
trials2:sids4 -7.500e-01 NA NA NA
trials3:sids4 1.500e-01 NA NA NA
trials1:sids5 -1.000e-01 NA NA NA
trials2:sids5 5.000e-01 NA NA NA
trials3:sids5 3.000e-01 NA NA NA
trials1:sids6 -1.000e-01 NA NA NA
trials2:sids6 5.000e-01 NA NA NA
trials3:sids6 -2.000e-01 NA NA NA
trials1:sids7 4.000e-01 NA NA NA
trials2:sids7 5.000e-01 NA NA NA
trials3:sids7 -2.000e-01 NA NA NA
trials1:sids8 -5.000e-02 NA NA NA
trials2:sids8 2.500e-01 NA NA NA
trials3:sids8 6.500e-01 NA NA NA
trials1:sids9 NA NA NA NA
trials2:sids9 NA NA NA NA
trials3:sids9 NA NA NA NA
Residual standard error: NaN on 0 degrees of freedom
Multiple R-squared: 1, Adjusted R-squared: NaN
F-statistic: NaN on 39 and 0 DF, p-value: NA
任何想法我做错了什么?我怀疑“lm”和方差分析存在一些问题,但我不知道是什么,也不知道如何进行趋势分析。
###### MORE DETAILS 响应 ssdecontrol 的响应好吧,“试验”是一个因素,因为它编码了被操纵的四个层次的经验。同样,“sid”是“主题标识号”,绝对是“名义”而不是“序数”或“间隔”。在 ANOVAS 中,主题几乎总是被视为因素。
但是,我确实尝试了这两种更改,但它极大地扭曲了方差分析(自己尝试并比较)。同样,它似乎没有帮助。也许更直接相关,当我尝试创建和应用我的对比时,我被告知无法完成,因为我的数字需要成为因素:
contrasts(tab20.09$trials) <- cbind(c(-3, -1, 1, 3), c(1, -1, -1, 1), c(-1, 3, -3, 1))
Error in `contrasts<-`(`*tmp*`, value = c(-3, -1, 1, 3, 1, -1, -1, 1, :
contrasts apply only to factors
重新开始我似乎使用 contr.poly 取得了更多进展,如
contrasts(tab20.09$trials) <- contr.poly(levels(tab20.09$trials))
方差分析根本没有改变。所以这很好,当我这样做时:
lm.model <- lm(responses ~ trials, data = tab20.09)
summary.lm(lm.model)
我得到与吉宝基本相同的模式。
但是,由于我对交互的线性趋势(治疗 x 试验)感兴趣,而不仅仅是试验,我尝试了这个:
lm3 <- lm(responses ~ treatments*trials, data = tab20.09)
summary.lm(lm3)
“试炼”的ME消失了。. .
在 Keppel 的治疗中,他为每种对比(即线性、二次和三次)计算了单独的误差项,并将其用于“试验”的主效应以及“治疗 x 试验”的交互作用。
我当然可以再次手动计算所有这些东西。也许我什至可以为一般情况编写 R 函数;但是,似乎很难相信实验心理学的这种基本核心对比还没有找到 R 实现!??
任何帮助或建议将不胜感激。谢谢。W