統計学入門 第6章の問題 6.2 急患用ベッド数

はじめに

この記事は統計学入門1のを読んだことをまとめた振り返り記事です。

問題

東京都内のA医大病院は、救急患者のために常時4床の空ベッドを確保しているという。ここへ収容される救急患者数XXλ=2.5\lambda = 2.5の ポアソン分布Po(2.5){\cal Po}(2.5)に従うとき、ベッドが不足する確率を計算せよ。

※ポアソン分布は

Po(λ)=λxx!eλ {\cal Po}(\lambda) = \frac{\lambda^x}{x!} e^{-\lambda}

を満たす確率分布です。

解答

ベッドが不足するということは患者が4人以上いるときですので、その確率はP(X4)P(X \geq 4)に対応します。つまりP(X>4)=1P(X4)P(X > 4) = 1 - P(X \leq 4)となります。P(X4)P(X \leq 4)はまさに累積分布関数F(x)F(x)です。結局やっていることは

P(X4)=1P(X4)=1F(4)=1e2.5(2.500!+2.511!+2.522!+2.533!+2.544!)0.1088\begin{align*} P(X \geq 4) &= 1 - P(X \leq 4) \\ &= 1 - F(4) \\ &= 1 - e^{-2.5} \left( \frac{2.5^0}{0!} + \frac{2.5^1}{1!} + \frac{2.5^2}{2!} + \frac{2.5^3}{3!} + \frac{2.5^4}{4!} \right) \simeq 0.1088 \end{align*}

の計算になります。プログラミングで計算すると下記のようになります。

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}")
    // 0.1088
}

参考文献

リポジトリ

Footnotes

  1. 統計学入門 東京大学教養学部統計学教室編 東京大学出版会