どうもExcelマクロではポアソン分布に従う乱数を一行で書くのは無理らしい。正規分布やガンマ分布などの乱数は一行で書けるのだが。
そこでガンマ分布の逆関数を使ってポアソン分布に従う乱数を作成してみた。
(実際にはガンマ分布でα=1とした指数分布を使う)
ポアソン分布の数式は
P(α)=λαe−λα!
λ=1.2としたとき、ポアソン分布の事象発生回数αを出力するコードは
これを使ったモンテカルロシミュレーションでヒストグラムを描くとn=300のとき
n=5000のとき
理論値と一致することを確認できた。
数式の理論的な意味はこのサイトにある。
そこでガンマ分布の逆関数を使ってポアソン分布に従う乱数を作成してみた。
(実際にはガンマ分布でα=1とした指数分布を使う)
ポアソン分布の数式は
P(α)=λαe−λα!
λ=1.2としたとき、ポアソン分布の事象発生回数αを出力するコードは
Dim alpha As Integer
Dim lambda, temp As Double
lambda = 1.2
alpha = 0
temp = WorksheetFunction.GammaInv(Rnd(), 1, 1 / lambda)
Do While temp < 1
temp = WorksheetFunction.GammaInv(Rnd(), 1, 1 / lambda) + temp
alpha = alpha + 1
Loop
これを使ったモンテカルロシミュレーションでヒストグラムを描くとn=300のとき
n=5000のとき
理論値と一致することを確認できた。
数式の理論的な意味はこのサイトにある。
コメント