誕生日パラドックス


誕生日が同じなど偶然的?に何かが一致する場合に
- 運命(何か共通性がある)か
- 本当に偶然
かを知りたい。

Rだとpbirthdayとかqbirthdayという関数が用意されている。
40人学級で少なくとも一組は同じ誕生日となるのは、
> pbirthday(40)
[1] 0.8884
88%もある。
(*結構、計算誤差が出やすい数値なよう。pbirthdayのhelpにapproximateとかいてある。後ろの方で書く。)

逆に50%の確率で一組は居るという集団(クラス)の数を知りたい場合は、
>qbirthday(0.5)
[1] 22
22人学級だと半々で一組は居ると。
(* birthdayで見ると、birthday(22) => 0.499, pbirthday(23) => 0.5301。これは概算。
正確には23人で、1 - prod(364:(364- (23-2)) / rep(365, (23-1)))  => 0.5073 となる。
正確性を求める場合で、同じ場合が二つの場合は、自分で計算した方が良いと、、、
まあ、メンドなのでそのままいく。


この関数自体は、デフォルト引数が、確率 => 0.5 場合数(classes) => 365(誕生日数)、一致組数(coincident)=2
なので、引数を変えて、
三組いる確率が5%になる集まった人数を知りたいとなると、
qbirthday(prob=0.05, coincident=3)
[1] 34
34人学級には5%の確率で3人が同じ誕生日を持つことに成りうる。

3人同じ誕生日の人がいるという集団のシチュエーションを期待したいなら、8割がたで、
 qbirthday(prob=0.8, coincident=3)
[1] 109
109人集めれば良い。ダメでも、同じようなラベル候補としては、、思いつかん。365分の1は偉大かも。

同じ誕生ならかなり少なくて良い。前提が荒いけど、、
qbirthday(prob=0.5,classes=12, coincident=3)
[1] 8
8人集まれば、3人同月生まれ同盟が組める、その可能性は5割。

通常の人間の感覚より確率は高いので心理的な効果を設計することもできそう。
セミナーなんかで、ランダムのグループを作るより、偶然を装って、何かの一致をキーにグルーピングさせるとか、、、人間の心理的傾向の一面

確率を勉強するセミナーには、、、参加者に余計な負荷がかかるだけか。

グラフも簡単、ここでは関数を使わず、計算式でだした。一致人数が増えたら、関数 pbirthdayを使う方が手早いみたいだ。
> plot(1-sapply(10:50, function(n){prod((364:(365-n+1))/rep(365,(n-1)))}),type="l")
> abline(h=seq(0.2,0.8,by=0.2),col = "lightgray", lty=1)
横軸が集団の人数。Yが確率。




Comments