盲目的にWelchの検定をやってしまっていました(参考:こちら)。
WelchのANOVAでは、各群の分散を用いてF値と自由度を求めるから、「分散=0」つまり測定値が全部同じデータには使えないんですね。式で表すと下のようになります。VwがF値。自由度はJ-1とΔです。式はTomarken and Serlin (1986) から採ってきました。分散が0の群はwj (分散の逆数) が無限になるので、計算できないわけですね。
式:WelchのANOVA(Jは群の数, njは各群でのサンプルサイズ)
一方、Welchのt検定では、検定量tは分散0でも計算できます。詳細はWikipediaへ。
試しにRで検定してみます。
score<-c(1,1,1,1,2,3,2,3)
group<-rep(c("A","B"),c(4,4))
oneway.test(score~group,var.equal=FALSE)
One-way analysis of means (not assuming equal variances)
data: score and group
F = NaN, num df = 2, denom df = NaN, p-value = NA
t.test(score~group,var.equal=FALSE)
Welch Two Sample t-test
data: score by group
t = -5.1962, df = 3, p-value = 0.01385
alternative hypothesis: true difference in means between group A and group B is not equal to 0
95 percent confidence interval:
-2.4186931 -0.5813069
sample estimates:
mean in group A mean in group B
1.0 2.5
上の例ではt検定との比較のため2群でANOVAしてますが、3群以上でも同様の結果になります。1つの群でも分散0があると検定できないはずです。