理学療法士がまとめたノート

統計学備忘録(R言語のメモ)

since2016 ときどきTEXのメモ

モンティ・ホール問題

モンティ・ホール問題
投稿日2017.8.30

モンティ・ホール問題、モンティ・ホール・ジレンマ
Rを使って何とか解いてみようと思います.
3つのドアのうち1つのドアの後ろには高級車(車の扉)があり、残りの2つのドアにはヤギ(ヤギの扉)がいます。司会者は、どのドアの後ろに高級車があるのかを知っています。
f:id:yoshida931:20170828134106p:plain:w500
あなたが1つのドアを選んだ(最初の扉)あと、司会者はあなたが選んでいない2つのドアの1つのドアを開けてヤギがいることを教えてくれます。
f:id:yoshida931:20170828134251p:plain:w350
そして司会者は・・・
「はじめに選んだドア(最初の扉)のままでもよいし、いま閉じられているドアを選択してもよい」と言ってきました。司会者はウソはつきません。あなたははじめに選択したドアのままにしますか?それともドアを変更しますか?
出典:稲葉由之 ;プレステップ統計学II 推測統計学,弘文堂,2013,p30

残り二つの扉、どちらを選択しても確率は1/2のように思えるのですが・・・
嘘みたいですけど、このことが長年大論争になったそうです.今回は、Rを使って確率の勉強をしてみたいと思います.
f:id:yoshida931:20170828133803p:plain:w550

このように考えると、扉を変更した方が2/3になりそうだけど・・・1/2じゃない
10回、100回、1000回・・・やったらどうなるかいな?
ということでRを使ってシミュレーションを実行してみます

まず扉のNoを1,2,3とします
f:id:yoshida931:20170828140316p:plain

扉には doors <- c(1:3) という名前をつけます.
車の扉、最初の扉、ヤギの扉をランダムに割り当ててみます.
もちろん車の扉=最初の扉の場合もありますので、「車の扉」と「最初の扉」の抽出は復元抽出になります.

sampleを使用してランダム抽出します

car <- sample(doors, 1)
you <- sample(doors, 1)


扉を変えない場合

notcha <- function(x){

  doors <- c(1:3)
  x <- 0

  car <- sample(doors, 1)  #ランダム抽出で車の扉を設定
  you <- sample(doors, 1)  #ランダム抽出で最初の扉を設定

  if(car == you){          #もし最初の扉に車の扉だったら1点加える
  x <- x + 1
  }
  return(x)
}
 notcha()


 y <- 0
for(i in 1:10000) {  # fro(i in 1:n){} ・・・{}をn回繰り返す
  y <- y + notcha()
}
y

10000回実施したら3302回でした.約1/3です.


扉を変えた場合

chan <- function(x){
  x <- 0
  doors <- c(1:3)

  car <- sample(doors, 1)   #ランダム抽出で車の扉を設定
  you <- sample(doors, 1)   #ランダム抽出で最初の扉を設定

  if(you == car){
    x <- x + 0      #最初に選んだ扉に車がある場合、0点となります 
    }else{
    x <- x + 1     #最初の扉に車がない場合、残るヤギの扉は司会者が明けているので、必ず車の扉を選択することになります
  }
  return(x)
}
chan()


y <- 0
for(i in 1:10000) {   # fro(i in 1:n) {} ・・・{}をn回繰り返す
  y <- y + chan()
}
y

10000回実施した確率は6656回でした.約2/3です.

 
こんな解き方では異論が多いと思いますので、スマートな方法をネットで検索してみてください
f:id:yoshida931:20170831141158p:plain