R中lm和aov之间报告的p值的差异


12

什么解释了以下aovlm调用中p值的差异?差异仅是由于平方和的计算类型不同吗?

set.seed(10)
data=rnorm(12)
f1=rep(c(1,2),6)
f2=c(rep(1,6),rep(2,6))
summary(aov(data~f1*f2))
summary(lm(data~f1*f2))$coeff

Answers:


13

summary(aov)使用所谓的I型(顺序)平方和。summary(lm)使用所谓的III型平方和,不是连续的。有关详细信息,请参见gung的答案


请注意,您需要调用lm(data ~ factor(f1) * factor(2))aov()将公式的RHS自动转换为因子)。然后注意线性回归中一般统计量的分母(有关更多说明,请参见此答案):t

t=ψ^ψ0σ^c(XX)1c

β Ç ˚Fc(XX)1c对于每个测试的系数都不同,因为向量发生变化。相反,ANOVA检验中的分母始终是MSE。βcF


1
我认为这个答案的第一句话是错误的。差异似乎恰好是由于平方和的不同类型引起的:即类型I与类型II / III。类型I是顺序的,这是lm报告的类型,而类型II / III不是。您链接到@gung的答案中对此进行了相当详细的说明。
变形虫说莫妮卡(Reonica)Monica

@amoeba您建议如何纠正答案?
caracal

我编辑了第一段,看您是否满意编辑,可以随时进行更改。
变形虫说莫妮卡(Reonica)Monica

2
set.seed(10)
data=rnorm(12)
f1=rep(c(1,2),6)
f2=c(rep(1,6),rep(2,6))
summary(aov(data~f1*f2))
            Df Sum Sq Mean Sq F value Pr(>F)
f1           1  0.535  0.5347   0.597  0.462
f2           1  0.002  0.0018   0.002  0.966
f1:f2        1  0.121  0.1208   0.135  0.723
Residuals    8  7.169  0.8962               
summary(lm(data~f1*f2))$coeff
               Estimate Std. Error    t value  Pr(>|t|)
(Intercept)  0.05222024   2.732756  0.0191090 0.9852221
f1          -0.17992329   1.728346 -0.1041014 0.9196514
f2          -0.62637109   1.728346 -0.3624106 0.7264325
f1:f2        0.40139439   1.093102  0.3672066 0.7229887

这是两个不同的代码。从Lm模型中,您需要系数。而从aov模型中,您只是在列出变化的来源。尝试代码

anova(lm(data~f1*f2))
Analysis of Variance Table

Response: data
          Df Sum Sq Mean Sq F value Pr(>F)
f1         1 0.5347 0.53468  0.5966 0.4621
f2         1 0.0018 0.00177  0.0020 0.9657
f1:f2      1 0.1208 0.12084  0.1348 0.7230
Residuals  8 7.1692 0.89615   

这给出了导致相同结果的变异源列表。


2
这似乎没有回答这个问题,该问题询问为什么顶部面板的两个摘要中f1和的p值f2不同。它看起来像你只显示出summary(aov(...))anova(lm(...))R相似的输出。
whuber
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.