Почему t-тест и ANOVA дают разные значения p для сравнения двух групп?

18

В статье в Википедии об ANOVA говорится

В своей простейшей форме ANOVA предоставляет статистическую проверку того, равны ли средние значения нескольких групп, и поэтому обобщает t-критерий для более чем двух групп.

Насколько я понимаю, ANOVA - это то же самое, что и t-критерий, когда речь идет о сравнении двух групп.

Тем не менее, в моем простом примере ниже (в R) ANOVA и 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
Xianjun
источник

Ответы:

28

По умолчанию аргумента var.equalо t.test()равных FALSE. В lm(), остатки должны иметь постоянную дисперсию. Таким образом, установив var.equal = TRUEв t.test(), вы должны получить тот же результат.

var.equalsуказывает, следует ли рассматривать две дисперсии как равные. Если TRUE, то объединенная дисперсия используется для оценки дисперсии, в противном случае используется приближение Уэлча (или Satterthwaite) к степеням свободы.

ocram
источник