【統計の勉強】2群比較のサンプルサイズを決める
こんにちは。プログラミング超初心者のえいこです。
R言語を勉強しつつ、研究に必要な統計も勉強しています。
パラメトリック、ノンパラメトリックの違いについてまとめたときに出てきた「サンプルサイズ」についてもう少し掘り下げて勉強してみようと思います。
パラメトリックの検定は、サンプルサイズが小さいダメということでした。
また、サンプルサイズは不偏分散と許容できる誤差で計算できることもわかりました。
でも、不偏分散は実験をやってからしかわからないし、許容できる誤差って具体的な数値を出すのって難しいですよね。
今回は、実験する前の準備段階としてのサンプルサイズの計算の仕方を検討してみたいと思います。
効果量と検定力と有意水準とサンプルサイズ
サンプルサイズの計算の仕方は様々あるようですが、今回は「実験をする前にサンプルサイズを決める」という視点に立っているので、不偏分散などを使わないで算出しようと思います。
その時に必要なのが、
・効果量(d)→平均の差がSD何個分か?
・検定力(power)→有意差を見落とさない確率
・有意水準(α)→有意と判断する水準
・サンプルサイズ(N)→これから決める
このうち、有意水準は0.05はよく使うのでここでは割愛します。
耳慣れない効果量と検定力について少しまとめておきます。
この2つを決めればサンプルサイズが自然に決まることになります。
効果量ってなに?
端的に言うと効果量とは、「サンプルサイズに影響されない効果の大きさで、帰無仮説からのずれを標準化したもの」となります。
「ん?」って感じですよね。でも最近は論文にp値だけではなくて効果量も示すように要求される場合があるのでしっかり勉強しておきましょう。
では、なぜp値だけではダメだとされてしまうのでしょう?
p値の計算に必要なのは、平均値、分散、サンプルサイズです。
詳しくはt検定を勉強した時の記事をご覧ください。
ということは、pの値はサンプルサイズによって決まり、サンプルサイズが大きくなればpの値も小さくなります。
ということは無理やり有意差を出すために、サンプルサイズを増やすこともできてしまいます。
という背景から、サンプルサイズに影響されない効果の大きさを示す指標として効果量を併記することが推奨されるようになってきました。
効果量の目安として一般的に使われているのは1988年にCohenが提唱した下のような数値表です。
small, medium, largeの違いは、見られる差の大きさ。Smallの方が検出できる差の大きさが小さいという意味です。
たいていの場合はLarge(t検定の場合は0.8)で算出することが多いようです。
検定力ってなに?
次にサンプルサイズを算出するのに必要なのが、検定力です。
検定力とは、「有意差を見つける力」「母集団同士で差があるとき、取り出したサンプルにおいて有意な結果が得られる確率」とされています。
サンプルサイズが大きければ、検定力も強くなります。でも検定力が強すぎると、実際には有意差がなくても有意差を検出してしまう(第一種の過誤)可能性があるようです。
少し表にしてまとめてみます。
実際の結果と検定をした時の結果を比較した表です。検定力は第二種の過誤を起こさない確率(1-β)と定義されているようです。
このαとβの関係性はまだ勉強していないのでよくわかりません...
一般的にβの値は0.2が望ましいとされているので、必然検定力は0.8となります。
検定力0.8とはどういうことかというと、
同じ母集団からランダムに同じサンプル数、同じ有意水準で検定したとすると(仮説検証をする)
100回中80回は仮説が支持される(帰無仮説が棄却される)ということです。
サンプルサイズを計算してみる
効果量と検定力がわかったところで、実際にサンプルサイズを計算してみようと思います。
まずは、実験する前で
有意水準:0.05
検定力:0.8
効果量:0.8 (大きい差を検出する)
として計算してみようと思います。
1. t検定のサンプルサイズを計算する
power.t.test(sig.level = 0.05, power = 0.8, delta=0.8)
で実行すると、
> power.t.test(delta=0.8, sig.level = 0.05, power = 0.8)
Two-sample t test power calculation
n = 25.52463
delta = 0.8
sd = 1
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
n=25.52ということは、各グループ25サンプル、合計50サンプルは必要だということになります。
効果量をmediumにして、再計算してみると...
> power.t.test(sig.level = 0.05, power = 0.8, delta=0.5)
Two-sample t test power calculation
n = 63.76576
delta = 0.5
sd = 1
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
nが各グループ63以上必要になってしまうようです。
次に、実験してデータが出た後の計算をしてみようと思います。
以前t検定してみたデータに関して、
効果量をあらかじめ算出してから、t検定の検定力を算出してみました。
2群比較の場合の効果量は、t値と自由度で計算します。
計算すると、効果量は0.97。これで検定力を出すと...
> power.t.test(sig.level=0.05, n=3, sd=3.816667, delta=0.97)
Two-sample t test power calculation
n = 3
delta = 0.97
sd = 3.816667
sig.level = 0.05
power = 0.04332079
alternative = two.sided
NOTE: n is number in *each* group
power=0.0433とめちゃくちゃ低い!
ということはもっとサンプル数を増やした方が良いということがわかりました。
次回は、irisのデータを使って多群比較の時のサンプルサイズ計算をしてみようと思います。
それでは、また!
参考文献(この記事を書くにあたって参考にしたサイト)
水本 篤・竹内 理 研究論文における効果量の報告のために―基礎的概念と注意点― 英語教育研究 2008 31;57-66.