Excelで確率変数を実現する方法(1)

Excelで確率的な振る舞いをシミュレートするには、確率変数を作り出す必要があります。Excelには0から1までの一様分布に従った乱数を発生させる関数RAND()がありますので、これを利用します。

ある確率変数Xが0から1までの一様分布に従う確率変数であるとすると、そのような確率変数をExcelのあるセルに発生させるには、そのセルに「=RAND()」と入力すればよいことが分かります。では、0から2までの一様分布に従う確率変数X_2を発生させるにはどうしますか? ちょっと考えればこれは「=2*RAND()」でよいことが分かります。では2から4までの一様分布に従う確率変数X_3の場合はどうでしょう? これは「=2*RAND()+2」になりますね。


ある確率密度関数f(x)を持つような確率変数をExcel上で発生させるにはどうしたらよいでしょうか? それを考えるために、先ほどの3つの例について分布関数とExcelに入力した関数を比較してみます。


最初のXの場合は

次のX_2の場合は

最後のX_3の場合は


これだけ見てもお互いの関係がよく分かりません。そこでf(x)から累積確率関数F(x)を求めて、それらを比較することにします。累積確率関数F(x)

  • F(x)=\Bigint_{-\infty}^xf(t)dt

で定義されます。そうすると


Xの場合は

X_2の場合は

X_3の場合は


上には、累積確率関数のグラフも一緒に示しました。上の累積確率関数とExcelへの入力を比較すると、どうやらExcelにはF^{-1}(RAND())と入力すればよいらしいことが分かります。ここでF^{-1}(y)F(x)逆関数を表します。ここから類推すると、ある確率密度関数f(x)を持つような確率変数をExcel上で発生させるには

  • 1.累積確率関数F(x)を求める。
  • 2.その逆関数F^{-1}(x)を求める。
  • 3.上で求めたF^{-1}(x)xのところに「RAND()」を入れた形のExcelの数式をExcelのセルに入力する。


ということになりそうです。