【破産確率】Excelで確率の問題を解く!③
本シリーズでは、Excelの関数を用いて使って確率の問題を解いていきます。コードをコピペしながら読み進めていただければ幸いです。最後に、この記事をもとに作成したExcelファイルをご用意しています!サクッと試したい方、きれいなレイアウトで確認したい方はぜひご利用ください!
【問題】60%の確率で儲かり、40%の確率で損をする。この賭けを続けた場合、破産する確率はどのくらいか。
今回も、確率の問題として比較的有名な問題を取り上げていきます。もう少し具体的に問題を設定しましょう。
現在あなたは10円を所持しながら、上記のゲームに参加しています。ゲームを1回終えた時点で、60%の確率であなたは賭けに勝利し、所持金は11円になっています。一方で、40%の確率で賭けに負け、あなたの所持金は9円になってしまいます。
この賭けが終わる条件は、次のうちのどちらかが満たされたときです。
①あなたの所持金が0になる
②あなたが儲けたい金額を手に入れ賭けをやめる
②の儲けたい金額を、今回は10円としましょう。つまり、所持金が20円になった時点であなたはこの賭けから降りることにします。
①前提条件を考える
今回は、モデルを考える前に前提条件を考えていきましょう。今回は、①賭けの勝率、②スタート時の所持金、③いくら儲けたら賭けをやめるか、を前提条件とします。この3つの数字を後から変更できるようにExcelを作成すれば、後々さまざまなシナリオをシミュレーションをすることができます。
例えば、勝率が下がったらどの程度破産確率が上がるか、スタート時の所持金が増えたらどのくらい破産しにくくなるのか、といった具合です。
前提条件①賭けの勝率
B4セル
=0.6
前提条件②スタート時の所持金
B5セル
=10
前提条件③いくら儲かったら賭けをやめるか(賭けをやめるときの所持金)
B6セル
=20
これらのセルを参照し、前提条件を踏まえたモデルを作成していきましょう。
①モデルを考える
今回のモデルでは、〇〇セルから取得されるスタート時の所持金が変化していきます。E11セルに初期値を参照しましょう。
=$B$5
また、F10セルには賭けの回数を入力しましょう。
=COLUMN()-5
次に、下記の数式をF11セルにコピペしてください。
=IF(RAND()<$B$4,E11+1,E11-1)
RAND関数は、0から1までの実数を返す関数です。この値が、前提条件である勝率より小さければ所持金にプラス1した値を返します。もし勝率より大きな値が出れば、所持金にマイナス1した値を返します。
このF10セル・F11セルを横にひとつずらすことで、賭けに参加する回数が1回増えることになります。問題文にある「賭けを続けたら」の部分ですね。回数が少ないと、破産もせず十分な儲けも得られません。例えば、横に5つしか伸ばさなかった場合、最大で5円の儲け、5円の損になりどっちつかずです。なので、次の操作をしましょう。
F10セル・F11セルの2セルを選択し、
右端をクリックしてGW列まで右にぐいーっとひっぱる
200セル分引っ張りましょう!特にこの数字でなければだめ、というわけではありません。ですが、数字を大きくすればするほど、理論値に近づいていきます。
また、今回も判定用に行番号を入力していきましょう。A10セルに次の関数を入力します。
=ROW()-10
③判定する!
それでは、それぞれの試行が「破産」なのか、「十分な儲け」なのか、はたまたそのどちらでもない「引き分け」なのかを判定していきましょう。今回の場合で言えば、100回の賭けに参加する間、所持金が1円から19円の範囲に収まっていた場合引き分けになります。
C11セル
=IFERROR(MATCH(0, $F11:$GW11,0 ), MAX($10:$10)+1)
D11セル
=IFERROR(MATCH($B$6, $F11:$GW11, 0), MAX($10:$10)+1)
1つめの関数は、初めて破産した時点を返します。MATCH関数を用いて、選択した範囲の中で0が初めて出現した場所を表しています。2つ目の関数は、初めて十分な儲けに到達した時点を返します。
この2つの時点を比較し、数字が早い方をその試行の結果とします。例えば、初めて0が発生する時点が30、初めて十分な儲けに到達した時点が50だったとしましょう。その場合、たとえ後半に十分な儲けを得ていても、途中それより前に破産しているわけですから、その試行は「破産」として判定します。
破産と十分な儲けのどちらにも到達しなかった場合、「引き分け」という値を返します。次の関数をB11セルに入力してください。
=IF(C11=D11,"引き分け",IF(C11<D11,"破産","勝ち"))
今回も、1行が試行1回分になります。試行回数を増やすために、次は縦にぐいーっと引っ張りましょう。
A11セルからGW11セルを選択し、
右端をクリックして下にぐいーっとひっぱる
A列の数字が300になるまで引っ張っていきましょう!
④集計する!
それでは仕上げとして、勝ち(十分な儲け)、破産、引き分けの状態をそれぞれ集計していきましょう。
E2セル
=MAX(A:A)
E3セル
=COUNTIF(B:B, "勝ち")
E4セル
=COUNTIF(B:B, "破産")
E5セル
=COUNTIF(B:B, "引き分け")
上から順番に、それぞれ「勝ち」「破産」「引き分け」の回数を数えています。これらの数字を使って、確率を計算していきます。
E6セル
=E4/(E2-E5)
E2セル(試行回数)からE5セル(引き分けの回数)を引いた値が分母になり、分子にはE4セル(破産した回数)がきています。このセルが破産確率を表しています。
次に理論確率ですが、こちらはとても複雑です。漸化式を使っても解くことができます。
E7セル
=IFERROR((((1-B4)/B4)^B5-((1-B4)/B4)^B6)/(1-((1-B4)/B4)^B6), 1-B5/B6)
B4セル、B5セル、B6セルの前提条件をもとに計算されているので、前提条件を変更するとこちらの理論確率も変化していきます。
では最後に、シミュレーションの確率と理論値の比較をしていきましょう。
E8セル
=E7-E6
今回の場合、破産確率の理論値は1.7%ほどになります。シミュレーションを300回ほどに設定するのがおすすめです。
【忙しい人向け】きれいなエクセルファイル
今回の手順をもとにしたExcelファイルはこちらです!サクッと試してみたい方、時間の取れない方、きれいなレイアウトで見たい方はぜひご活用ください!
サンプルは300回の試行をした状態ですので、いろいろな回数で試してみてください!