为什么 t 检验和 ANOVA 为两组比较给出不同的 p 值?

机器算法验证 r 假设检验 方差分析 t检验
2022-02-03 09:54:37

在关于方差分析的维基百科文章中,它说

以最简单的形式,方差分析提供了几个组的平均值是否相等的统计检验,因此将 t 检验推广到两个以上的组。

我对此的理解是,在进行两组比较时,ANOVA 与 t 检验相同。

然而,在我下面的简单示例中(在 R 中),方差分析和 t 检验给出了相似但略有不同的 p 值。谁能解释为什么?

x1=rnorm(100,mean=0,sd=1)
x2=rnorm(100,mean=0.5,sd=1)

y1=rnorm(100,mean=0,sd=10)
y2=rnorm(100,mean=0.5,sd=10)

t.test(x1,x2)$p.value  # 0.0002695961
t.test(y1,y2)$p.value  # 0.8190363

df1=as.data.frame(rbind(cbind(x=x1,type=1), cbind(x2,type=2)))
df2=as.data.frame(rbind(cbind(x=y1,type=1), cbind(y2,type=2)))

anova(lm(x~type,df1))$`Pr(>F)`[1]  # 0.0002695578
anova(lm(x~type,df2))$`Pr(>F)`[1]  # 0.8190279
1个回答

默认情况下var.equalt.test()equals的参数FALSElm()中,残差应该具有恒定的方差。因此,通过设置var.equal = TRUEt.test()您应该得到相同的结果。

var.equals指示是否将两个方差视为相等。如果为 TRUE,则使用合并方差来估计方差,否则使用 Welch(或 Satterthwaite)对自由度的近似。