はじめに
この記事は統計学入門1のを読んだことをまとめた振り返り記事です。
問題
東京都内のA医大病院は、救急患者のために常時4床の空ベッドを確保しているという。ここへ収容される救急患者数Xがλ=2.5の
ポアソン分布Po(2.5)に従うとき、ベッドが不足する確率を計算せよ。
※ポアソン分布は
Po(λ)=x!λxe−λ
を満たす確率分布です。
解答
ベッドが不足するということは患者が4人以上いるときですので、その確率はP(X≥4)に対応します。つまりP(X>4)=1−P(X≤4)となります。P(X≤4)はまさに累積分布関数F(x)です。結局やっていることは
P(X≥4)=1−P(X≤4)=1−F(4)=1−e−2.5(0!2.50+1!2.51+2!2.52+3!2.53+4!2.54)≃0.1088
の計算になります。プログラミングで計算すると下記のようになります。
import kotlin.math.exp
import kotlin.math.pow
fun factorial(n: Int, acc: Int = 1): Int {
if (n == 0) return acc
return factorial(n - 1, n * acc)
}
fun poissonDistribution(lambda: Double, x: Int): Double {
return exp(- lambda) * lambda.pow(x.toDouble()) / factorial(x).toDouble()
}
fun main() {
val x = 4
val lambda = 2.5
var sum = 0.0
for (k in 0..x) {
sum += exp(-lambda) * lambda.pow(k) / factorial(k)
}
println("F(x) = $sum")
println("P(X <= 4) = ${1.0 - sum}")
}
参考文献
リポジトリ