Dlaczego test t i ANOVA dają różne wartości p dla porównania dwóch grup?

18

W artykule Wikipedii na temat ANOVA jest napisane

W najprostszej postaci ANOVA zapewnia statystyczny test, czy średnie kilku grup są równe, a zatem uogólnia test t na więcej niż dwie grupy.

Rozumiem to, że ANOVA jest taka sama jak test t, jeśli chodzi o porównanie dwóch grup.

Jednak w moim prostym przykładzie poniżej (w R) ANOVA i test t dają podobne, ale nieco różne wartości p. Czy ktoś może wyjaśnić, dlaczego?

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
źródło

Odpowiedzi:

28

Domyślnie argument var.equalz t.test()równymi FALSE. W lm(), Reszty mają mieć stałą wariancję. W ten sposób, poprzez ustawienie var.equal = TRUEw t.test(), należy uzyskać ten sam rezultat.

var.equalswskazuje, czy traktować te dwie wariancje jako równe. Jeśli PRAWDA, wówczas do oszacowania wariancji używa się puli wariancji, w przeciwnym razie stosuje się przybliżenie Welch (lub Satterthwaite) do stopni swobody.

ocram
źródło