分散分析とサンプルサイズ
昔作った表があったので共有します。
被験者間1要因分散分析とサンプルサイズ・検定力(検出力,Statistical power)の関係をまとめた表です。意外に便利かと思います。
効果量はfを使用しています。実際には効果量fって使いませんので,効果量の「大中小」を参考にしてください。効果量「大」でも,被験者間計画だとかなりの人数が必要なことがわかりますね!(たとえば,f=0.4で3水準だと1群21人,合計63人必要。)
ざっくり考えると,効果量「大」が必要な(ことが多い)心理学実験の場合には,被験者間計画の場合は1群(1水準)10~20名程度必要という感じです。また,これは多重比較ではなく主効果の話であることに注意してください。多重比較で群間に有意差が出るかどうかの計算はまた異なります。
2要因以上は面倒なので作成していませんが,交互作用を無視すれば同じになるかと思います。被験者内要因の場合は,合計値を半分くらいに考えればいいかと目安としてはいいんじゃないかと(仕組みは対応あり・なしのt検定における検定力の記事を参照してください)。
psychology-ganbaru.hatenablog.com
相関係数とサンプルサイズ
相関係数も仮説検定(r=0ではない)を行うことが一般的ですので,検出力(power)を0.8としたときに必要となるサンプルサイズを計算してみました。ご活用ください。
pwr = 0.8 | |||
r | n | r | n |
0.10 | 781.8 | 0.55 | 22.8 |
0.15 | 345.7 | 0.60 | 18.6 |
0.20 | 193.1 | 0.65 | 15.4 |
0.25 | 122.4 | 0.70 | 12.8 |
0.30 | 84.1 | 0.75 | 10.7 |
0.35 | 60.9 | 0.80 | 9.0 |
0.40 | 45.9 | 0.85 | 7.5 |
0.45 | 35.6 | 0.90 | 6.2 |
0.50 | 28.2 | 0.95 | 5.0 |
Small effect size: r = 0.1 | |||
Middle effect size: r = 0.3 | |||
Large effect size: r = 0.5 |
(Cohen, 1982) |
ちなみに本題とは外れますが,相関係数は効果量の一種です(=サンプルサイズに影響されない)。これは結構多くの人が勘違いしている点なので,気を付けましょう。
ただし,相関係数の値がどれだけ信頼できるかはサンプルサイズに依存します。そのため,95%信頼区間を一緒に計算しておくといいと思います。Rのcor関数だとデフォルトで出力してくれますので,論文等では必ず報告しましょう。
今回はCohenの基準を示していますが,日本ではなぜか人気のギルフォードの基準の解説は以下の記事を参照してください。
psychology-ganbaru.hatenablog.com
Bonferroniの方法における分散と自由度
Bonferroniの方法のコンセプトは,検定の数だけ有意水準を厳しくしよう!というもので,これはこれでOKなのですが,統計ソフトでBonferroniの多重比較をおこなう場合に注意するべき点について共有します。
統計ソフトでBonferroniの多重比較を実行した場合(たとえば,Rのpairewise.t.test)と,自前で独立なt検定をおこない,そのp値を掛け算(あるいは有意水準を割り算)して結果を出していた場合では,異なる結果が得られることがあります。
Rのpairewise.t.testであれば実行した後のメッセージを見ていればわかるのですが,
Pairwise comparisons using t tests with pooled SD
結果とともに,上記のようなメッセージが出力されます。これは,t値の計算の際に,群をプールした分散が使われている,ということを示しています。
20名ずつの群が3群があるとしましょう。このときの群Aの標準偏差をたとえば標準偏差Aとすると,MSEpoolは
MSEpool = (20*標準偏差A^2 + 20*標準偏差B^2 + 20*標準偏差C^2) / (20*3)
となります。注意するべきは,AとBを比較するとき,BとCを比較するとき,AとCを比較するとき,すべての場合において,このMSEが使用されるということです。
普通のt検定であれば,AとBを比較するとき,Cの分散って関係なくね?となるわけですが,そうじゃないってことです。この操作の是非については微妙ですが,各群が等分散であれば,ほかの群の分散を考慮しようと何も影響がありません。
pairwise.t.testのヘルプには,
The
pool.sd
switch calculates a common SD for all groups and uses that for all comparisons (this can be useful if some groups are small). This method does not actually callt.test
, so extra arguments are ignored. Pooling does not generalize to paired tests sopool.sd
andpaired
cannot both beTRUE
.
と,引用もなく書かれております。usefulというのも微妙な表現です。群がsmallのときっていうのはサンプルサイズのことでしょうか。アンバランス,かつある群のサンプルサイズが分散を定義するのに不十分なくらい小さいってことでしょうかね。
以下のサイトでは,Bonferroniの方法として,このプールされた分散(MSE)を用いる計算方法が紹介されていたりします。
さて,ここで実はもうひとつ重大な変化がおきています。分散がプールされるということは,自由度が変化します。これ,結果を論文やレポートで報告するときには非常に重要なことです。まあ,pairwise.t.testは,dfもt値も出力してくれず,そもそもの使用頻度は低いことが予想されるので,ふつうのdfを間違えて報告…といったリスクも低いとは思いますが。
自由度はt値やF値を決定するときに大事ですね。統計的仮説検定では一般的に,自由度が大きくなれば,有意になりやすくなります。そして,Bonferroniの多重比較法を用いたとき,自由度=データ数ー水準数となるため,独立なt検定をおこなうときよりも,自由度は大きくなります。具体的には,20 vs 20のt検定だと自由度が38であるのに対して,20×3群の多重比較のt検定の自由度は57となります。全然違いますね。
pairwise.t.testでは,これがデフォルトであることに気を付けましょう。pool.sdをFALSEにすれば,通常のt検定の繰り返しをしてくれますので安心です。
詳細は割愛しますが,今手元にある私のデータ(4群,20人ずつ)
--------------------------
A n Mean S.D.
--------------------------
a1 20 5.6000 2.3930
a2 20 4.0500 1.4681
a3 20 6.0500 1.3945
a4 20 6.1000 1.7741
--------------------------
を解析してみると,
> result <-pairwise.t.test(data[,2],data[,1]) > result Pairwise comparisons using t tests with pooled SD data: data[, 2] and data[, 1] 1 2 3 2 0.0322 - - 3 1.0000 0.0038 - 4 1.0000 0.0034 1.0000 P value adjustment method: holm > result <-pairwise.t.test(data[,2],data[,1],pool.sd=FALSE) > result Pairwise comparisons using t tests with non-pooled SD data: data[, 2] and data[, 1] 1 2 3 2 0.07663 - - 3 1.00000 0.00048 - 4 1.00000 0.00155 1.00000 P value adjustment method: holm
おそらく分散の影響ですが,ひとつの結果が変わるくらいには影響があるみたいです。
また,私が日ごろお世話になっていますanovakunでも,自由度が大きくなっているので,プールされた分散が使われていることがわかります。
--------------------------------------------------------------
Pair Diff t-value df p adj.p
--------------------------------------------------------------
a2-a4 -2.0500 3.5996 76 0.0006 0.0034 a2 < a4 *
a2-a3 -2.0000 3.5118 76 0.0008 0.0038 a2 < a3 *
a1-a2 1.5500 2.7216 76 0.0081 0.0322 a1 > a2 *
a1-a4 -0.5000 0.8779 76 0.3827 1.0000 a1 = a4
a1-a3 -0.4500 0.7902 76 0.4319 1.0000 a1 = a3
a3-a4 -0.0500 0.0878 76 0.9303 1.0000 a3 = a4
--------------------------------------------------------------
anovakunではプールした分散を使わないオプションはなさそう?です。もしあったら教えてください。
Bonferroni系列の多重比較を実施した際に共通のMSEを使用することが「スタンダードかどうか」はわからないのですが,論文等で突っ込まれるのが嫌であれば,避けたほうがいいですね(どちらにしても自由度はきちんと報告しましょう)。
森・吉田(1990)「心理学のためのデータ解析テクニカルブック」を調べてみたら,独立なt検定の繰り返しの際に,今回紹介したような共通の誤差分散が仮定されていました。ただし,そこにはやはり「各処理水準の母分散がすべて等しいという仮定のもとに…」(p164)という脚注がついていました。なので,これが仮定できないときには使えませんね。
また,テューキー(Tukey)の方法では,共通の誤差分散(分散分析における主効果の誤差分散)が使用されています。これらの処理が検出力を高めるために使われているのか,計算が面倒だったから使われているのか,はたまた等分散じゃない水準をそもそも比較するなよってことなのかは不明です。
pairwise.t.testでt値および自由度を得る方法は以下にて解説されています。オリジナル関数を作れっていう解決策ですね。二つ目の回答は,t.testから得よう,っていう回答ですが,これはもうおわかりの通り,大きな間違いですので注意してください。
ちなみに,本質ではありませんが,pairwise.t.testではHolmの方法がデフォルトですので,これまでBonferroniの方法と繰り返してきましたが,上に示したものはHolmの方法です。anovakunではShafferの方法がデフォルトですが,上の解析ではHolmの方法を指定しています。
多重比較って何?って方は以下の記事も参照ください。
psychology-ganbaru.hatenablog.com
検定の多重性問題について(1と2があります) psychology-ganbaru.hatenablog.com
psychology-ganbaru.hatenablog.com
p値の誤用
正しく使えばいいだけなんです。
ある理論やツールを間違って使っている人を捕まえて,あるいは厳密な言葉遣いをしていない人を捕まえて,その理論そのものを否定するのは愚の骨頂です。理論は理論なのです。統計的仮説検定はなんでもできるスーパーマンではありません。使い方や説明範囲が非常に限定されているものなのです。これは,統計学そのもの,あるいは科学そのものにも当てはまります。
何はともあれ,統計的仮説検定の間違いやすい点を再度おさらいしておきましょう。
統計的に有意になったからって・・・
・効果がある(大きい)とは限らないよ!
・その結果が再現性のあるものとは限らないよ!
・p値は対立仮説が真である確率ではないよ!
ただし,効果が大きければ,有意になる確率は高くなります。再現性がある現象であれば,有意になる確率は高くなります。対立仮説が正しければ,p値が小さくなる(有意になる)確率は高くなります。確率っていっちゃうと厳密には突っ込み対象になっちゃうかもしれませんが,一般的な意味でね。
統計学者であれば,統計できない人を非難するのではなく,今まで正しく統計を教えてこれなかったことを恥ずべきじゃないですかねえ。
神経心理学誌における統計解析方法の実態と理論的検討:推測の意味を考える
[Title]
神経心理学誌における統計解析方法の実態と理論的検討:推測の意味を考える
[URL]
https://psyarxiv.com/n4uc5/
[Abstract]
本研究では,2000年〜2016年までの17年間に神経心理学誌に掲載された170編の原著論文におけるデータ解析方法の運用状況を調べ,さらに統計的仮説検定における多重性問題および検出力(検定力)の問題を検討した。検討の結果,多くの研究で多重性問題は意識されておらず,特に相関係数を算出する研究において,検定の多重性問題が統制されていないことが明らかとなった。検出力の問題に関しては,サンプル数が多いために検出力が高すぎるケース,およびサンプル数の少なさのため検出力が低くなっているケースの両方を確認した。これらの問題に対して,理論的観点と,“神経心理学”誌における現状の両面から解決方法を提案した。