同じ誕生日のパラドックス part2
二人の誕生日が一致する確率は簡単です。前ページにあるように365分の1の確率です。では3人の場合はどうなるのでしょう。
○ ○ 1 ・ | ・
|・ ・ | ⇒ --- ○ ・ 人 ・ ○ ⇒ 何%
人 人 365 | . . . . . |
人 人
3人のうちで少なくとも1つのペアの誕生日が一致する確率を求めるときは、3人全員の誕生日が一致しない確率を求めて、100%から引けば求めることができます。
1 - --- * --- = 3人うちで少なくとも一組の誕生日が同じ確率
365 365
(2人目)(3人目)
rpn式にすると次のようになります。
0.00820417
約0.8%ですね。この調子で10人、20人、30人、40人、50人、60人と計算していけば、数学的に確率が計算できるのですが、なんとも数式を入力するのが面倒ですね。もっと楽な方法はないでしょうか。
誕生日が同じ確率を求める数式
やはり、先人は誕生日が同じ人がいる確率を出す数式を作っています。それは以下の数式なのですが、1からn人の人全ての誕生日が異なる確率を引いて求めています。
p = 1 - ----------------
n
365 ・ (365 - n)!
対応するrpn式は以下のとおりです。10人のうちで誕生日が同じ確率を求めています。
rpn式の「10 #n」の部分を変更して「20 #n」なら20人の場合です。これなら変更点も一箇所なので、簡単に求めることができますね。
ところが、この方法ではうまく計算できません。数式中の365の階乗が大きすぎて、rpnでは扱えずに以下のようにエラーが発生します。
誕生日が同じ確率をrpnで計算
そこで、基本に立ち返って1行プログラミングで解決します。次の繰り返しオプションを使ったrpn式なら問題なく計算できます。
最後にある繰り返しオプションの「-r 10」の部分を変えれば計算できます。ちなみに3人の場合は以下のとおりです。
0.00820417
計算結果は、冒頭の3人の確率と同じになっていますよね。
数学的に求めた一致確率とグラフ
この式を使って10人から60人までの誕生日が同じ確率を求めていきましょう。1行目を入力実行したら、2行目からはキーボードのF8キーを押せば簡単に入力できます。
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 20 >>ratio2
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 30 >>ratio2
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 40 >>ratio2
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 50 >>ratio2
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 60 >>ratio2
今度はratio2ファイルに計算結果を格納してあります。シミュレーションのときと同様に数値とグラフを見てみましょう。
0.116948
0.411438
0.706316
0.891232
0.970374
0.994123
^y 100% * *
| *
|
- 75%
| *
|
|
- 50% ・・・・・・・・・
| *・
| ・
| ・
- 25% ・
| ・
| * ・
|o ・ x
+-----|------|-----|------|------|----->
10人 20人 30人 40人 50人 60人
これが数学的に確率計算した、誕生日が一致する確率のグラフです。心なしか曲線が綺麗に見えます。20人では50%に届いていないことが分かります。
次に以下のrpn式で増加率を見てみると、10から20人で急激に確率が増えていることが分かります。
3.51813
1.7167
1.2618
1.0888
1.02447
10人から20人になると3.5倍も確率が上がっています。その後は段々と増加率が減っていきますが、50人にもなると実に97%の確率で誕生日が一致します。60人ならほぼ100%です。
とすると学校の1クラスに同じ誕生日の子供が、少なくとも1組いるのは間違いないということになりますね(自分の好きな子と同じ誕生日の確率は相変わらず0.3%ですが)。
シミュレーションと確率計算の違い
それでは、先ほどのシミュレーションのグラフと重ねてみましょう。
| * +
|
- 75%
| *
|
|
- 50% +
| *
|
|
- 25%
|
| *
|o x
+-----|------|-----|------|------|----->
10人 20人 30人 40人 50人 60人
"*"が理論値で"+"がシミュレーション値です。20人と50人の部分でズレを確認できますね。実際に誤差はどれくらいあるのでしょうか。ratioとratio2ファイルを横結合してみます。
0.1 0.116948
0.48 0.411438
0.71 0.706316
0.91 0.891232
0.93 0.970374
1 0.994123
大体は一致していることが分かります。100回くらいの試行で十分に近似しているように思えます。次に誤差百分率を求めてみましょう。
-0.16948
0.142837
0.00518873
0.0206242
-0.0434129
0.005877
大きい部分で17%の誤差ですね。小さいところでは0.5%程度です。
数学者と将校の話
さて、前ページの冒頭に挙げた話ですが、登場人物は数学者本人と将校22人でした。つまり、全員で23人です。そして窮地を救ったウェイトレスが24人目ということでしたね。
では、そもそも23人のうちで誕生日が同じ確率はいくらだったのでしょう。
0.507297
なんとフィフティー・フィフティーです。50%をちょっと超える程度の確率で、22人の将校を前に誕生日が同じ人がいることを実証しようとしたのですから、かなりのギャンブラーですよね。いなかったらどうするつもりだったのでしょうか。
24人だとしても確率は0.538344ですから、そんなに増えるわけではありません。やはり、数学者はウェイトレスに感謝しないといけませんね。
逆に考えると、いわゆる統計的に有意だと考えられるポイントが5%ですから、たったの6人のうちで同じ誕生日の人がいたら統計的にも希な可能性があります。ただし、サンプル数が6人だと少なすぎて話にならないかもしれません。
0.0404625
>rpn @n 365 / @s * #s @n 1 - #n -b 365 #n 1 #s -e 1 @s - -r 7
0.0562357
計算すると7人で5%を超えていますね。
あなたは誰かの生まれ変わり
ちなみに誕生日が一致する確率は、死亡日が一致する確率と同じです。つまり、一生に一度しか起こらないイベントの発生日が同じ確率を表しているわけです。人数が増えれば増えるほど同じ日になる確率は増えていきます。
ある人の死んだ日と別のある人の生まれた日が同じことを取り上げて、生まれ変わりだと言う占い師もいますが、歴史上の有名人はたくさんいます。世界中に視野を広げると数千人はいます。とすると、一致する確率は限りなく100%に近くなることが分かりますよね。
そして、恋のキューピットになりたいなら…
コンパでもクラス会でも何でも良いのですが、ある程度以上の人数がいると誕生日が一致する確率は高くなることが分かりました。すると…。
事前に参加メンバーの誕生日を調べておきます。同じ誕生日のペアの片方に近づき、もう一方の人を指差して、”あの人の誕生日をそれとなく聞いて来て”と頼みます(理由は適当に作って)。しばらくして、きっと聞こえてくるのが、先ほどのセリフです。
- 「エェーッ!同じ誕生日?こんな偶然は滅多にないよ。きっと運命だね」
この一言で、心が動かない人はいないでしょう。
誕生日の曜日に関する記事として、実践コーナー(統計アラカルト)の生まれる曜日は神様次第があります。興味のある人は参考にしてください。
rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。
pasteは講座サポートで公開されています。rownum, rowdivはカンタン分析パッケージに同梱されています。errはビジネス統計(単回帰編)に同梱されています。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。