先日、日ごろから興味を持っていたことについて、モンテカルロ・シミュレーションを用いて調査した。
そこで、今回行った調査結果についてメモに残しておく。
もっとも、もう一度やり直すことになると考えているが。
1 背景
私が「日ごろから興味を持っていたこと」とは次のような疑問である。
半々で勝ち負けが決まる勝負を相当回数(例えば、100回、1000回)実施した場合、最大何連勝(何連敗)くらいを経験しうるのか
このことを調べるために、モンテカルロ・シミュレーションを実施した(計算に拠らなかった理由は後述)。
ただ、モンテカルロ・シミュレーションによって調べるためには、この疑問をモデル化する必要がある。
そこで、上の問いを次のように書き換えた。
(以下、変数を使って具体化した問題)
あるコインがある。
このコインを使ってコイントスしたとき、表が出る確率がpとする。
このコインを使ってコイントスをn回連続して行った。
このn回のコイントスにおいて表が連続して出た回数の最大値をmとする。
mの平均値や偏差値はいくつになるか。
・・・すごく風呂敷の広い問いとなってしまった。
というのも、私はm(n,p)の一般式を求めたいわけではないからである。
そこで、nとpに具体的な数値を代入する。
(以下、変数を使わないで具体化した問題)
コイントスしたとき、表と裏が半々の確率で出るコインがある(p=0.5)。
このコインを使ってコイントスを100回連続して行った(n=100)。
この100回のコイントスにおいて表が連続して出た回数の最大値をmとする。
mの平均値や偏差値はいくつになるか。
50%の確率で表が出たり裏が出たりする場合、表が出る回数の期待値はコイントスの回数の半分で表現できる。
また、表が出る回数の標準偏差は(試行回数の平方根の半分)で表現できる。
これらの結果は二項分布の公式を使えば容易に分かる。
これに対して、私が知りたいのは「どれくらい連続するのか」である。
というのも、50%の確率で表が出る(裏が出る)としても、表と裏が交互に出るわけではないからである。
つまり、今回は「連続」といった観点に注目して調査を行うことにした。
2 調査方法
この点、「連続した回数の最大値」を計算で求めるのは容易ではない。
何故なら、最初の具体的なモデルにおいてコイントスの回数(n)は100となっていて、相当大きな数になっているからである。
そこで、今回はモンテカルロ・シミュレーションによって調査することにした。
次に、モンテカルロ・シミュレーションのサンプル数は1000とした。
というのも、「感覚的にこの辺」ということが分かれば十分だからである。
本来なら、1000では全然足らないだろうが(最低1万、できれば100万)。
さらに、今回はエクセルで調査することにした。
というのも、エクセルのセルや関数を使えば楽に計算できるからである。
なお、サンプル数が1000になったのは、エクセルを使っていることも理由の一つになっている。
なお、将来的には、RubyかPythonによってプログラムを組んで調査する予定である。
サンプル数が1000では全然足らないような気がするからである。
3 調査結果(n=100、p=0.5の場合)
では、今回の調査結果をば。
コイントスの回数が100回、表が出る確率が50%の場合、1000回のモンテカルロ・シミュレーションによる平均値と標準偏差は次の通りとなった。
※ n=100、p=0.5において(試行回数1000)
表が出た回数 平均値 49.97回、標準偏差5.07回
最も連続して表が出た回数 平均値5.94回 標準偏差1.76回
この点、n=100、p=0.5の場合、「表が出た回数」の平均値や標準偏差を2項分布の公式から計算すると、平均値が50回、標準偏差が5.0回となる。
この計算結果と上のシミュレーション結果を比較すると、今回のシミュレーション結果は概ね理論値と重なり、シミュレーションとして大きな問題がないと言える。
そのうえで、連続して表が出た回数の最大値を見ると、平均値は約5.9回、標準偏差は1.76回となった。
ここで、強引に「この結果と無限回数行った結果が等しい」と考えて考察する。
この場合、半々の勝負を100回実施した場合、6連勝、6連敗といった事実は十分に経験しうると言える。
逆に、有意水準5%という基準で考えた場合、10連勝以上、2連勝以下といったことは生じにくい(棄却される)と言うこともできそうである。
この結果を見ると、「結構ばらつくんだなあ」と感じる次第である。
4 別のケースの場合
せっかくなので、パラメーターをいじって遊んでみよう。
まず、コイントスの回数を100回から1000回に増やしたらどうなるか。
モンテカルロ・シミュレーションによる結果は次のとおりである。
※ n=1000、p=0.5において(試行回数1000回)
表が出た回数 平均値 500.66回、標準偏差16.17回
最も連続して表が出た回数 平均値9.33回 標準偏差1.8回
n=1000、p=0.5の場合、「表が出た回数」の平均値や標準偏差を2項分布の公式から計算すると、平均値が500、標準偏差が15.8となる。
この計算結果と上のシミュレーション結果を比較すると、今回のシミュレーション結果は概ね理論値と重なり(やや標準偏差が高くなっているが)、シミュレーションとして大きな問題がないと言える。
そして、連続して表が出た回数の最大値の平均値は9.33回、標準偏差は1.8回となった。
同じように、強引に「この結果と無限回数行った結果と等しい」と仮定する。
この場合、半々の勝負を1000回実施した場合、9連勝、9連敗といった事実は十分に経験しうることになる。
逆に、有意水準5%の基準で考えた場合、14連勝以上、5連勝以下といったことは生じにくい(棄却される)、と言える。
こちらの結果を見ても「結構ばらつくんだなあ」と感じる次第である。
なお、nは100か1000とし、pを0.25、0.75に動かした場合の結果は次の通りであった。
こちらは結果のみ掲載しておく。
※ n=100、p=0.25において
表が出た回数 平均値 25.05回、標準偏差4.25回
最も連続して表が出た回数 平均値3.06回 標準偏差0.97回
※ n=1000、p=0.25において
表が出た回数 平均値 250.1回、標準偏差13.91回
最も連続して表が出た回数 平均値4.72回 標準偏差0.96回
※ n=100、p=0.75において
表が出た回数 平均値 74.9回、標準偏差4.58回
最も連続して表が出た回数 平均値12.8回 標準偏差4.1回
※ n=1000、p=0.75において
表が出た回数 平均値 749.9回、標準偏差13.77回
最も連続して表が出た回数 平均値20.5回 標準偏差4.35回
以上、ランダムを連続の関係を調べてみた。
意外に連勝(連敗)はばらつくんだなあ、と感じた次第である。
ランダムが絡む場合、連勝、連敗といった結果に心理的に振り回されないことが重要である、と言えるだろうか。
では、今回はこの辺で。