如何设置和解释ANOVA与R中的汽车包装的对比?


15

假设我有一个想要进行ANOVA的简单2x2阶乘实验。像这样:

d   <- data.frame(a=factor(sample(c('a1','a2'), 100, rep=T)),
                  b=factor(sample(c('b1','b2'), 100, rep=T)));
d$y <- as.numeric(d$a)*rnorm(100, mean=.75, sd=1) +
       as.numeric(d$b)*rnorm(100, mean=1.2, sd=1) +
       as.numeric(d$a)*as.numeric(d$b)*rnorm(100, mean=.5, sd=1) +
       rnorm(100);
  1. 在没有重大交互作用的情况下,默认情况下(即contr.treatment)的输出Anova()是的a所有级别b和的b所有级别的总体重要性a,对吗?

  2. 我应该如何指定一个对比,让我来测试效果的意义ab在B1水平保持恒定,效果ab被关押在B2水平不变,并相互作用的a:b

Answers:


18

您的示例导致不相等的像元大小,这意味着不同的“平方和类型”很重要,并且对主要效果的测试并不像您陈述的那么简单。Anova()使用II型平方和。请参阅此问题以开始。

有多种测试对比的方法。请注意,SS类型无关紧要,因为我们最终要在相关的一因素设计中进行测试。我建议使用以下步骤:

# turn your 2x2 design into the corresponding 4x1 design using interaction()
> d$ab <- interaction(d$a, d$b)       # creates new factor coding the 2*2 conditions
> levels(d$ab)                        # this is the order of the 4 conditions
[1] "a1.b1" "a2.b1" "a1.b2" "a2.b2"

> aovRes <- aov(y ~ ab, data=d)       # oneway ANOVA using aov() with new factor

# specify the contrasts you want to test as a matrix (see above for order of cells)
> cntrMat <- rbind("contr 01"=c(1, -1,  0,  0),  # coefficients for testing a within b1
+                  "contr 02"=c(0,  0,  1, -1),  # coefficients for testing a within b2
+                  "contr 03"=c(1, -1, -1,  1))  # coefficients for interaction

# test contrasts without adjusting alpha, two-sided hypotheses
> library(multcomp)                   # for glht()
> summary(glht(aovRes, linfct=mcp(ab=cntrMat), alternative="two.sided"),
+         test=adjusted("none"))
Simultaneous Tests for General Linear Hypotheses
Multiple Comparisons of Means: User-defined Contrasts
Fit: aov(formula = y ~ ab, data = d)

Linear Hypotheses:
              Estimate Std. Error t value Pr(>|t|)
contr 01 == 0  -0.7704     0.7875  -0.978    0.330
contr 02 == 0  -1.0463     0.9067  -1.154    0.251
contr 03 == 0   0.2759     1.2009   0.230    0.819
(Adjusted p values reported -- none method)    

现在,手动检查第一对比的结果。

> P       <- 2                             # number of levels factor a
> Q       <- 2                             # number of levels factor b
> Njk     <- table(d$ab)                   # cell sizes
> Mjk     <- tapply(d$y, d$ab, mean)       # cell means
> dfSSE   <- sum(Njk) - P*Q                # degrees of freedom error SS
> SSE     <- sum((d$y - ave(d$y, d$ab, FUN=mean))^2)    # error SS
> MSE     <- SSE / dfSSE                   # mean error SS
> (psiHat <- sum(cntrMat[1, ] * Mjk))      # contrast estimate
[1] -0.7703638

> lenSq <- sum(cntrMat[1, ]^2 / Njk)       # squared length of contrast
> (SE   <- sqrt(lenSq*MSE))                # standard error
[1] 0.7874602

> (tStat <- psiHat / SE)                   # t-statistic
[1] -0.9782893

> (pVal <- 2 * (1-pt(abs(tStat), dfSSE)))  # p-value
[1] 0.3303902

3
谢谢!!!您刚刚回答了两个学期的研究生水平统计尚未获得的问题。我什至以前考虑过使用单向方差分析,但找不到任何证实这是合法方法的确认。
f1r3br4nd

@ f1r3br4nd这是合理的,因为在关联的单向和原始双向设计中,错误MS相等。
caracal

如果可以的话,我要问的最后一个后续问题是:双向交互如何概括为大量变量的交互?如果我有一个A B C项,我会根据A:B =(A | B = 1-A | B = 2),C:B =(C | B = 1-C | B = 2 ),A:B:C = A:B-C:B,依此类推?
f1r3br4nd 2011年

2
@ f1r3br4nd在2x2x2设计中,只有一个独特的A B C交互作用对比(例如在2x2情况下只有一个)。A B C交互作用对比中的系数必须在“设计多维数据集”中的行(A),列(B)和平面(C)上求和为零。如果相关联的单向设计中的单元格顺序为a1.b1.c1, a2.b1.c1, a1.b2.c1, a2.b2.c1, a1.b1.c2, a2.b1.c2, a1.b2.c2, a2.b2.c2,则系数为c(1, -1, -1, 1, -1, 1, 1, -1)。如果您的因素中有两个以上的组,则遵循“零和”规则的所有对比都是三向交互对比。
caracal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.