見出し画像

「サンプルサイズが大きすぎると良くない」ってどういうこと?

はじめに

こんにちは。
データ分析界隈でたまに、「サンプルサイズ大きすぎると良くない」って話を聞きます。
主に、検定を行いp-valueから有意差を確認する文脈で言われているようです。

サンプルサイズ設計に関してー理論編より引用
基本的に、多くの検定では例数が大きくなると、有意差があるという結果が得られやすくなります。
(中略)
例数が多すぎる場合:実際には差がなくても有意と判定してしまう
統計的仮説検定をするときのサンプルサイズの決め方より引用
現実には仮説検定でつかうサンプルサイズは大きすぎないほうがよいといわれています。
(中略)
標語的になってしまいますが、別のいいかたをすれば、サンプルサイズをいくらでも大きくできれば、どんな仮説検定でも棄却できるということもできます。

他にも色々な方が言及されていることをまとめると、「サンプルサイズが大きいとどんなにわずかな差でもp-valueが小さくなって有意差ありと判断してしまう」から、サンプルサイズが大きすぎると良くない、ってことのようです。
僕はこれに関して素朴な疑問として下記2つが浮かびました。

① わずかとはいえ差があるものを差があると判断して何がおかしいのか?
② サンプルサイズを大きくすればどんな仮説検定でも棄却できるって本当に?

①差がある事象を差があると判断して何がおかしいのか?

①について、まず検定でわかることは、差があるか or 差があるとは言えない かのどちらかです。差がある事象を差があると判断する検定に何も罪はありません。「いや、確かに差はあるけどその差は無視したいんだよなあ」はそもそも検定でやることではありません。(検出力とかちゃんと計算すればいいかもしれませんが、サンプルサイズが大きいならシンプルに集計して差が無視できる範囲がどうか見ればいい話です)

ここで、サイコロを振る例を考えてみます。
あるサイコロを振って1の目が出る確率が1/6かどうか検定で確かめたいとします。
このサイコロは歪んでいて、1の出る確率がちょっと高くなっています。
(正しいサイコロは1/6=16.66..%、歪んだサイコロは1.1/6=18.33..%で、1.66..ポイント高くなっています)
1の目が出るか出ないかですので、有意水準5%で二項検定を行いp-valueが0.05以下であれば1/6より有意に差があり、サイコロは歪んでいると判断することにします。
以上の前提で、サイコロを振る回数を10, 100, 1000,(略) 10000000と変えてp-valueをみます。この操作を各サンプルサイズで1000回ずつ繰り返し、p-valueが0.05以下になる確率を出します。これをそれぞれ100回繰り返し、p-valueが0.05以下になる確率のboxplotを描画します。
文章で順番に書くとややこしいですね。。要は「歪んだサイコロをいろんなサンプルサイズで振ってp-valueだけをみて有意差アリと判断する確率のboxplot」を出します。

画像1

1000回まではちょっとサンプルサイズが足りなさそうですね。10000回以上になると、大体有意差ありと判定できているようです。10000回以上に着目して見てみましょう。

画像2

100000回以上になると完全に有意差ありと判定できているようです。
差がある事象(歪んだサイコロ)を正しく差があると判定できていますね。なんの問題もありません。
よくある勘違いをあえて書きますが、サンプルサイズが小さいときは有意差ありと判定できず、大きい場合有意差ありと判定できていることは、決してサンプルサイズの大小によって結論が逆転したことを意味しません。
サンプルサイズが小さい間は「差があるとはいえない」だけです。差がないと言っていません。まあこのあたりは統計の教科書に散々書いてあるので割愛します。
また、このサイコロの歪み具合が無視できる差なのか無視でない差なのかは、僕には分かりません。あるドメインにおいてこの歪みは許容できないのであれば歪んでいる!って結論ですし、これは無視していいよってドメインなら見るべきはp-valueではありません。「無視できるレベルの差を検定で有意差ありと判定しちゃった」のはサンプルサイズを大きくしたせいではなく、p-valueのみを見て判断した人間のせいです。

② サンプルサイズを大きくすれば、どんな仮説検定も棄却できるのか?

①と同様にサイコロの例で考えてみます。
今度は正しく1/6の確率で1の目が出るサイコロについて検定を行い、サンプルサイズを大きくすることで誤って有意差ありとしてしまうのか確認します。
先ほどと同様、有意水準5%で二項検定を行いp-valueが0.05以下であれば1/6より有意に差があり、サイコロは歪んでいると判断することにします。
以上の前提で、サイコロを振る回数を10, 100, 1000,(略) 10000000と変えてp-valueをみます。この操作を各サンプルサイズで1000回ずつ繰り返し、p-valueが0.05以下になる確率を出します。これをそれぞれ100回繰り返し、p-valueが0.05以下になる確率のboxplotを描画します。
相変わらず順番に書くとややこしいですね。「正しいサイコロを振る回数を増やすと、誤って有意差ありと判定してしまう確率は上がるのか?」ということを確認します。

画像3

サンプルサイズが小さい間は、「有意差があるとは言えない」ケースが多くなるので10000回くらいまでは誤って判断する確率がちょっと小さいですね。(10回が顕著ですね。)ですが、100000回を超えると、大体5%前後でサチっているようです。最初に有意水準5%と定めているので当然といえば当然かもしれません。ともかく、「サンプルサイズを大きくすればどんな仮説検定でも棄却できるのか?」に対する答えは「できません」になります。サンプルサイズをもっと増やせばもっと確率は上がるんでしょうか?興味ある人はやってみてください。
おそらく、「現実の問題にはもっとノイズとかあってそういう微妙な差で有意差ありと判断されちゃうんだよ」って話になるのかなと思うんですが、そうした意図しないバイアスを除去できていないことに問題があると思います。(今回の例でいうと、正しくサイコロをランダムに振っていたはずが、サイコロ振る人の手の振り方にクセがあって出る目に偏りがあった、みたいなケースとかですかね)決してサンプルサイズを大きくしたせいではありません。
「(ほどよく想定外のバイアスを無視して)自分に都合の良い結果を出すためにサンプルサイズを大きくしすぎない」って話なら、それはただのp-value hackingなのでやめたほうがよいでしょう。

おわりに

サンプルサイズを大きくしすぎるのは良くないのか?に対する僕の答えは「別に良くない?」です。種々の問題はサンプルサイズ以外の部分の問題ではないかと思います。
そもそもの大前提として、p-valueだけを見て差があるのか判断するのがあまり良くないですよね。p-valueだけを見ても差の多寡は分かりませんし、データに予期せぬバイアスが入っていれば②で書いたように誤った結果を導く可能性があります。
要はちゃんとデータみましょう、っていう昔から言われ続けていることが結局大事なんですね。
本記事で使用したNotebookを載せておきます。興味あるひとはみてみてください。
Notebook (セル実行順が無茶苦茶ですが、計算に時間かかるのでやり直したくないので許してください)
なんか質問や、間違っている所等があれば是非Twitterとかで教えてください。
https://twitter.com/nekoumei
以上です。読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?