人間だったら考えて

考えて考えて人間だったら考えて

対応のないt検定における正規性の仮定とサンプルサイズ

この記事は何?

2つの母平均の差の検定を行うとき、まずは対応のないt検定(unpaired t-test)を考えると思います。
対応のないt検定には以下の仮定が存在します。

  1. 母集団が互いに独立に正規分布に従う(独立性の仮定・正規性の仮定)
  2. 母分散が等しい(等分散性の仮定)

独立性の仮定が成り立たない場合はお手上げですが、実務では独立性の仮定が成り立たないケースはそこまで発生しないのではないでしょうか。
等分散性の仮定が成り立たない場合はWelchのt検定(Welch's t-test)を使います。

この記事では、正規性の仮定が成り立たない場合について考えてみます。
いくつかの記事によると、「unpaired t-testは正規性の仮定については鈍感である」と主張されています。

実際にはX正規分布でなくても,nが大きければ中心極限定理により\bar{X}正規分布に近づくので,この検定は母集団が正規分布かどうかには鈍感です。データの分布が正規分布かどうかの検定をしてから t検定を行う必要はまったくありません。

まず,母集団の正規性,あるいはデータの正規性については,t検定は頑健だといわれています。それは,サンプルサイズが十分大きければ,母集団が正規分布でなくとも,推定する差の分布は正規分布に近づくからです(中心極限定理)。

In fact, as the sample size in the two groups gets large, the t-test is valid (i.e. the type 1 error rate is controlled at 5%) even when X doesn't follow a normal distribution.

これらの主張がどの程度妥当なのか、false positive rateを求めて確認してみます。

false positive rateの確認

unpaired t-testにおける2つの母集団をそれぞれA, Bとします。

母平均が共に等しいケースでは、有意水準\alpha=0.05とすると、「本当は母平均に差はないのに、有意に差がある(false positive)」と言ってしまう割合が5%になるはずです。


まずは、正規性の仮定が成り立っているケースで、false positive rateを確かめてみます。

母集団が互いに独立に\mathcal{N}(1.0, 1.0)に従うとし、標本をそれぞれ
X_A=X_A^1, X_A^2, \cdots, X_A^N
X_B=X_B^1, X_B^2, \cdots, X_B^N
とします。今回はN=100としました。

有意水準\alpha=0.05として、得られた標本を用いてunpaired t-testを実施し、有意に差があるかどうかを検定します。

この手続きをM=10,000回行い、M回の検定の中で何回有意差があったのか(false positive rate)を求めてみます。

以下Pythonコードです(scipyのstats.ttest_indを用いています)

実行してみたところ、M=10,000回の検定の中で543回有意差がありました。
false positive rate=0.0543となり、おおよそ有意水準\alpha=0.05と一致しています!

参考に、p値の累積分布を描きました。

f:id:sz_dr:20181111171442p:plain


次に、正規性の仮定が成り立っていないケースで確かめてみます。

今度は、母集団が互いに独立にポアソン分布\mathrm{Poi}(\lambda=2)に従うとします。
\lambdaが大きいと正規分布で近似できてしまって面白くないので、2という小さめの値にしました。

\mathrm{Poi}(\lambda=2)の形を描いておきます。

f:id:sz_dr:20181111170151p:plain

上と同じように、N=100とし、M=10,000回検定を行ったところ、519回有意差がありました。
false positive rate=0.0519となり、おおよそ有意水準\alpha=0.05と一致しています!


先ほどはN=100と、サンプルサイズが大きめなケースを考えました。
今度は、サンプルサイズを小さくN=10として、同様の実験を行ってみます。

結果は、false positive rate=0.0497となりました、意外と合ってますね。。。


もうすこしひどい分布として、ガンマ分布を考えます。

母集団が互いに独立にガンマ分布\mathrm{Gam}(k=1, \theta=2)に従うとします。ヒストグラムを描いておきます。

f:id:sz_dr:20181111173603p:plain

N=100としたときはfalse positive rate=0.0504, N=10としたときはfalse positive rate=0.0419という結果が得られました。

サンプルサイズが小さいとき、false positive rateは有意水準よりも比較的小さくなることが分かりました。

false positive rateが小さくなる分には困らない(より厳しい検定をしている)と思います。

まとめ

以上の実験結果をまとめます。

母集団の分布 サンプルサイズ false positive rate
\mathcal{N}(1.0, 1.0) 100 5.43%
\mathrm{Poi}(2) 100 5.19%
\mathrm{Poi}(2) 10 4.97%
\mathrm{Gam}(1, 2) 100 5.04%
\mathrm{Gam}(1,2) 10 4.19%

上の実験の範囲ですが、「unpaired t-testは正規性の仮定は成り立たなくても、false positive rateについては心配しなくても大丈夫」ということが言えました。

サンプルサイズが10程度でも問題にならなかったのは結構ビックリです。

もちろん、「多峰性だったらどうなの?」や「非対称性がひどかったらどうなるの?」など、調べていない部分もありますが。。。


今回はfalse negative rate(本当は差があるのに、差が無いと言ってしまう)については考えていません。

有意水準・検出力・効果量から検定に必要なサンプルサイズを求めて、そのサンプルサイズにおける検定を繰り返すことでfalse negative rateを出すことはできると思います。

とはいえ、とてつもなく大きい効果量でない限り、検定にはそこそこのサンプルサイズが必要になってしまうため、小さいサンプルサイズの実験がやりづらいです。。。
効果量大きくすると分散も変わってきて、サンプルサイズ計算をやりにくいという話もあり。。。