ポアソン分布

ポアソン分布[Poisson distribution]は,$n$人が住む地域における一日に発生する交通事故件数などに用いられる.任意の一人が1日に交通事故に遭ってしまう確率を $p$ とした時の,その地域全体における交通事故の発生件数などがポアソン分布によって表現される.なお,その地域における交通事故の1日の平均発生件数は $\lambda=n \times p$ である.

Juliaを用いて,ポアソン分布[Poisson distribution]を描く.

以下で,$k$ の値は期間[例えば1日]におけるイベント発生[例えば交通事故]の回数を意味する.つまり,$k=1$ は,1日で1件の交通事故が発生する確率.$k=2$ は,1日で2件の交通事故が発生する確率を意味する.

using Plots

# 高精度計算用のfactorial関数
function factorial_big(n::BigInt)
n == 0 ? big(1) : n * factorial_big(n - 1)
end

# ポアソン分布のpmf[確率質量関数]を定義する関数[高精度版]
# BigIntやBigFloatは多精度の整数や浮動小数点数を表す型.
# BigIntやBigFloatにより,オーバーフロー等の問題が起きにくくなる.
function poisson_pmf(λ::BigFloat, k::BigInt)
return (λ^k * exp(-λ)) / factorial_big(k)
end

# 期間[例えば1日]におけるイベント発生の件数を
# 1件から49件までとする.
x = 1:49

# ポアソン分布のpmf[確率質量関数]を計算[高精度版]
y1 = [poisson_pmf(big(10.0), big(i)) for i in x]
y2 = [poisson_pmf(big(20.0), big(i)) for i in x]
y3 = [poisson_pmf(big(30.0), big(i)) for i in x]

# 平均λ=10, 20, 30のポアソン分布のpmf[確率質量関数]をプロット
plot(x, y1, seriestype=:bar, alpha=0.5, color=:red, label="Poisson λ=10")
plot!(x, y2, seriestype=:bar, alpha=0.5, color=:green, label="Poisson λ=20")
plot!(x, y3, seriestype=:bar, alpha=0.5, color=:blue, label="Poisson λ=30")

xlabel!("x")
ylabel!("Probability Mass Function")
title!("Poisson Distributions")


INDEX