R:解释ANOVA和TukeyHSD分析的结果

时间:2013-05-08 16:21:20

标签: r anova

我在包含第1列(区域)中的解剖区域和第2列(S1)中的基因表达值的数据框上运行ANOVA和TukeyHSD。我通常会期望aov摘要中的p值表示为 Pr(> F),所以我对我获得的结果有点模糊。另外,有人可以帮助我了解Tukey多重比较均值结果吗?我不完全清楚 diff p adj 结果表明的是什么。这里显示的结果是我实际使用的精简版,仅供参考。

> aov.result = aov(S1 ~ region, data=raw.data)
> summary(aov.result)
             Df  Sum Sq Mean Sq F value    Pr(>F)    
region       60  61.713 1.02856  5.9246 < 2.2e-16 ***
Residuals   655 113.712 0.17361                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
> TukeyHSD(aov.result)
Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = S1 ~ region, data = raw.data)

$region
                     diff           lwr          upr     p adj
AB-AA        0.4118651583 -2.864195e-01  1.110149848 0.9847745
AHA-AA      -0.0468785098 -7.608569e-01  0.667099930 1.0000000
APir-AA      0.4419135565 -2.563711e-01  1.140198246 0.9502924
B-AA         0.5379787168 -1.603060e-01  1.236263406 0.5846356

1 个答案:

答案 0 :(得分:2)

让我们从一些可重现的数据,一个因子和一个连续变量开始:

set.seed(1)
df1 <- data.frame(
    f1=as.factor(rep(seq(1:3),4)),
    c1=abs(rnorm(12)))
s1 <- stats::aov(df1$c1 ~ df1$f1)
summary(s1)

这会产生类似于你的输出。

您的数据的P值显示正确,可以通过例如确认:

1-stats::pf(q=5.92, df1=60, df2=655)
[1] 0

现在,查看来自:

的输出
s2 <- stats::TukeyHSD.aov(s1)

$`df1$f1`
           diff       lwr       upr     p adj
2-1 -0.06282377 -1.038236 0.9125887 0.9823655
3-1 -0.09820762 -1.073620 0.8772048 0.9575774
3-2 -0.03538385 -1.010796 0.9400286 0.9943641

第一列是平均值的差异。在我的例子中:

m1 <- mean( df1$c1[df1$f1==1] )
m2 <- mean( df1$c1[df1$f1==2] )

现在m2-m1大约等于s2$"df1$f1"[1,1],此处为-0.068..

这种“均值差异”具有根据studentized range (q) distribution计算的置信区间。机制可以在stats::TukeyHSD.aov()的源代码中找到。另见?ptukey。另请注意,在某些情况下,“校正多重比较”的理由是controversial。这类问题可能更适合CrossValidated