モンティ・ホール問題をシミュレーションしてみた

モンティ・ホール問題をシミュレーションしてみた


いよいよ忘年会シーズン突入ですね。

私が所属する部署では、忘年会の余興として、全力で「翼をください」を合唱することになりました(当惑)

忘年会の出し物。昨年であれば、恋ダンス。今年ならブルゾンちえみでしょうか。

ダンスは絶望的に苦手なので、結構ホッとしています。

さて、今回はモンティ・ホール問題をシミュレーションしてみます。

数学科でも間違う方が多い問題ですが、なかなか面白いです。

また、こういった理屈が納得しにくい問題については、実際にシミュレーションして確かめてみると理解が捗ることと思います。

モンティ・ホール問題とは

以下、wikipediaからの引用です。

「プレーヤーの前に閉まった3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。
ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレーヤーはドアを変更すべきだろうか?」

プレーヤーはドアの変更をしてもしなくても、正解の扉を開ける確率は同じだ!

いやいや、モンティがドアを開いた後の2つから選んだら、正解を選ぶ確率は \( 1/2 \) じゃないか!

いろいろな声が聞こえてきそうですね。

ではサクッとシミュレーションで確かめてみましょう!

Rによるシミュレーション

統計解析言語Rを使って、モンティ・ホール問題をシミュレーションしてみます。

司会者モンティに促されてもドアを変更しなかった場合、変更した場合に分けてみていきましょう。

ドアを変更しなかった場合

まず、ドアを変更しなかった場合ですが、これは3つのドアから1つしかない正解のドアを開ける確率、つまり、\( 1/3 \)ということが直感的にも理解できると思います。

では実際に、10000回試行してどのくらいの成功確率になるのかをシミュレーションします。

# モンティホール問題
# 選択するドアを変更しない場合

# 試行回数
try_cnt <- 10000
# 得点(正解なら1点、不正解なら0点を加算)
score <- 0

for(i in 1:try_cnt){
    # 選んだドア
    chosen <- sample(1:3,1)
    # 正解のドア
    correct <- sample(1:3,1)
    # 選んだドアが成果の場合
    if(chosen == correct){
        score = score+1
    }
}
# 正解した割合
score/try_cnt

出力結果

[1] 0.3298

ほぼ \( 1/3 \) に収束していることがわかりますね。

ドアを変更した場合

次に、ドアを変更した場合をシミュレーションします。

モンティが開くドアは、ハズレのドアだということに注意して、以下のコードを書きます。

今回も試行回数は10000回としています。

# モンティホール問題
# 選択するドアを変更する場合

# 試行回数
try_cnt <- 10000
# 得点(正解なら1点、不正解なら0点を加算)
score <- 0

for(i in 1:try_cnt){
    # 選んだドア
    chosen <- sample(1:3,1)
    # 正解のドア
    correct <- sample(1:3,1)
    repeat{
        # モンティが選んだドア
        change <- sample(1:3,1)
        if(change != chosen && change != correct){
            # モンティが選んだドア以外を選択
            for(j in 1:3){
                if(j != change && j != chosen){
                    final_chosen <- j
                }
            }
            break
        }
    }
    # 選んだドアが成果の場合
    if(final_chosen == correct){
        score = score+1
    }
}
# 正解した割合
score/try_cnt

出力結果

[1] 0.6772

おや?以外な結果となりましたね。

これは確率 \( 2/3 \) ということです。

モンティ・ホール問題の解釈

なぜシミュレーション結果のようになったのか?

モンティ・ホール問題をわかりやすく解説してみます。
(ベイズの定理を使った数学的な証明はしません)

まず、ドアを変更しなかった場合についてですは、これは、最初に選んだドアが正解なのかどうかだけが確率の判断基準となっているので、確率は \( 1/3 \) です。

問題は、ドアを変更した場合です。

ここでは、最初に選んだドアが正解だった場合とハズレだった場合に分けて考察します。

まず最初に選んだドアが成功だった場合ですが、このときはドアを変更すると必ずハズレとなります。

次に、最初に選んだドアがハズレだった場合ですが、このときはドアを変更すると必ず正解となります。
(モンティはプレーヤーの選んだドア以外で、かつ、ハズレのドアのみを開くため)

以上のことから、最初に選んだドアが正解かハズレかに応じて、自動的に変更後の正解かハズレかがわかることになります。

つまり、以下が成り立つことになります。

・最初に正解のドアを選べば、ドア変更後はハズレ
・最初にハズレのドアを選べば、ドア変更後は正解

もうお分かりですね。

最初に選んだドアがハズレの確率 \( 2/3 \) がドア変更後に正解となる確率なのです!