「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【モンテカルロ法情報倉庫】「円周率」「平方根」「モンティホール問題」など。

f:id:ochimusha01:20190923041709g:plain

ある事象をモデル化した数式や関数があるとき、その定義域に含まれる値をランダムにたくさん生成して実際に計算を行い、得られた結果を統計的に処理することで推定値を得ることができる。数式を解析的に解くのが困難あるいは不可能な場合でも数値的に近似解を求めることができる。

確率論の大数の法則により、試行の回数を増やせば増やすほど解の精度は高まり、無限回の試行を行うと誤差は0に収束することが知られる。

コンピュータでモンテカルロ法の計算を行う場合、値が毎回異なり分布が完全にランダムな真の乱数列を得るには専用のハードウェアが必要になるため、分布の乱雑さは乱数とほぼ変わらないが、一定の計算手順によって確定的に与えられる疑似乱数を用いることが多い。

 歴史

第二次大戦中、米ロスアラモス国立研究所原子爆弾開発計画に従事していた核物理学者のスタニスワフ・ウラム(Stanislaw Ulam)がこの手法の原型を考案し、同僚の数学者ジョン・フォン・ノイマンJohn von Neumann)が戦後、自ら開発したばかりのコンピュータENIACで実際に計算を行いその有効性を実証した。

この計算手法は軍事機密としてコードネームが与えられることになったが、二人の同僚の物理学者ニコラス・メトロポリスNicholas Metropolis)が、ウラムの叔父がモナコモンテカルロにあるカジノで借金を抱えた話に着想を得てモンテカルロ法Monte Carlo method / Monte Carlo simulation)という名称を考案し、これが採用されて今日までこの名で呼ばれることになった。

円周率の計算
統計言語Rによる実現例コンセプト

N<-1000

x <- runif(N, min=-1, max=1)
y <- runif(N, min=-1, max=1)

# アスペクト比1:1で、x軸y軸ともに-1〜+1の範囲をプロット
plot(x, y, asp=1, xlim=c(-1,1), ylim=c(-1,1), main="Monte Carlo simulation",xlab="Real Expanse", ylab="Imaginal Expanse")

par(new=T)#上書き指定
theta00<- seq(0, -2*pi, length=360)
theta_cos<-cos(theta00)
theta_sin<-sin(theta00)
plot(theta_cos,theta_sin,asp=1,xlim=c(-1,1), ylim=c(-1,1), type="l", main="",xlab="", ylab="")

# グリッド線を加える
grid()

f:id:ochimusha01:20190923040544p:plain

  • 点が散布された正方形の面積は2*2=4
  • 半径はr=1なので円の面積はπ*1^2=π
  • πの値は正方形内部の点(1000個)と円内部の点の個数(count)の比と等しくなるはずである。従ってπ≈4*count/Nとなる。

count <- sum(x*x + y*y < 1)
count
>[1] 759
4 * count / N
>3.036

 統計言語Rによる実現例色分け対応

N<-1000
x0 <- runif(N, min=-1, max=1)
y0 <- runif(N, min=-1, max=1)
x_in<-c(NULL)
y_in<-c(NULL)
x_out<-c(NULL)
y_out<-c(NULL)
for (i in 1:N){
if(x0[i]*x0[i]+y0[i]*y0[i]<1)
{x_in<-c(x0[i],x_in);y_in<-c(y0[i],y_in)}
else
{x_out<-c(x0[i],x_out);y_out<-c(y0[i],y_out)}
}

# アスペクト比1:1で、x軸y軸ともに-1〜+1の範囲をプロット
plot(x_in, y_in, asp=1,col=rgb(1,0,0), xlim=c(-1,1), ylim=c(-1,1), main="Monte Carlo simulation",xlab="Real Expanse", ylab="Imaginal Expanse")

par(new=T)#上書き指定
plot(x_out,y_out,asp=1,col=rgb(0,0,1),xlim=c(-1,1), ylim=c(-1,1),main="",xlab="", ylab="")

# グリッド線を加える
grid()

f:id:ochimusha01:20190922203237p:plain

アニメーションさせてみる。

Monte_Carlo_simulation01<-function(x){
#xの値(試行回数)は実際には使わない。

N<-1000
x0 <- runif(N, min=-1, max=1)
y0 <- runif(N, min=-1, max=1)
x_in<-c(NULL)
y_in<-c(NULL)
x_out<-c(NULL)
y_out<-c(NULL)
for (i in 1:N){
if(x0[i]*x0[i]+y0[i]*y0[i]<1)
{x_in<-c(x0[i],x_in);y_in<-c(y0[i],y_in)}
else
{x_out<-c(x0[i],x_out);y_out<-c(y0[i],y_out)}
}

# アスペクト比1:1で、x軸y軸ともに-1〜+1の範囲をプロット
plot(x_in, y_in, asp=1,col=rgb(1,0,0), xlim=c(-1,1), ylim=c(-1,1), main="Monte Carlo simulation",xlab="Real Expanse", ylab="Imaginal Expanse")

par(new=T)#上書き指定
plot(x_out,y_out,asp=1,col=rgb(0,0,1),xlim=c(-1,1), ylim=c(-1,1),main="",xlab="", ylab="")

# グリッド線を加える
grid()

}

library("animation")
Time_Code=c(1,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345)
saveGIF({
for (i in 1:16){
  Monte_Carlo_simulation01(i)
}
}, interval = 0.1, movie.name = "TEST001.gif")

f:id:ochimusha01:20190923041709g:plain

ヒストグラムHistgramとラグプロット(Rugplot)の描画

データの階級数を客観的に決定するための指標として,スタージェスの公式があり、データの個数をnとして階級数kk1+log(N,base=2)のように決定する.コマンド hist はデフォルトではこの式に基づいて階級数および階級幅を決定している.

ラグ(敷き物)プロットは一次元データをバーコード風に表現する。単独で使うものではないが、他のプロットの x,y 軸の飾りとして使うとなかなか見栄えがよい。

統計言語Rによる実現例

K <- 1000
N <- 100000
pi.est <- c(NULL)
for (k in seq(1,K)) {
x <- runif(N, min=-1, max=1)
y <- runif(N, min=-1, max=1)
count <- sum(x*x + y*y < 1)
pi.est<-c(4*(count/N),pi.est)
}
cat(sprintf("K=%d N=%d ==> pi=%f\n", K, N, mean(pi.est)))
## K=1000 N=100000 ==> pi=3.141659
hist(pi.est, breaks=50)
rug(pi.est)

結果例
K=1000 N=100000 ==> pi=3.141853

f:id:ochimusha01:20190923035812p:plain

 

アニメーションさせてみる。

MC_Hist01<-function(x){
#xの値(試行回数)は実際には使わない。

K <- 1000
N <- 100000
pi.est <- c(NULL)
for (k in seq(1,K)) {
x <- runif(N, min=-1, max=1)
y <- runif(N, min=-1, max=1)
count <- sum(x*x + y*y < 1)
pi.est<-c(4*(count/N),pi.est)
}
hist(pi.est, breaks=50)
rug(pi.est)

}

library("animation")
saveGIF({
for (i in 1:16){
  MC_Hist01(i)
}
}, interval = 0.1, movie.name = "MCH001.gif")

f:id:ochimusha01:20190923043618g:plain

統計言語Rによる実現例色分け/第一象限のみ

N<-1000
x0 <- runif(N, min=0, max=1)
y0 <- runif(N, min=-0, max=1)
x_in<-c(NULL)
y_in<-c(NULL)
x_out<-c(NULL)
y_out<-c(NULL)
for (i in 1:N){
if(x0[i]*x0[i]+y0[i]*y0[i]<1)
{x_in<-c(x0[i],x_in);y_in<-c(y0[i],y_in)}
else
{x_out<-c(x0[i],x_out);y_out<-c(y0[i],y_out)}
}

# アスペクト比1:1で、x軸y軸ともに-1〜+1の範囲をプロット
plot(x_in, y_in, asp=1,col=rgb(1,0,0), xlim=c(0,1), ylim=c(0,1), main="Monte Carlo simulation",xlab="Real Expanse", ylab="Imaginal Expanse")

par(new=T)#上書き指定
plot(x_out,y_out,asp=1,col=rgb(0,0,1),xlim=c(0,1), ylim=c(0,1),main="",xlab="", ylab="")

# グリッド線を加える
grid()

f:id:ochimusha01:20190922203405p:plain

アニメーションさせてみる。

Monte_Carlo_simulation02<-function(x){
#xの値(試行回数)は実際には使わない。

N<-1000
x0 <- runif(N, min=0, max=1)
y0 <- runif(N, min=0, max=1)
x_in<-c(NULL)
y_in<-c(NULL)
x_out<-c(NULL)
y_out<-c(NULL)
for (i in 1:N){
if(x0[i]*x0[i]+y0[i]*y0[i]<1)
{x_in<-c(x0[i],x_in);y_in<-c(y0[i],y_in)}
else
{x_out<-c(x0[i],x_out);y_out<-c(y0[i],y_out)}
}

# アスペクト比1:1で、x軸y軸ともに-1〜+1の範囲をプロット
plot(x_in, y_in, asp=1,col=rgb(1,0,0), xlim=c(0,1), ylim=c(0,1), main="Monte Carlo simulation",xlab="Real Expanse", ylab="Imaginal Expanse")

par(new=T)#上書き指定
plot(x_out,y_out,asp=1,col=rgb(0,0,1),xlim=c(0,1), ylim=c(0,1),main="",xlab="", ylab="")

# グリッド線を加える
grid()

}

library("animation")
Time_Code=c(1,15,30,45,60,75,90,105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345)
saveGIF({
for (i in 1:16){
  Monte_Carlo_simulation02(i)
}
}, interval = 0.1, movie.name = "TEST002.gif")

 

f:id:ochimusha01:20190923042510g:plain

ヒストグラムHistgramとラグプロット(Rugplot)の描画

K <- 1000
N <- 100000
pi.est <- c(NULL)
for (k in seq(1,K)) {
x <- runif(N, min=0, max=1)
y <- runif(N, min=0, max=1)
count <- sum(x*x + y*y < 1)
pi.est<-c(4*(count/N),pi.est)
}
cat(sprintf("K=%d N=%d ==> pi=%f\n", K, N, mean(pi.est)))
## K=1000 N=100000 ==> pi=3.141659
hist(pi.est, breaks=50)
rug(pi.est)

結果例
K=1000 N=100000 ==> pi=3.141352

f:id:ochimusha01:20190923040352p:plain

アニメーションさせてみる。

MC_Hist02<-function(x){
#xの値(試行回数)は実際には使わない。

K <- 1000
N <- 100000
pi.est <- c(NULL)
for (k in seq(1,K)) {
x <- runif(N, min=0, max=1)
y <- runif(N, min=0, max=1)
count <- sum(x*x + y*y < 1)
pi.est<-c(4*(count/N),pi.est)
}
hist(pi.est, breaks=50)
rug(pi.est)

}

library("animation")
saveGIF({
for (i in 1:16){
  MC_Hist02(i)
}
}, interval = 0.1, movie.name = "MCH002.gif")

f:id:ochimusha01:20190923044501g:plain

2の平方根を求める。

xを0〜2の範囲の一様乱数とし、その2乗(xを一辺とする正方形の面積)が2を超えるかどうかを計算する。

runif()は[0,1)の一様乱数であるから、x*2[0,2)の範囲となる。すなわち、xの値は以下のような性質を持つ。

  • x<1である確率は1/2
  • x<2である確率は2/2
  • x<sqrt(2)である確率はsqrt(2)/2

確率sqrt(2)/2は「x^2が2以下の回数÷全試行回数」で近似できるので、プログラム中ではsum(x^2<2) / N*2を計算した。

統計言語Rによる実現例コンセプト

N <- 10000
x <- 2 * runif(N)
sum(x^2 < 2) / N * 2
>[1] 1.4182

 ヒストグラムHistgramとラグプロット(Rugplot)のアニメーション

Sqrt2_01<-function(x){
#xの値(試行回数)は実際には使わない。
K <- 1000
N <- 100000
sqrt2.est <- c(NULL)
for (k in seq(1,K)) {

N <- 10000
x <- 2 * runif(N)
sqrt2.est<-c(sum(x^2 < 2) / N * 2,sqrt2.est)
}
hist(sqrt2.est, breaks=50)
rug(sqrt2.est)
}
library("animation")
saveGIF({
for (i in 1:16){
  Sqrt2_01(i)
}
}, interval = 0.1, movie.name = "Sqrt2_01.gif")

f:id:ochimusha01:20190923052104g:plain

モンティ・ホール問題Monty Hall problem)。

あるクイズゲームの優勝者に提示される最終問題。3つのドアがあり、うち1つの後ろには宝が、残り2つにはゴミが置いてあるとする。優勝者は3つのドアから1つを選択するが、そのドアを開ける前にクイズゲームの司会者が残り2つのドアのうち1つを開け、扉の後ろのゴミを見せてくれる。ここで優勝者は自分がすでに選んだドアか、それとも残っているもう1つのドアを改めて選ぶことができる。さて、ドアの選択を変更することは宝が得られる確率にどの程度影響があるのだろうか。

なんと確率が約2倍ちがう。つまり、いちど手にしたものは放したくなくなるという「保有バイアス」にあらがって扉の選択を変えることで、2倍の確率で宝を得ることができる。

統計言語Rによる実現例コンセプト

N <- 10000
prize.at <- floor(runif(N) * 3) + 1 # 宝があるドア (1, 2, or 3)
initial.guess <- floor(runif(N) * 3) + 1 # 最初の選択 (1, 2, or 3)
switch.door <- floor(runif(N) * 2) # ドアを変えるか (1:yes or 0:no)

# ドアを変更して宝が手に入る場合の数を計算
switch.win <- (initial.guess != prize.at) & (switch.door==1)

# ドアを変更せずに宝が手に入る場合の数を計算
stay.win <- (initial.guess == prize.at) & (switch.door==0)

# それぞれの確率を求める
sum(switch.win) / sum(switch.door==1)
## [1] 0.664993
sum(stay.win) / sum(switch.door==0)
## [1] 0.3393746

結果例オッズとしては前者が後者の2倍

[1] 0.6675835
[1] 0.3266802

オッズのヒストグラムHistgramとラグプロット(Rugplot)表示

MHP.est<-c(NULL)
for(i in 1:1000){
#iの値(試行回数)は実際には使わない。
N <- 10000
prize.at <- floor(runif(N) * 3) + 1 # 宝があるドア (1, 2, or 3)
initial.guess <- floor(runif(N) * 3) + 1 # 最初の選択 (1, 2, or 3)
switch.door <- floor(runif(N) * 2) # ドアを変えるか (1:yes or 0:no)
# ドアを変更して宝が手に入る場合の数を計算
switch.win <- (initial.guess != prize.at) & (switch.door==1)
# ドアを変更せずに宝が手に入る場合の数を計算
stay.win <- (initial.guess == prize.at) & (switch.door==0)
# それぞれの確率を求める
a<-sum(switch.win) / sum(switch.door==1)
b<-sum(stay.win) / sum(switch.door==0)
#オッズを記録
MHP.est<-c(a/b,MHP.est)

}
hist(MHP.est, breaks=50)
rug(MHP.est.est)

f:id:ochimusha01:20190923062449p:plain

モンティ・ホール問題(Monty Hall problem) - Wikipedia

確率論の問題で、ベイズの定理における事後確率、あるいは主観確率の例題の一つとなっている。モンティ・ホール(Monty Hall, 本名:Monte Halperin)が司会者を務めるアメリカのゲームショー番組、「Let's make a deal」の中で行われたゲームに関する論争に由来する。一種の心理トリックになっており、確率論から導かれる結果を説明されても、なお納得しない者が少なくないことから、ジレンマあるいはパラドックスとも称される。「直感で正しいと思える解答と、論理的に正しい解答が異なる問題」の適例とされる。

なお、モンティ・ホール問題と実質的に同型である「3囚人問題」については、かつて日本で精力的に研究された。

 

概要

ゲームの内容は以下である。

f:id:ochimusha01:20190923073817p:plain

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

1990年9月9日発行、ニュース雑誌「Parade」にてマリリン・ボス・サヴァントが連載するコラム「マリリンにおまかせ」で、上記の読者投稿による質問に「正解は『ドアを変更する』である。なぜなら、ドアを変更した場合には景品を当てる確率が2倍になるからだ」と回答した。すると直後から、読者からの「彼女の解答は間違っている」との約1万通の投書が殺到し、本問題は大議論に発展した。

答えをめぐっての騒動投書には、1000人近い博士号保持者からのものも含まれていた。その大部分は「ドアを変えても確率は五分五分2分の1であり、3分の2にはならない」とするものであった。サヴァントは投書への反論を試み、同年12月2日、数通の反論の手紙を紹介した。

  • ジョージ・メイソン大学 ロバート・サッチス博士「プロの数学者として、一般大衆の数学的知識の低さを憂慮する。自らの間違いを認める事で現状が改善されますフロリダ大学
  • スコット・スミス博士「君は明らかなヘマをした中略世界最高の知能指数保有者である貴女が自ら数学的無知をこれ以上世間に広める愚行を直ちに止め、恥を知るように!サヴァントは、より簡易にした表を掲載「ドアを変えれば勝てるのは3回の内2回、負けるのは3回の内1回だけ、しかしドアを変えなければ勝てるのは3回の内1回だけ
  • E・レイ・ボボ博士「(前略現在、憤懣やるかたない数学者を何人集めれば、貴女の考えを改める事が可能でしょうか?

この問題に関する1991年2月17日付、3回目の記事の段階でサヴァントに対する反論は9割程度を占める。

  • 現実が直観と反する時、人々は動揺する」とサヴァントはコラムで反論の声に応じ、下記の説明を試みる。「司会者がドアを開けてみせた直後にUFOがステージに到着して宇宙人が出てきたと仮定する。人間の出場者が最初に選んだ扉を宇宙人は知らずに司会者がまだ開けられていない2つの扉のどちらかを選択するよう宇宙人に勧めると、この時の確率が五分五分になる。しかし、それは宇宙人が本来の出場者が司会者から得たヒントを知らないためである。仮に景品が扉2にある場合司会者は扉3を開ける。扉3に景品がある場合は扉2を開ける。つまり景品が扉2または扉3にあるなら、出場者が扉の選択を変えれば勝利する。『どちらかでも勝てるのです!』でも扉を変えなければ、扉1に賞品がある場合しか勝てないのです。

サヴァントの再再々解説でも大論争へと発展、「彼女こそ間違っている」という感情的なジェンダー問題にまで飛び火した。

  • プロ数学者ポール・エルデシュの弟子だったアンドリュー・ヴァージョニがモンティーホールジレンマをモンテカルロ法を使って自前のパーソナルコンピュータで数百回のシミュレーションを行うと、結果はサヴァントの答えと一致。エルデシュは「あり得ない」と主張していたがヴァージョニがコンピュータで弾き出した答えを見せられサヴァントが正しかったと認める。しかし、これはゲームの暗黙のルール(後述のゲームのルールを参照)について誤解があったと思われている。後、カール・セーガンら著名人らがモンティーホール問題を解説、サヴァントの答えに反論を行なっていた人々は、誤りを認める。
    *要するにこれが今回の計算部分

サヴァントは、「最も高い知能指数を有する者が、子供でもわかる些細な間違いを新聞で晒した」等の数多くの非難に対して3回のコラムをこの問題にあて、激しい反論の攻撃に耐えて持論を擁護し通し、証明した。それによると、ドアの数を100万に増やした例まで挙げて説明しても正しく理解してもらえなかったとのことである。

  • なお、サヴァントの本の183頁以降に、ミズーリ大学のドナルド・グランバーグ教授が補遺を記載している。それによると、モンティ・ホールジレンマに関しては、コラムでの議論ののちに、「アメリカン・スタティスティシャン」「アメリカン・マスマティカル・マンスリー」「マスマティカル・サイエンティスト」「マスマティクス・ティーチャー」「ニューヨークタイムズ」等の媒体で細部まで議論され、その結果、サヴァントの解答は基本的に正しいとされたとのことである。

ゲームのルール(1) 3つのドア (A, B, C) に(景品、ヤギ、ヤギ)がランダムに入っている。(2) プレーヤーはドアを1つ選ぶ。(3) モンティは残りのドアのうち1つを必ず開ける。(4) モンティの開けるドアは、必ずヤギの入っているドアである。(5) モンティはプレーヤーにドアを選びなおしてよいと必ず言う。このうち (3) と (4) の条件が重要である(ベイズの定理でいう事後確率が有効になる)。 もし (3) が決められていなければ、例えば開けるかどうかモンティが決められるなら、このゲームはプレーヤーとモンティの心理戦であり、確率の問題ではない。 また、(4) の条件次第では答えが逆になったり、答えを定めることができなくなる。つまり、モンティが景品を出してしまう可能性があるなら、問題の大前提が変わってしまう。

大騒ぎとなった原因のひとつは、ルールに対する数学的な説明が無く「解釈」の余地があったことで、数学的に正しいルールが決まるまで決着が付かなかった。事後確率の例題としては、ルールはもちろん守られており、司会者モンティとプレーヤーの参加者はルールを事前に把握して、その他の者は番組の視聴者(であるからルールは当然わかっているはず)という大前提があるが、この前提がプロ数学者らの盲点を突く事になる。

  • エルデシュはこの問題の解答を最初に間違いだと断定、立腹して外出する。一時間程経過してから帰って来るはずの時間ではないエルデシュがカンカンに怒って帰ってきてこの問題(と解)をエルデシュに教えた弟子を「君はなぜ選択を変更するのか言ってくれなかった!どうして言わなかったのか!」といらだった様子で問い詰める。これには弟子も説明が出来ず師に謝罪。エルデシュは益々不機嫌になったという。

直感と理論の乖離この問題を巡る人々の反応は、冒頭のエピソードにある様に『どちらを選んでも変わらない』とする意見が多かった。

  • ドアが2つになった時点でプレーヤーが改めてコイントスによって決めなおしたと仮定すると、景品を得る確率は1/2となる。 ところが、2枚のドアの価値はルール (1) - (4) で確率の高い(価値のある)選択をすることが可能となっている。つまり、『どちらを選んでも変わらない』は誤りである。

以下のように考えると直感でも理解しやすい。

  • 最初プレーヤーがあたりを引く確率は1/3である。ドアを変更しない場合はそのまま1/3の確率である(変更しないのであればモンティがドアを開けようが開けまいが確率は変わらない)。
  • モンティがドアを開けた後にドアを変更する場合、最初に選択したドアがハズレであれば変更後のドアはあたりが確定である。つまり、最初に選択したドアがはずれである確率=ドアを変更した場合にあたりを引く確率である。
  • 最初の選択であたりを引く確率は1/3、はずれを引く確率は2/3である。ゆえに、ドアを変更した場合のあたりを引く確率は2/3と考えられる。

また、こうも考えられる。

  • ゲームには100枚のドアが使われるとする。プレーヤーが最初のドアを選んだとき、このドアの当たりの確率は100分の1である。モンティが残り99枚のドアのうち98枚を開けてヤギを見せる。プレーヤーは2回目の選択をする。最初にプレーヤーが選んだ1枚のドアと「残り99枚のうちで、正解を知っているモンティが開こうとしなかった、ただ1枚のドア」の確率が相違していることは、直感で理解が可能であろう。

あるいは、こう考えることもできる。

  • プレーヤーは1回目の選択をする。この時点では確率は全て等しい。番組側は残りのドアをひとまとめにし、どれを開けても結果は共通と宣言する。
  • プレーヤーは2回目の選択をする。プレーヤーが最初に選択することにより、ひとまとめの対象から(番組側から見てランダムに)外されたドアと、残りすべてのドアでは、価値が等しくないことは明らかである。

また、この様に確率論の基になっている統計の考え方を呼び起こすことで、理解を助けられた実験もある。

擬似パラドックス

この問題はパラドックスであるといわれることがある。

  • 最初からドアが1つ開いた状態で、2つのドアから1つを選ぶという問題であったなら、確率は 1/2 である。
  • それに対して、このゲームによってドアが1つ開いた状態になった場合には、確率は 1/3 と 2/3 になる。

このように確率が異なることがパラドックスといわれる理由である。しかし、これは確率の計算に矛盾があるわけではないので、擬似パラドックスである。ドアが2択になった経緯を知っているか知らないかの情報の差がドアの評価に影響しているだけである(単純な話、「最初にプレーヤーがドアを選択する時点での確率」と考えると理解しやすい。なお、1つドアが初めから開いた状態=単なる2択問題であり、モンティ・ホール問題は成立し得ない)。

変形問題

ルールを変更することで例題の理解を助けたり、統計論の別の課題を説明する試みが行われている。

  • 変更ルール1(4) モンティは景品のあるドアを知っている。どちらを開けるかコイントスで決めるが、選んだドアが景品の場合はもう片方のドアに変更する…このルールは結局ドアの選び方に変化はないので、解答は「開けるドアを変更する」である。
  • 変更ルール2(4) モンティは景品のあるドアを知らない。どちらを開けるかコイントスで決めるが、選んだドアが景品の場合は番組スタッフが中身を入れ替える…これは、前のルールで最後にモンティがドアの選択を変更していたところをスタッフが代わりにやっているだけであり、解答は「開けるドアを変更する」である。このルールではドアを変更したほうがよいことが直感的に分かる。残ったドアに景品が移動してくることはあっても、出ていくことはないからである。数値で示すと、プレーヤーが最初から正解していた確率は 1/3、モンティが正解して景品が移動した確率も 1/3、二人ともハズレであった確率も 1/3 である。景品は必ず最後の扉に移動するので、最後の扉に景品がある確率は 2/3 である。
  • 変更ルール3(4) モンティはどちらを開けるかコイントスで決め、中身にかかわらず開ける…モンティが景品を出してしまった場合はゲーム終了と仮定して、モンティがヤギを出したらプレーヤーはドアを変更すべきだろうか?この場合の正解はどっちを選んでも確率は 1/2 となり、変更してもしなくてもよいのである。モンティが景品を出す確率は1/3、ヤギを出す確率は 2/3 である。景品を出したらゲームは終了するので、ヤギを出した場合の2/3の内訳を考えると、プレーヤーが選んだドアに景品がある確率1/3と、最後のドアにある確率1/3になる。 この場合、プレーヤーもモンティも正解に関係なくドアを選ぶので、先に景品を入れる必要はなく、後から景品の位置をランダムに決めても結果は等価となる。
  • 変更ルール4(3) モンティは景品のあるドアを知っている。コイントスでヤギのドアの片方を選び、プレーヤーの選択にかかわらず開ける…モンティがプレーヤーの選んだドアを選んだ場合はゲーム終了と仮定して、モンティがヤギを出したらプレーヤーはドアを変更すべきだろうか?この場合も変更ルール3同様、変更してもしなくてもよいのである。
  • 変更ルール5(3) モンティは景品のあるドアを知っている。最初にプレーヤーが景品のあるドアを選んだ時に限り、ドアを開ける…このように変更すると、モンティがドアを開けない場合がある。もし、偶然にもモンティがドアを開けたとすると、プレーヤーはドアを変更すべきだろうか?この場合は当然答えは「開けるドアを変更しない」である。 このことから、モンティがドアを必ず開けるというルールは非常に重要だということが分かる。
  • 悪魔モンティ(5) モンティは景品のあるドアを知っていて、プレーヤーが景品のあるドアを選んだ時だけ、変更してよいという。
  • 天使モンティ(5) モンティは景品のあるドアを知っていて、プレーヤーがヤギのいるドアを選んだ時だけ、変更してよいという。

心理戦プレーヤーとモンティの心理戦を想定した例題も試みられている。駆け引きの内容を数値化することで、統計論的に解を求めることができる。

  • (5) モンティは景品のあるドアを知っていて、プレーヤーが景品のあるドアを選んだ時は100%の確率で、ヤギのいるドアを選んだ時は50%の確率で、プレーヤーが選ばなかったヤギのいるドアを開けて見せ、変更してよいという。
  • ナッシュ均衡による解では、変更したときに景品を得る確率は1/2となる。つまり、変更してもしなくても変わらない。

もとの例題ではルール (3) と (4) が重要とされるのが一般的だが、実はもう一つ重要な前提がある。それは、「プレーヤーが最初に当たりを選んだ場合に、モンティが残るドアのどちらを開けるかについて "癖がないランダムに選ぶ)" 」ことだ。例えば「プレーヤーが最初に当たりのドアAを選んだ場合は、モンティは必ずBを開く」という可能性があるとすれば、「マリリンの解答は間違っている」というのは必ずしも間違いではない。マリリンの答えは「癖がないランダムに選ぶ)」特殊な条件を想定したものである。確かに常識的仮定だが、数学的には当然視できるものではない。

 こうして、このサイトは遂に確率論の世界に足を踏み出す展開に…