めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

お年玉問題をまじめに計算する

何の話かと言うと

こまかい条件は忘れたのですが、こんな確率(?)の問題を見かけました。

「2つの封筒のそれぞれにお金が入っていて、一方には他方の2倍の金額が入っている。好きな方をあげると言われて、一方を開けたら1万円入っていた。ここで、今ならもう一方に交換してもよいと言われた。この場合、もう一方に入っている金額は、5千円か2万円のどちらかである。5千円と2万円の確率は五分五分だから、交換した時の期待値を計算すると \displaystyle\frac{1}{2}\times 5,000 \displaystyle+\frac{1}{2}\times 20,000 で、12,500円。つまり、期待値は1万円より大きいのだから、交換した方が得になる。(これホント?)」

さあ、この議論はどこまで信用していいのでしょうか?

結論から言うと、「5千円と2万円の確率は五分五分」と頭ごなしに決めつけた所に問題があります。他に参照できる情報がないと、人間は直感的にすべての出来事は均等に起きると思い込むところを突いたトリックです。この問題を数学的に(確率論的に)きちんと議論するには、もう少し前提条件を明らかにする必要があります。この記事では、この問題をまじめに確率の問題として取り扱うとどうなるかを紹介します。

まじめに計算するとどうなるか

もう少し話を現実的にするために、これは、ちょっと意地の悪い叔父さんがお年玉をあげようとしている状況だと考えてみましょう。この場合、まずは、この叔父さんが2つの封筒にいくらの金額を入れるのか、という点を考える必要があります。どう考えても、あらゆる金額を均等な確率で入れるとは思えません。そこで、一般的に、こんな風に問題を設定します。

2つの封筒をA、Bとして、まずAに入れる金額を決めます。この叔父さんが封筒Aに x 円入れる確率を P_A(x) とします。そして、封筒Bにはその2倍の 2x 円を入れます。つまり、封筒Bに x 円入っている確率を P_B(x) として、

 \displaystyle P_B(x) = P_A\left(\frac{x}{2}\right) ----- (1)

が成り立ちます。(厳密にはこの等式には問題があるのですが、その点は後ほど解説します。)

次に、封筒を選ぶ人は、どちらが A でどちらが B か分からないので、均等な確率で一方を選ぶものとします。そして、封筒を開けた時に入っていた金額が x 円だったとします。

ここで、封筒を交換した方が得かどうかは、最初に選んだ封筒が A であるかどうかによって決まります。A なら交換した方が得ですし、B なら交換すると損します。そこで、封筒を開けた時に入っていた金額が x 円だった時に、これが封筒 A である条件付き確率を計算します。みなさん得意のベイズの定理でOKですね。

  \displaystyle P(A\mid x) = \frac{P(x\mid A)P(A)}{P(x)} ----- (2)

先ほどの前提より、封筒 A を選んだ時に x 円入っている確率 P(x\mid A)P_A(x) になります。P(A) は封筒 A を選ぶ確率で、これは \displaystyle\frac{1}{2} です。また、分母にある、封筒に関係なく x 円入っている確率 P(x) は、A と B を選ぶ確率がどちらも \displaystyle\frac{1}{2} であることから、

 \displaystyle P(x) = \frac{1}{2}P_A(x)+\frac{1}{2}P_B(x)

と決まります。これらを (2) に代入して整理すると、

 \displaystyle P(A\mid x) =\frac{P_A(x)}{P_A(x)+P_B(x)}

が得られます。同様に、封筒を開けた時に入っていた金額が x 円だった時に、これが封筒 B である条件付き確率は次になります。

 \displaystyle P(B\mid x) =\frac{P_B(x)}{P_A(x)+P_B(x)}

したがって、封筒を交換した際に得られる金額の期待値は、次で計算されます。

 \displaystyle E = 2xP(A\mid x)+\frac{x}{2}P(B\mid x)

冒頭の乱暴な議論では、封筒が A である確率と B である確率がどちらも \displaystyle \frac{1}{2} と決めつけられていた点が、ここでは、それぞれ、条件付き確率 P(A\mid x)P(B\mid x) に置き換えられていることが分かります。これに前述の結果を代入すると、次が得られます。

 \displaystyle E = \frac{2P_A(x)+\frac{1}{2}P_B(x)}{P_A(x)+P_B(x)}\times x ----- (3)

これが、いま分かっている金額 x 円よりも大きければ交換した方が得ですので、 E > x とおいて整理すると、次になります。

 \displaystyle P_A(x) > \frac{1}{2}P_B(x)

最後に (1) を代入して、

 \displaystyle P_A(x) > \frac{1}{2}P_A\left(\frac{x}{2}\right) ----- (4)

が結論となります。つまり、最初に叔父さんが封筒 A に入れる金額の分布 P_A(x) が分かれば、上記の条件によって、交換した方が得かどうかが決まるというわけです。

確率論の期待値と「俺が期待する値」の違いについて

上記の (3) が確率論的に決まる「封筒を交換した際に得られる金額の期待値」ということになりますが、こんな反論の声が聞こえてきそうです。

「そうは言っても、実際には、P_A(x) やら P_B(x) は俺にはわからないのだから、そんな期待値を計算することはできない。最初に A を選ぶか B を選ぶかはやっぱり五分五分(P(A)=P(B)=1/2)なんだから、交換して得をするのか損をするのかは五分五分に決まっている。つまり、交換した際の期待値は、\displaystyle E=2xP(A)+\frac{x}{2}P(B)=\frac{5x}{4} になるはずだ」

さあ、これには、どのように反論できるでしょうか? ここで重要なのは、「期待値」の意味です。確率論における期待値というのは、「同じ実験を何度も繰り返した際の平均値」であって、「俺が期待する値」ではない、という点です。

確かに反論の通り、お年玉をもらう側には、P_A(x)P_B(x) は明かされていませんが、だからと言って、これらの値がこの世に存在しないというわけではありません。一番最初に A と B を選ぶ確率は五分五分ですが、x の値が決まった時点で、A の可能性と B の可能性は均等ではなくなっているのです。たとえば、ランダムに金額を決めた2つの封筒のペアを10000組用意しておき、それぞれのペアに対して「俺」のコピーを1人づつ割り当てて、AかBを均等な割合で選ばせるのです。10000人の中では、AとBの選択は均等ですが、この中で特定の金額 x を発見した「俺」のグループだけを作ると、そのグループの中では、AとBの割合は決して均等ではありません。これが、条件付き確率 P(A\mid x) = P_A(x),\ P(B\mid x)=P_B(x) の意味になります。したがって、x を決めた上で、封筒を交換した際の期待値を計算したければ、このグループの中における平均値を計算する必要があります。

10000人の俺のコピーの代わりに、1人の「俺」が同じ実験を10000回繰り返したとしても同じでしょう。10000回の実験の中で、x という金額を目にした場合だけに限定すると、やはり、AとBの割合は均等ではなくなり、その結果、交換した際の平均値は、(3) で決定されることになります。P_A(x)P_B(x) の値が「俺」にはわからないとしても、同じ実験を10000回繰り返すことは可能です。そして、その結果得られる平均値(すなわち、確率論的な期待値)は、俺の知らない P_A(x)P_B(x) に従って決定されます。自分が持っている情報の範囲で「俺が期待する値」と、実際に実験を繰り返した時の平均値は、必ずしも一致しないという点に注意が必要です。

やや極端な例で言うと、出る目に偏りがあるイカサマサイコロに対して、それがイカサマということを知らされていない俺が「1〜6の目が均等にでる」と期待するのは自然なことです。それでも、そのサイコロを何度も振ると、実際に得られる平均値は、俺の期待通りにはなりません。

最後の「確率モデルの考え方」に実際の実験結果も示してあるので、そちらも参考にしてください。

一様分布の矛盾について

ここまで説明したように、(3) の関係式は、確率論として間違いなく正しい関係式です。それでは仮に、叔父さんが宇宙一の大富豪で、あらゆる金額を均等の確率で封筒に入れると仮定するとどうなるでしょうか? これは、P_A(x) が一様分布、すなわち、P_A(x)=C (一定)ということです。すると、\displaystyle P_A(x)=P_A\left(\frac{x}{2}\right)(=P_B(x)) となって、形式的には (4) が常に成立して、交換した方が必ず得をするという冒頭の議論が成り立ちます。

なのですが・・・冷静に考えて、A と B を選ぶ割合は均等なのに、交換した方が必ず得をするって変ですよね。実は、この議論には、二つ落とし穴があります。まず、今の議論では、x は金額、すなわち、自然数の離散値を考えていますので、 x が奇数だった場合 (1) の関係は成り立ちません。封筒をあけて入っていた金額が奇数だった場合、これは、確実に封筒 A だと分かってしまうのです。次に、A に入れる金額の選択肢が N 種類あるとすると、一様分布の場合、\displaystyle P_A(x) = \frac{1}{N} となるので、N\to\infty の極限ですべての P_A(x) はゼロになります。つまり、単純に(上限の無い)あらゆる金額に対する均等の確率というものを考えることはできません。一旦、有限の N に対して「封筒を交換した場合の期待値」を計算して、その後で、N\to\infty の極限を取る必要があります。

それでは、これらを考慮して、一様分布の場合の期待値をまじめに計算してみましょう。まず、A に入れる金額の分布は次の通りです。

 \displaystyle P_A(x) = \begin{cases} \frac{1}{N} & (x = 1,2,\cdots,N) \\ 0 & ({\rm Others})\end{cases}

これより、B に入る金額の分布は次になります。

 \displaystyle P_B(x) = \begin{cases} \frac{1}{N} & (x = 2,4,\cdots,2N) \\ 0 & ({\rm Others})\end{cases}

P_B(x) が値を持つのは、x が偶数の場合のみに限定されている点に注意してください。そして、これらの場合分けに基いて計算すると、(3) で計算される期待値は次のようになります。ここでは、簡単のために N が偶数の場合のみを考えます。

(i) x=1,3,\cdots,N-1 の場合:\displaystyle P_A(x)=\frac{1}{N},\,P_B(x)=0 より、\displaystyle E = 2x

x が奇数であれば、選んだ封筒は確実に A ですので、封筒を交換すれば金額は2倍になると断言できるわけです。

(ii) x=N+2,N+4,\cdots,2N の場合:\displaystyle P_A(x)=0,\,P_B(x)=\frac{1}{N} より、\displaystyle E = \frac{x}{2}

xN より大きければ、選んだ封筒は確実に B ですので、封筒を交換すれば金額は半分になると断言できますね。

(iii) x=2,4,\cdots,N の場合:\displaystyle P_A(x)=\frac{1}{N},\,P_B(x)=\frac{1}{N} より、\displaystyle E = \frac{5x}{4}

これは、金額を見ても A か B の判別がつかない場合です。この場合は、冒頭の議論のように交換した方が確実に期待値は増えます。

以上の結果を見ると、N が大きくなると、交換した方が得をするケース (i)(iii) の上限 N はどんどん大きくなりますが、一方で、交換した方が損をするケース (ii) の上限 2N も一緒に大きくなります。N\to\infty の極限を取ると、見かけ上 (i)(iii) のケースがすべてを占めるように見えますが、実際には(N の値が有限である限り)、(ii) のケースは存在しつづけるので、やはり、交換した方が絶対得をする(期待値が必ず増える)とは言えないことになります。

そして最後に、最初の封筒に入っていた金額に関わらず、必ず交換した場合に手に入る金額の期待値を計算してみましょう。これは、上記のような複雑な場合分けは不要です。最初にAを選んだ場合とBを選んだ場合の2種類だけを考えれば十分です。

まず、最初にAを選んだ場合、最初の金額は、1,2,\cdots,NN 通りあり、封筒を交換した際に得られる金額は、2,4,\cdots,2N になるので、その期待値は、

 \displaystyle E_A = \frac{1}{N}\sum_{k=1}^N 2k

となります。一方、最初にBを選んだ場合、最初の金額は、2,4,\cdots,2NN 通りあり、封筒を交換した際に得られる金額は、1,2,\cdots,N になるので、その期待値は、

 \displaystyle E_B = \frac{1}{N}\sum_{k=1}^N k

となります。最初にAを選ぶかBを選ぶかは均等なので、結局、全体としての平均は、

 \displaystyle \frac{1}{2}E_A+\frac{1}{2}E_B = \frac{3}{2N}\sum_{k=1}^Nk

と決まります。

それでは一方で、最初に選んだ封筒をそのままキープした場合はどうなるでしょうか? ・・・・もうお気づきと思いますが、上記の E_AE_B が入れ替わるだけですね。

 \displaystyle E_A = \frac{1}{N}\sum_{k=1}^N k

 \displaystyle E_B = \frac{1}{N}\sum_{k=1}^N 2k

まったくもって当たり前ですが、封筒を交換してもしなくても、手に入る金額の期待値(何度も実験を繰り返した時の平均値)は変わらないことになります。

確率モデルの考え方

確率論では、まずはじめに、「基本事象とその確率」を定義するところからすべての議論が始まります。この問題の場合、「封筒 A に入れる金額 x」が基本事象で、P_A(x) がその確率です。これを設定することにより、「確率論の期待値と「俺が期待する値」の違いについて」で説明した、「実験を繰り返す」という作業が可能になります。つまり、コンピューターの乱数によって、設定した確率(割合)で基本事象を何度も発生させて、その後に何が起きるかを観察するのです。

実は、この考え方は、確率論を理解するための(教科書では意外と強調されていない)超重要なポイントになります。

現実世界には、さまざまな不確定性を持った現象がありますが、それが不確定である根本原因はさまざまです。(サイコロの目が不確定な根本原因は、サイコロを投げる手の筋肉の微妙な動作の違いかも知れませんし、サイコロを投げた机の微妙な傾斜の違いかも知れません。)しかしながら、真の根本原因を探るのはとても困難なので、そこには目をつぶって、まずは、何らかの「確率」をえいやっと設定して、これをもとに上述のコンピューターシミュレーションを何度も繰り返すのです。そして、シミュレーションの結果が、現実世界の現象と一致すれば、それでよしとしようと言うわけです。このように、真の根本原因を一旦無視して、「基本事象とその確率」に置き換えたシミュレーションの世界を「確率モデル」と言います。

もちろん、適当に作った確率モデルが簡単に現実世界と一致するわけではないので、たとえば、現実世界の観測データから逆に確率モデルを調整する(確率モデルに含まれるパラメーターをチューニングする)という作業を行います。これが、「モデル推定」です。あるいは、自分が作った確率モデルが本当に現実の観測データにマッチしているかを検証します。これが、「仮説検定」です。

従って、モデル推定も仮説検定も、今自分がどのような確率モデルを前提として、そのチューニングをしているのか、あるいは、その検証をしているのかを明示しないと正当な議論はできません。繰り返しになりますが、ここで言う「確率モデル」は、「基本事象とその確率」のセットです。これを明示しないで、「この仮説の検定結果は云々・・・」と議論している文献を見た際は、これはちょっと怪しい・・・と考えた方がよいかも知れません。(検定手法ごとに暗黙の前提で、使用する確率モデルが決められていることもありますが、個人的にはあまりよい慣習とは思っていません。検定を行う作業者自身が確率モデルの内容を理解しないまま、その問題にとって適切ではない検定手法を機械的に適用している可能性もあるためです。)

では、ここで最後に、この「お年玉問題」のコンピューターシミュレーションを実施して置きましょう。

一例として、基本事象とその確率を次のように設定します。

 \displaystyle P_A(5000) = \frac{1}{2},\ P_A(10000) = \frac{1}{2}

叔父さんは、5000円か10000円を均等な割合で封筒 A に入れるという設定です。この時、「最初に選んだ封筒に入っていたお金が10000円だった場合、封筒を交換した方が得である」という冒頭の主張を実地検証してみます。

具体的には、次のアルゴリズムを実行します。「最初に選んだ封筒に入っていたお金が10000円だった場合」という前提付きの実験なので、そうでない状況のデータは捨てる必要がある点に注意してください。(この捨てる操作により、x を決めた後のAとBの割合に偏りが生じるわけですね。)

(1) A と B に上述の確率でお金を入れる。(B には A の2倍の金額を入れる)
(2) A か B を適当に選択して、入っていたお金が10000円であれば、もう一方の封筒に入っている金額を記録する。
 (2') 100000回分の記録が集まったら、その平均値を出力して終了する。そうでなければ (1) に戻る
(3) 入っていたお金が10000円でなければ何もせずに (1) に戻る。

そして実際の実験結果はこちらです。ここでは、次の3種類の設定を試しています。念のため、それぞれの設定ごとに5回ずつ上記のシミュレーションを繰り返しています。

 \displaystyle P_A(5000) = \frac{1}{2},\ P_A(10000) = \frac{1}{2}

 \displaystyle P_A(5000) = \frac{2}{3},\ P_A(10000) = \frac{1}{3}

 \displaystyle P_A(5000) = \frac{3}{4},\ P_A(10000) = \frac{1}{4}



お年玉問題のシミュレーション

「まじめに計算するとどうなるか」で議論した通り、\displaystyle P_A(10000) = \frac{1}{2}P_B(10000) (= \frac{1}{2}P_A(5000)) が損をするか得をするかのボーダーラインになっていることがよく分かりますね。