「標本サイズ30あれば正規分布とみなしてよい」を7つの分布で実測したら、合格したのは1つだけだった
約17分で読めます

「標本サイズ30あれば正規分布とみなしてよい」を7つの分布で実測したら、合格したのは1つだけだった


アンケートを30人に取って平均を出す。A/Bテストを30回まわして勝ち負けを判定する。このとき、たいてい同じ一文が根拠になっている。

標本サイズが30以上あれば、標本平均は正規分布に従うとみなしてよい。

統計の教科書にも、社内の分析ガイドラインにも書いてある。中心極限定理という後ろ盾があるので、この一文は強い。

ただ、中心極限定理が言っているのは「無限に増やせば」の話だ。30は無限ではない。では30で何が起きているのか。

7種類のデータで実際に測ったら、合格したのは1つだけだった。実験に使ったコードの全文はGitHubに置いています

そもそも、何が正規分布に近づく話なのか

まずここを揃えておきたい。近づくのはデータそのものではない

サイコロを30回振って、出た目の平均を出したとする。3.4だった。もう一度30回振って平均を出すと、今度は3.6かもしれない。3.1かもしれない。この「平均」自体が、やるたびに違う値になる。

この平均を2万回ぶん集めてヒストグラムを描くと、3.5あたりを山にした釣鐘型の分布ができる。中心極限定理が言っているのは、この「平均たちの分布」が正規分布(釣鐘型)に近づくということだ。サイコロの目そのものは1〜6が平らに出るだけで、いくら振っても釣鐘型にはならない。

言葉を3つだけ決めておく。

  • 母集団 … 元のデータが従う分布(サイコロなら「1〜6が等確率」)
  • 標本サイズ n … 1回の平均を作るのに使う個数(30回振るなら n=30)
  • 標本平均 … その n 個の平均

なぜ釣鐘型かどうかを気にするのかというと、t検定も信頼区間も「標本平均が正規分布に従うこと」を前提に計算しているからだ。前提が崩れていると、「有意差あり」の判定も「95%信頼区間」の95%も、名乗っているとおりの意味を持たなくなる。

測り方

母集団を7種類用意した。左右対称なものから、極端に歪んだものまで。

そこから n 個を取り出して平均する、を2万回繰り返す。集まった2万個の標本平均が、正規分布からどれだけ離れているかを測る。

ズレの尺度にはコルモゴロフ・スミルノフ統計量(KS統計量)を使った。名前は物々しいが、やっていることは単純だ。2つの分布について「x以下になる確率」のグラフを描いて重ね、いちばん離れている場所での差を取る。それだけ。

  • KS = 0 … 完全に一致
  • KS = 0.05 … どこかで「x以下になる確率」が5ポイントずれている

合格ラインは KS < 0.01 に置いた。ズレが1ポイント未満、という実用的な線だ。参考までに、2万件でKS検定を5%水準でやったときの棄却点が0.0096なので、これはほぼ「2万回試しても正規分布と見分けがつかない」水準にあたる。

比較の前に、位置と広がりは揃えてある(標準化という)。そうしないと「平均が3.5か0か」のような、形と関係ない違いを拾ってしまう。揃えたあとに残るのはの違いだけになる。

n = 30 で何が起きているか

6つの分布それぞれについて、標本サイズ30で作った標本平均2万個のヒストグラムと、正規分布の曲線を重ねた図。一様分布はKS=0.004で曲線とぴたりと重なっている。コイン投げp=0.5はKS=0.073で、なめらかな曲線に対してヒストグラムが櫛状の飛び飛びの棒になっている。指数分布はKS=0.027で右に尾を引いて左にずれている。カイ二乗分布df=1はKS=0.034、対数正規σ=1はKS=0.061でいずれも左に寄って右裾が長い。まれな事象p=0.01はKS=0.449で、棒が3本しか立っておらず正規分布の曲線とはまったく別物になっている

青い線が正規分布、ピンクの棒が実測した標本平均の分布だ。ぴたりと重なっているのは左上の一様分布だけで、あとはどれも形が違う。

母集団どんなデータかn=30 の KS判定
一様分布 U(0,1)0〜1が平らに出る0.004合格
指数分布 Exp(1)待ち時間。短いことが多く、たまに長い0.027
カイ二乗分布 df=1指数分布よりさらに右に尾を引く0.034
対数正規 σ=1年収や売上。掛け算で増えるもの0.061
コイン投げ p=0.5表か裏か、2つの値しか取らない0.073
コーシー分布極端な外れ値が頻繁に出る0.081
まれな事象 p=0.01100回に1回だけ起きる出来事0.449

7つのうち、合格は1つ。

「まれな事象」の0.449は桁が違う。図の右下を見ると、棒が3本しか立っていない。100回に1回しか起きないことを30回試すと、ほとんどの回で0件、たまに1件、まれに2件。平均が取りうる値が数種類しかないので、なめらかな釣鐘型になりようがない。

n を増やすと、どう変わるか

n=30だけ見ても仕方がないので、1から1000まで動かした。

3行4列に並んだヒストグラムの図。行が一様分布・指数分布・対数正規σ=1、列がn=1、5、30、1000。一様分布の行はn=1では四角い平らな形だが、n=5でもう正規分布の曲線とほぼ重なりKS0.008、n=30で0.004。指数分布の行はn=1で左端に壁があり右に長い尾を引いた形(KS0.159)、n=5で0.059、n=30で0.027とまだ左肩が立っていて右裾が長く、n=1000でようやく0.007になる。対数正規の行はn=1でKS0.223、n=30でも0.061で明らかに左に寄ったまま、n=1000で0.015。各パネルに正規分布の曲線が重ねてある

上の行(一様分布)は、n=1では四角い平らな形なのに、n=5でもう正規分布と見分けがつかない

下の行(対数正規)は、n=1000まで行っても左に寄ったままだ。山の位置がずれていて、右に長い尾を引いている。

同じ「30」を当てはめる相手として、この2つは違いすぎる。

7分布すべてについて、ズレの縮み方を1枚にするとこうなる。

横軸が標本サイズn、縦軸がKS統計量の両対数グラフ。7本の折れ線が引かれている。一様分布は最も低い位置にあり、n=5で目安の0.01を下回ったあとほぼ横ばい。指数分布とカイ二乗分布は右下がりの直線で、n=1000付近でようやく0.01線に達する。コイン投げと対数正規は同じような傾きでn=1000でも0.015前後にとどまる。まれな事象p=0.01は最も上にあり、n=30まで0.5付近でほぼ平らなあと下がり始めるがn=1000でも0.085。コーシー分布だけは傾きがゼロで、n=1からn=1000まで0.08の水平線のまま。実用の目安0.01の水平破線と、n=30の垂直点線が引かれている

線が下にあるほど正規分布に近い。横向きの破線が合格ライン(KS=0.01)で、そこを下回ればその分布は「正規分布とみなしてよい」。縦の点線が n=30 の位置だ。

母集団合格ラインを満たした最小の n
一様分布 U(0,1)5
指数分布 Exp(1)1000
カイ二乗分布 df=11000
対数正規 σ=11000でも未達
コイン投げ p=0.51000でも未達
まれな事象 p=0.011000でも未達
コーシー分布到達しない

一様分布は n=5 で足りる。30は6倍の過剰だ。一方で指数分布には1000が要る。30では33分の1しかない。同じ「30」という数字が、6倍余っている場面と33倍足りない場面で、同じ顔をして使われている。

分かれ目は「歪度」だった

では何が2つを分けているのか。歪度(わいど)という量が効いている。

歪度は、分布が左右どちらに偏っているかを表す数字だ。

  • 歪度 0 … 左右対称(正規分布、一様分布、コイン投げ)
  • 歪度が大きい … 右に長い尾を引く。年収がこれ。多くの人が数百万円のあたりに固まっていて、右のほうにごく少数の高額所得者がいる

さっきの表を歪度の順に並べ直すと、KSの順とほぼ一致する。

母集団歪度n=30 の KS
一様分布0.000.004
指数分布2.000.027
カイ二乗分布 df=12.830.034
対数正規 σ=16.180.061
まれな事象 p=0.019.850.449

理論上、標本平均の歪度は次の式で減っていくことが知られている。

(標本平均の歪度)=(母集団の歪度)n(標本平均の歪度) = \frac{(母集団の歪度)}{\sqrt{n}}

n個の平均を取ると、歪みが n\sqrt{n} 分の1になる、という意味だ。実測がこの式に乗るか確かめた。

横軸が標本サイズn、縦軸が標本平均の歪度の絶対値の両対数グラフ。指数分布、カイ二乗分布、対数正規、まれな事象の4つについて、実測値が点で、理論値γ/√nが直線で描かれている。4組とも点が直線のうえにほぼ乗っており、傾きはすべて-1/2で平行。対数正規だけ小さいnで点が線よりわずかに下にある

点(実測)が線(理論)に乗った。

この式をひっくり返すと、使える指針になる。標本平均の歪度を0.1以下に抑えたいなら、

n>100×(母集団の歪度)2n > 100 \times (母集団の歪度)^2

が必要になる。必要な標本サイズは、歪度の2乗に比例する。 歪みが2倍のデータには4倍の標本が要る。

母集団歪度必要な n
一様分布・コイン投げ01
指数分布2.00400
カイ二乗分布 df=12.83800
対数正規 σ=16.183,800
まれな事象 p=0.019.859,700

逆算すると、n=30 が正当化されるのは歪度が0.55くらいまでの範囲だけだった。

そして歪度は母集団の性質なので、データを取る前から決まっている。手元のデータのヒストグラムを描いて右に長い尾を引いていたら、その時点で30では足りないと分かる。売上、滞在時間、購入金額——右に尾を引くデータは実務にいくらでもある。

真ん中が合っていても、端は合っていない

もうひとつ、見落としやすいところがある。

標準化した標本平均が ±3\pm 3 を超えた割合を数えた。正規分布なら0.27%(1000回に約3回)になるはずの数字だ。

母集団n=30 での実測正規分布の何倍
一様分布0.27%1.0倍
指数分布0.44%1.6倍
カイ二乗分布 df=10.60%2.2倍
対数正規 σ=11.10%4.1倍
コーシー分布14.03%52倍

対数正規の n=30 で、「3σの外」が正規分布の4倍出ている。「1000回に3回」のつもりが「100回に1回」ということだ。

異常検知でよくやるように「平均から3σ離れたらアラート」という閾値を引いていたら、誤報が4倍出る。めったに鳴らないはずのアラートがなぜか毎日鳴る、という状況の原因はこれであることが多い。

図で真ん中が合って見えても、端は別に確認したほうがいい。KS統計量は「いちばん離れている場所」を見る指標なので、確率の絶対量が小さい裾のズレは拾いにくいからだ。

コイン投げが合格しない理由は、歪みではない

表を見返すと、ひとつ変な行がある。コイン投げは歪度0(左右対称)なのに、n=30でKS=0.073。n=1000でも0.0167で合格しない。

理由は歪みではなく、飛び飛びの値しか取らないことだ。

n回のコイン投げの平均は 0,1/n,2/n,0, 1/n, 2/n, \ldots という値しか取れない。n=30なら31通りしかない。「x以下になる確率」のグラフを描くと、なめらかな坂ではなく階段になる。相手の正規分布はなめらかな坂なので、段差ぶんのズレが必ず残る。

最初の図でコイン投げのパネルが櫛のように見えていたのは、これだ。

段差の大きさから計算すると、KSの下限はおよそ 0.4/n0.4/\sqrt{n} になる。n=1000で0.0126、実測0.0167とだいたい合う。0.01まで下げるには n≈1600 が要る計算だ。

つまりコイン投げも最後は正規分布に寄る。ただし寄り方が 1/n1/\sqrt{n} でしかない。「はい/いいえ」「クリックした/しなかった」のような2値データを扱っているかぎり、この段差はついて回る。

コーシー分布は、1000個平均しても何も変わらない

最後の1つは、これまでとは種類の違う壊れ方をする。

コーシー分布の標本平均のヒストグラムを、n=1、n=30、n=100、n=1000の4つ並べた図。4つとも中央が高く裾が非常に長い同じ形をしており、重ねた正規分布の曲線より中央が明らかに高く尖っていて、両端に外れ値が広がっている。nを増やしても形がまったく変化していない

n1301001000
KS統計量0.0830.0810.0820.083

1000個平均しても、1個のときと同じ形だ。 縮みもしないし、釣鐘型にも近づかない。

理由は、コーシー分布に平均も分散も存在しないこと。「計算するのが難しい」のではなく、数学的に存在しない。極端な外れ値が出る確率が十分に高いので、データを増やすほど平均が暴れて、どこにも落ち着かない。

中心極限定理は「母集団に有限の平均と分散があること」を前提にしている。コーシーはその前提を満たさないので、定理の外側にいる。実際、コーシー分布から n 個取って平均すると、その分布は元のコーシー分布とぴったり同じになることが証明できる。平均という操作が、何も縮めていない。

3σの外は14%。正規分布のつもりで見ていたら、52回に1回のはずの事象が7回に1回来る。

これは机上の話ではない。株価の変動、ネットワークの遅延、SNSの拡散数のように、ごく稀に桁違いの値が出るデータでは、分散が事実上効かない状況が起きる。平均を取れば安定する、という直感が通用しない領域がある。

自分で動かしてみる

n を動かしたときに形がどう変わるかを触れるようにした。上のボタンで分布を切り替えられる。

一様分布はスライダーを2つ動かしただけで正規分布に張り付く。対数正規は1000まで動かしても左に寄ったままだ。コーシー分布は、どこまで動かしても何も起きない。

結局、どうすればいいのか

実測から言えることをまとめる。

1. データのヒストグラムを描く。 右に長い尾を引いていたら、30では足りない。これが一番安上がりな判定だ。

2. 歪度が計算できるなら n>100γ2n > 100\gamma^2 を目安にする。 歪度2の指数分布なら400、歪度6の対数正規なら3,800。

3. 2値データ(はい/いいえ)なら、飛び飛びであることを織り込む。 n=1600あたりまでは段差が残る。

4. 極端な外れ値が頻繁に出るデータでは、そもそも平均に頼らない。 中央値や、外れ値に強い方法を使う。

5. サンプルを増やせないなら、正規分布を仮定しない方法に変える。 ブートストラップや順位に基づく検定なら、この前提が要らない。

まとめ

  • n=30で合格したのは7分布中1つだけ。一様分布のKS=0.004に対し、指数分布0.027、対数正規0.061、まれな事象p=0.01は0.449
  • 必要な標本サイズは歪度の2乗に比例する(n>100γ2n > 100\gamma^2)。30が正当化されるのは歪度0.55程度まで
  • 標本平均の歪度が 1/n1/\sqrt{n} で減ることは実測でも確認できた
  • 中央が合っていても裾は合わない。対数正規のn=30で3σ超えが1.10%(正規の4.1倍)
  • 2値データはKSに 0.4/n0.4/\sqrt{n} の下限が残る。コイン投げが歪度0なのに0.073なのはこれが理由
  • コーシー分布はn=1000でもKS=0.083で、n=1から動かない。平均も分散も存在しないため定理の外側にいる

測った数字より、「30」という数がどう伝わってきたかのほうが気になった。

もとは「歪度が小さければ30程度で足りる」という条件付きの話だったはずだ。それが伝わるうちに条件が落ちて、数字だけが残った。数字だけになると強い。30は覚えやすいし、会議で「サンプルは30あります」と言えば議論が終わる。条件は思い出す手間がかかるが、数字は思い出す手間がかからない。 だから条件のほうが先に落ちる。

自分が人に何かを渡すときも、たぶん同じことをしている。「この条件のときは、この手順で」と伝えたつもりが、相手には手順だけが残る。そして条件の外側で使われて、うまくいかない。

条件が落ちても壊れない渡し方があるとすれば、条件を注釈ではなく手順そのものに埋め込むことだと思う。「n=30」ではなく「ヒストグラムを描いて、右に尾を引いていたら30では足りない」と言えば、条件と手順が分かれない。前者は覚えられて誤用され、後者は覚えるのが面倒でも、覚えた人は間違えない。

コーシー分布のほうは、もっと救いがない話だった。平均を取れば真ん中に寄る、というのは平均が存在する場合の話でしかない。存在しないものを1000回足して1000で割っても、存在しないままだ。 数を集めれば確からしくなる、と無条件に信じている場面が、自分にもある気がしている。