一定の期間に、まれにしか起きない出来事が何回起きたかを数えたとき、その回数が従う分布がポアソン分布です。転倒、入院、感染、機器の故障のように「0回、1回、2回……」と数えられ、上限がはっきりしない出来事を扱います。
## 馬に蹴られて死んだ兵士
ボルトキエヴィチ(Ladislaus Bortkiewicz)が1898年の著書『少数の法則』で、プロイセン陸軍で馬に蹴られて死亡した兵士の記録を紹介しています。ポアソン分布が知られるきっかけになったデータです。
10個の軍団を20年間(1875-1894年)観察し、「ある軍団のある1年」を1つの観測単位として200件を数えました。
| 1年間の死亡数 | 軍団・年の数 | ポアソン分布から計算した数 |
|---------------|--------------|----------------------------|
| 0 | 109 | 108.7 |
| 1 | 65 | 66.3 |
| 2 | 22 | 20.2 |
| 3 | 3 | 4.1 |
| 4 | 1 | 0.6 |
死亡は全部で122件、1軍団・1年あたり平均0.61件です。この平均だけを使って計算した右端の列が、実際の観測とほぼ重なります。
馬に蹴られる事故は、兵士一人ひとりにとってはめったに起きず、誰かが蹴られても、別の誰かが蹴られやすくなることはありません。この「まれ」「互いに独立」という条件が揃うと、回数はポアソン分布に従います。
## 平均と分散が等しい
ポアソン分布は λ(ラムダ)という1つの値だけで形が決まります。そして平均と分散がどちらも λ に等しいという性質を持ちます。
$E[X] = V[X] = \lambda$
確率質量関数は次の形です。k が観測される回数です。
$P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}$
ふつうの連続データでは平均と分散は別々の値ですが、ポアソン分布では一致します。馬のデータで確かめると、平均が0.61、分散が0.611でした。
手元の件数データで平均と分散を計算し、両者が大きく離れていたら、ポアソン分布の想定が崩れているサインになります。
## R で確かめる
```r
deaths <- 0:4
corps_years <- c(109, 65, 22, 3, 1)
# 平均(λ)を求める
lambda <- sum(deaths * corps_years) / sum(corps_years)
lambda
```
```
[1] 0.61
```
`dpois()` が、λ を与えたときに各回数が起きる確率を返します。200倍すれば期待される軍団・年の数になります。
```r
round(dpois(deaths, lambda) * 200, 1)
```
```
[1] 108.7 66.3 20.2 4.1 0.6
```
分散も計算します。
```r
x <- rep(deaths, corps_years) # 200件のデータに展開する
c(平均 = mean(x), 分散 = var(x))
```
```
平均 分散
0.6100000 0.6109548
```
## λ が変わると形も変わる
λ は「1単位の期間に平均何回起きるか」を表します。λ が小さいと0に偏った形になり、λ が大きくなるにつれて山が右へ移り、左右対称に近づきます。
```r
par(mfrow = c(1, 3))
for (lam in c(0.5, 2, 8)) {
barplot(dpois(0:20, lam), names.arg = 0:20,
main = paste("λ =", lam), xlab = "回数", ylab = "確率")
}
```
λ が10を超えるあたりから正規分布で近似できる形になりますが、医学で扱う件数データは λ が小さいことが多く、0が最も多い非対称な形になります。件数データに線形回帰を当てはめると予測値が負になりうるのは、この非対称性を無視しているためです。
## ポアソン分布に見えないとき
実際のデータでは、平均と分散がずれることがよくあります。
**分散が平均より大きい(過分散)**
転びやすい人が繰り返し転ぶように、同じ人の中で出来事が集中すると起こります。独立という前提が崩れている状態です。負の二項分布を使うか、`quasipoisson` で標準誤差を補正します。
**0が極端に多い(ゼロ過剰)**
そもそも転ぶ可能性がない集団(寝たきりで移動しない人など)が混ざっていると、0が想定より多くなります。ゼロ過剰ポアソンモデルを使います。
**観察期間が人によって違う**
これは分布の問題ではなく、数え方の問題です。1年追跡した人と3か月追跡した人の件数をそのまま比べられません。回帰でオフセット項を使って調整します。詳しくは [[R - Poisson回帰をやってみよう]] を参照してください。
> [!NOTE] 二項分布との違い
> 「100人中何人」のように分母が決まっていて、1人が2回以上は数えられない場合は二項分布です。ポアソン分布は分母が時間であり、同じ人が何回でも数えられる点が違います。転倒は同じ人が年に3回転ぶことがあるので、ポアソン分布で扱います。
## 関連項目
- [[R - Poisson回帰をやってみよう]]
- [[Stata - Poisson回帰]]
- [[率・割合・比 を区別して使う]]