ポアソン分布とは?期待値・分散・二項極限から負の二項まで徹底解説

1日にあなたのもとへ届くメールは何通でしょうか。あるWebサイトに1分間で来るアクセスは何件でしょうか。交差点で1時間に起きる事故は何件でしょうか。これらはどれも「単位時間あたりに、めったに起きないイベントが何回起きるか」という共通の構造を持っています。一つひとつの瞬間に起きる確率は小さいけれど、機会(瞬間)は無数にある——この状況をぴたりと記述するのがポアソン分布(poisson distribution)です。

ポアソン分布を理解しておくと、応用の幅が一気に広がります。たとえば、コールセンターやサーバーの待ち行列理論(単位時間あたりの到着件数のモデル化)、保険や品質管理における稀な事故・不良の件数の予測、そして自然言語処理や生物統計で登場するカウントデータの回帰(ポアソン回帰)。さらに、ポアソン分布は二項分布と正規分布のあいだをつなぐ「橋」でもあり、確率分布の全体像を理解するうえでも欠かせません。

本記事の内容

  • ポアソン分布の直感的な理解と確率質量関数の定義
  • 平均 = 分散 = $\lambda$ の省略なしの導出
  • 二項分布の極限としてポアソン分布が現れる仕組み
  • ポアソン過程・再生性・最尤推定・正規近似
  • 過分散と負の二項分布への発展
  • Pythonによる可視化・最尤推定・実データフィット

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

ポアソン分布の直感 — 稀なイベントの回数

ポアソン分布のイメージをつかむために、まず「めったに起きないこと」を思い浮かべてください。1分という時間を、ほんの一瞬ずつ無数の小さなコマに分割するとします。各コマでイベント(たとえばアクセス)が起きるかどうかはコイン投げのようなもので、起きる確率はごくわずかです。しかしコマの数は膨大なので、1分のあいだに合計すると、だいたい平均して何件かのイベントが起きます。

この「1回あたりの確率は小さいが、試行回数(機会)は非常に多い」という状況の極限が、まさにポアソン分布です。だからこそ、ポアソン分布は「稀なイベントの法則(law of rare events)」とも呼ばれます。

下の図は、平均発生回数 $\lambda$ を変えたときのポアソン分布の形を並べたものです。

ポアソン分布の確率質量関数をλ別に重ねた棒グラフ

この図から2つの特徴が読み取れます。第一に、$\lambda$ が大きくなるほど分布の山は右へ移動します。これは「平均的に多く起きる」状況に対応します。第二に、$\lambda$ が大きいほど山は低く、裾は広くなります。これは平均が増えると同時にばらつき(分散)も増えることを示唆しています。後の節で、この見た目の予想が「平均 = 分散 = $\lambda$」という形で厳密に成り立つことを確認します。

それでは、この曲線を生み出す確率質量関数を正確に書き下しましょう。

ポアソン分布の定義と確率質量関数

単位時間あたりの平均発生回数を $\lambda$ とするとき、実際に $k$ 回発生する確率は次式で与えられます。

$$ \begin{equation} P(X = k) = \mathrm{Poi}(k \mid \lambda) = \frac{\lambda^{k}}{k!}\, e^{-\lambda}, \quad k = 0, 1, 2, \dots \end{equation} $$

パラメータ $\lambda > 0$ は単位時間に事象が発生する平均回数を表します。冒頭の例でいえば、これまで1日に届いたメール数の平均を $\lambda$ に入れれば、明日 $k$ 通届く確率を $(1)$ 式で計算できる、というわけです。

この式の形には意味があります。$e^{-\lambda}$ は「(後で見るように)二項分布から極限を取ったときに残る項」であり、$\lambda^k / k!$ は「$k$ 回起きる組み合わせの効き方」を表しています。$k$ が増えるほど分子 $\lambda^k$ は増えますが、分母の階乗 $k!$ がそれを上回る速さで増えるため、$k$ が大きい領域では確率が急速に小さくなります。

ここで重要な性質を一つ確認しておきます。分母に階乗 $k!$ があり、階乗は非負の整数にしか定義されないため、ポアソン分布に従う確率変数 $X$ は 0以上の整数値しか取れません。つまりポアソン分布は離散型の確率分布です。

確率質量関数なので、全事象の確率を足すと1になるはずです。実際、指数関数のテイラー展開 $\sum_{k=0}^{\infty} \lambda^k / k! = e^{\lambda}$ を使うと、

$$ \sum_{k=0}^{\infty} \frac{\lambda^{k}}{k!}\, e^{-\lambda} = e^{-\lambda} \sum_{k=0}^{\infty} \frac{\lambda^{k}}{k!} = e^{-\lambda} \cdot e^{\lambda} = 1 $$

ときれいに1になります。この「指数関数のテイラー展開」は、これからの期待値・分散の導出でも繰り返し登場する主役なので、頭の片隅に置いておきましょう。

なお、$(1)$ 式は指数と階乗を含むため、数値計算では桁あふれを起こしやすく、対数をとった形がよく使われます。両辺の対数をとると、

$$ \begin{equation} \ln \mathrm{Poi}(k \mid \lambda) = k \ln \lambda – \lambda – \ln(k!) \end{equation} $$

となり、掛け算が足し算になって扱いやすくなります。最尤推定の節でこの対数形が活躍します。

定義が出そろったので、次は冒頭の図で予想した「平均 = 分散 = $\lambda$」を導出していきましょう。

ポアソン分布の期待値の導出

まず結論から述べます。ポアソン分布の期待値(平均)は

$$ E[X] = \lambda $$

です。ポアソン分布はもともと「単位時間あたり平均 $\lambda$ 回起きる」ことを表す分布なので、その平均が $\lambda$ になるのは当然といえば当然です。とはいえ、定義式から実際に導けることを確認しておきましょう。

期待値の定義は $E[X] = \sum_{k=0}^{\infty} k\, P(X=k)$ です。これに $(1)$ 式を代入します。

$$ \begin{split} E[X] &= \sum_{k=0}^{\infty} k\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} \\ &= \sum_{k=1}^{\infty} k\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} \end{split} $$

$k=0$ の項は $k$ が掛かっているのでゼロです。そこで和を $k=1$ から始められます。次に $k / k! = 1/(k-1)!$ を使って約分します。

$$ \begin{split} E[X] &= \sum_{k=1}^{\infty} \frac{\lambda^{k}}{(k-1)!}\, e^{-\lambda} \\ &= \lambda \sum_{k=1}^{\infty} \frac{\lambda^{k-1}}{(k-1)!}\, e^{-\lambda} \end{split} $$

ここで $\lambda^k = \lambda \cdot \lambda^{k-1}$ と分解し、$\lambda$ を和の外へくくり出しました。最後に、変数を $j = k-1$ と置き換えます。$k=1,2,3,\dots$ は $j=0,1,2,\dots$ に対応するので、

$$ E[X] = \lambda \sum_{j=0}^{\infty} \frac{\lambda^{j}}{j!}\, e^{-\lambda} = \lambda \cdot 1 = \lambda $$

を得ます。最後の和は、まさにポアソン分布の確率の総和そのものなので $1$ です。こうして期待値が $\lambda$ であることが導けました。

「平均が $\lambda$」という結果が、定義式の構造から自然に出てくるところがポイントです。次は分散を求め、これも $\lambda$ になることを確かめます。

ポアソン分布の分散を導出

ポアソン分布の分散もまた $\lambda$ です。

$$ \mathrm{Var}[X] = \lambda $$

分散を導くには、次の関係式を使うのが定番です。

$$ \begin{equation} \mathrm{Var}[X] = E[X^2] – (E[X])^2 \end{equation} $$

この式はあらゆる確率分布の分散導出で使える便利な公式なので覚えておきましょう。$E[X] = \lambda$ はすでに分かっているので、あとは $E[X^2]$ を求めれば $(3)$ 式から分散が出ます。

$E[X^2]$ を直接計算するのは少し厄介なので、$k^2 = k(k-1) + k$ と分解する技を使います。こうすると階乗との約分がきれいに進みます。

$$ \begin{split} E[X^2] &= \sum_{k=0}^{\infty} k^2\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} \\ &= \sum_{k=0}^{\infty} \{k(k-1) + k\}\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} \\ &= \sum_{k=0}^{\infty} k(k-1)\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} + \sum_{k=0}^{\infty} k\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} \end{split} $$

第2項は、前節で計算した期待値そのものなので $\lambda$ です。第1項を整理しましょう。$k(k-1)$ があるので $k=0,1$ の項は消え、$k(k-1)/k! = 1/(k-2)!$ と約分できます。

$$ \begin{split} \sum_{k=0}^{\infty} k(k-1)\, \frac{\lambda^{k}}{k!}\, e^{-\lambda} &= \sum_{k=2}^{\infty} \frac{\lambda^{k}}{(k-2)!}\, e^{-\lambda} \\ &= \lambda^2 \sum_{k=2}^{\infty} \frac{\lambda^{k-2}}{(k-2)!}\, e^{-\lambda} \end{split} $$

ここで $\lambda^k = \lambda^2 \cdot \lambda^{k-2}$ と分解しました。$j = k-2$ と置き換えると、和はまたしてもポアソン分布の総和となり $1$ になります。したがって第1項は $\lambda^2$ です。これらを合わせると、

$$ E[X^2] = \lambda^2 + \lambda $$

となります。最後に $(3)$ 式へ代入して、

$$ \mathrm{Var}[X] = E[X^2] – (E[X])^2 = (\lambda^2 + \lambda) – \lambda^2 = \lambda $$

を得ます。期待値も分散もどちらも $\lambda$ ——この「等平均・等分散性(equidispersion)」がポアソン分布の最大の特徴です。

実際にシミュレーションで確かめてみましょう。下の図は、さまざまな $\lambda$ について多数のサンプルを生成し、標本平均と標本分散を計算したものです。

λに対して標本平均と標本分散がともにλの直線に乗る散布図

標本平均(青丸)と標本分散(赤バツ)が、どちらも理論直線 $y = \lambda$ にぴたりと乗っているのが分かります。導出した「平均 = 分散 = $\lambda$」が、データの上でも確かに成り立っていることが確認できました。

この等分散性は後で重要になります。現実のデータでは「分散が平均より大きい」ことがよくあり、そのときポアソン分布では表しきれません。これが過分散の話につながりますが、その前に、そもそもなぜポアソン分布がこの形をしているのかを「二項分布の極限」として導いておきましょう。

二項分布の極限としての導出

ポアソン分布の定義式 $(1)$ は天下り的に見えますが、実は二項分布の極限として自然に現れます。これが「稀なイベントの法則」の数学的な中身です。

二項分布 $\mathrm{Bin}(n, p)$ は、成功確率 $p$ の試行を $n$ 回行ったときの成功回数の分布で、

$$ P(X = k) = \binom{n}{k} p^k (1-p)^{n-k} $$

でした。いま「機会の数 $n$ を非常に大きく、1回あたりの確率 $p$ を非常に小さく、しかし平均回数 $np = \lambda$ は一定に保つ」という極限を考えます。つまり $p = \lambda / n$ とおいて $n \to \infty$ とします。

まず二項係数を展開します。

$$ \binom{n}{k} p^k = \frac{n!}{k!(n-k)!}\left(\frac{\lambda}{n}\right)^k = \frac{\lambda^k}{k!} \cdot \frac{n!}{(n-k)!\, n^k} $$

ここで右側の因子を見ると、

$$ \frac{n!}{(n-k)!\, n^k} = \frac{n(n-1)\cdots(n-k+1)}{n^k} = \underbrace{1 \cdot \left(1-\tfrac{1}{n}\right)\cdots\left(1-\tfrac{k-1}{n}\right)}_{n\to\infty \text{ で } 1 \text{ に収束}} $$

となり、$n \to \infty$ で $1$ に近づきます。次に $(1-p)^{n-k}$ の部分を処理します。$p = \lambda/n$ を代入すると、

$$ (1-p)^{n-k} = \left(1 – \frac{\lambda}{n}\right)^{n-k} = \left(1 – \frac{\lambda}{n}\right)^{n}\left(1 – \frac{\lambda}{n}\right)^{-k} $$

ここで有名な極限 $\left(1 – \frac{\lambda}{n}\right)^{n} \to e^{-\lambda}$($n\to\infty$)を使います。また $\left(1 – \frac{\lambda}{n}\right)^{-k} \to 1$ です。これらをすべて合わせると、

$$ \lim_{n\to\infty} \binom{n}{k}\left(\frac{\lambda}{n}\right)^k\left(1-\frac{\lambda}{n}\right)^{n-k} = \frac{\lambda^k}{k!}\, e^{-\lambda} $$

となり、ポアソン分布の定義式 $(1)$ が現れました。$e^{-\lambda}$ の正体は「$(1-\lambda/n)^n$ の極限」だったわけです。

この極限の様子を図で見てみましょう。平均 $\lambda = 4$ を固定し、$n$ を増やしながら二項分布とポアソン分布を比べます。

nを増やすにつれ二項分布がポアソン分布に近づく3枚の棒グラフ

$n=8$ のときは二項分布(青)とポアソン分布(橙)にずれがありますが、$n$ を $20$、$100$ と増やすにつれて、両者はほとんど見分けがつかなくなります。これが「試行回数が多く成功確率が小さい二項分布は、ポアソン分布で近似できる」ことの視覚的な証拠です。実務では、$n \geq 50$ かつ $p \leq 0.1$ あたりがポアソン近似の目安とされます。

二項分布が「離散の機会の繰り返し」だったのに対し、機会を無限に細かくした連続時間版が次のポアソン過程です。

ポアソン過程との関係

ポアソン分布は静的な「回数の分布」ですが、これを時間軸に展開したものがポアソン過程です。ポアソン過程とは、イベントが「完全にランダムに、独立に、一定の率 $\lambda$ で」発生する過程のことです。

ポアソン過程では、長さ $t$ の区間で発生するイベント数 $N(t)$ がパラメータ $\lambda t$ のポアソン分布に従います。

$$ P(N(t) = k) = \frac{(\lambda t)^k}{k!}\, e^{-\lambda t} $$

つまり、観測時間を2倍にすれば平均発生回数も2倍になる、という直感どおりの性質です。さらに、連続するイベントの待ち時間(到着間隔)はパラメータ $\lambda$ の指数分布に従うという美しい対応があります。「回数のポアソン分布」と「間隔の指数分布」は、同じポアソン過程を別の角度から見たものなのです。

下の図は、率 $\lambda = 2$ のポアソン過程を実際にシミュレーションしたものです。

ポアソン過程のイベント到着時刻と累積到着回数のステップ図

上段はイベントが到着した時刻を縦線で示しています。一様に並ぶのではなく、込み合う部分とまばらな部分があり、いかにも「ランダム」な雰囲気です。下段の累積到着回数 $N(t)$ は階段状に増えていきますが、平均的には傾き $\lambda$ の直線 $E[N(t)] = \lambda t$ に沿って進んでいるのが分かります。短期的にはランダムにずれても、長期的には率 $\lambda$ の通りに積み上がる——これがポアソン過程の本質です。

ポアソン過程を理解すると、複数の独立な過程を重ね合わせたときに何が起きるかが気になります。それが次の再生性です。

再生性 — ポアソンの和はまたポアソン

独立な2つのポアソン確率変数 $X_1 \sim \mathrm{Poi}(\lambda_1)$、$X_2 \sim \mathrm{Poi}(\lambda_2)$ を足すと、その和もまたポアソン分布に従い、パラメータは単純に足し算されます。

$$ \begin{equation} X_1 + X_2 \sim \mathrm{Poi}(\lambda_1 + \lambda_2) \end{equation} $$

この性質を再生性(reproductive property)と呼びます。直感的にも自然です。AサイトのアクセスとBサイトのアクセスがそれぞれポアソンに従うなら、両者を合わせた総アクセスもポアソンに従い、その平均は単に足したもの、というわけです。

簡単に証明しておきましょう。和 $Z = X_1 + X_2$ が $k$ になる確率は、$X_1 = j$、$X_2 = k-j$ となる組み合わせをすべて足したものです(畳み込み)。

$$ \begin{split} P(Z = k) &= \sum_{j=0}^{k} P(X_1 = j)\, P(X_2 = k-j) \\ &= \sum_{j=0}^{k} \frac{\lambda_1^{j}}{j!} e^{-\lambda_1} \cdot \frac{\lambda_2^{k-j}}{(k-j)!} e^{-\lambda_2} \end{split} $$

共通の指数因子 $e^{-(\lambda_1+\lambda_2)}$ をくくり出し、和の中に $k!/k!$ を掛けて二項係数を作ります。

$$ \begin{split} P(Z = k) &= \frac{e^{-(\lambda_1+\lambda_2)}}{k!} \sum_{j=0}^{k} \frac{k!}{j!(k-j)!}\, \lambda_1^{j}\, \lambda_2^{k-j} \\ &= \frac{e^{-(\lambda_1+\lambda_2)}}{k!} \sum_{j=0}^{k} \binom{k}{j} \lambda_1^{j}\, \lambda_2^{k-j} \end{split} $$

最後の和は二項定理 $\sum_{j=0}^{k} \binom{k}{j} a^j b^{k-j} = (a+b)^k$ そのものなので、

$$ P(Z = k) = \frac{(\lambda_1 + \lambda_2)^k}{k!}\, e^{-(\lambda_1+\lambda_2)} $$

となり、確かに $\mathrm{Poi}(\lambda_1 + \lambda_2)$ の確率質量関数に一致しました。

シミュレーションでも確認しておきましょう。

λ1=3とλ2=5のポアソンの和がPoi(8)に一致するヒストグラム

$\lambda_1 = 3$ と $\lambda_2 = 5$ のポアソン乱数を足し合わせたヒストグラム(灰色)が、理論的な $\mathrm{Poi}(\lambda = 8)$(赤線)とぴたりと重なっています。再生性が成り立っていることが確認できました。この性質のおかげで、ポアソンデータは「足し合わせ」や「分割」が非常に扱いやすくなります。

ここまでは $\lambda$ が既知の前提でしたが、現実には $\lambda$ をデータから推定する必要があります。次にその方法を見ます。

最尤推定 — λ の推定量は標本平均

手元に $N$ 個の観測値 $x_1, x_2, \dots, x_N$ があり、これらが $\mathrm{Poi}(\lambda)$ から独立に得られたとします。このとき $\lambda$ をどう推定すればよいでしょうか。最尤推定(MLE)の考え方は「観測データが最も起こりやすくなるような $\lambda$ を選ぶ」というものです。

データ全体の尤度(同時確率)は各点の確率の積です。$(2)$ 式の対数形を使うと、対数尤度は

$$ \ln L(\lambda) = \sum_{i=1}^{N} \left\{ x_i \ln \lambda – \lambda – \ln(x_i!) \right\} = \left(\sum_{i=1}^{N} x_i\right)\ln \lambda – N\lambda – \sum_{i=1}^{N}\ln(x_i!) $$

となります。これを $\lambda$ で微分してゼロと置きます。最後の項は $\lambda$ を含まないので消えます。

$$ \frac{d}{d\lambda}\ln L(\lambda) = \frac{1}{\lambda}\sum_{i=1}^{N} x_i – N = 0 $$

これを $\lambda$ について解くと、

$$ \begin{equation} \hat{\lambda}_{\text{MLE}} = \frac{1}{N}\sum_{i=1}^{N} x_i = \bar{x} \end{equation} $$

となります。つまり、ポアソン分布の $\lambda$ の最尤推定量は単なる標本平均です。期待値が $\lambda$ だったことを思い出せば、平均を取れば $\lambda$ が推定できるのは自然な結果です。

観測標本のヒストグラムと対数尤度が標本平均で最大になる図

左の図は観測標本(真の $\lambda = 6$)のヒストグラムで、標本平均が真値の近くに来ています。右の図は対数尤度を $\lambda$ の関数として描いたもので、確かに標本平均の位置でピークを持っています。理論で導いた「対数尤度の最大点 = 標本平均」が、データの上でも成立していることが分かります。

推定した $\lambda$ が大きいとき、ポアソン分布はある馴染み深い分布に近づきます。それが正規分布です。

正規近似 — λが大きいと正規分布に近づく

$\lambda$ が小さいときのポアソン分布は左に偏った非対称な形ですが、$\lambda$ を大きくしていくと、だんだん左右対称の釣鐘型に近づいていきます。これは中心極限定理の一種と考えられます。ポアソン過程は「無数の小さな独立イベントの和」なので、平均回数 $\lambda$ が大きくなれば、和の分布は正規分布に近づくのです。

具体的には、$\lambda$ が大きいとき

$$ \mathrm{Poi}(\lambda) \approx \mathcal{N}(\mu = \lambda,\ \sigma^2 = \lambda) $$

と近似できます。平均も分散も $\lambda$ なので、正規分布の両パラメータがそのまま $\lambda$ になる点が覚えやすいところです。

λを2,10,30と増やすとポアソンが正規分布に近づく3枚の図

$\lambda = 2$ では棒グラフ(ポアソン)と曲線(正規)にずれがありますが、$\lambda = 10$、$\lambda = 30$ と増やすにつれて、正規分布の曲線がポアソンの形をよく捉えるようになります。実務では $\lambda \geq 10$ あたりから正規近似が実用的な目安とされます。この近似のおかげで、$\lambda$ が大きいカウントデータには正規分布ベースの検定や信頼区間が使えるようになります。

ここまではすべて「平均 = 分散 = $\lambda$」という前提に立っていました。しかし現実のデータはこの前提を破ることが多々あります。次にその問題と対処法を見ます。

過分散と負の二項分布への発展

ポアソン分布の最大の制約は「平均 = 分散」です。ところが現実のカウントデータでは、分散が平均よりかなり大きいことが頻繁に起こります。これを過分散(overdispersion)と呼びます。

過分散が起きる典型的な原因は「率 $\lambda$ 自体がばらついている」ことです。たとえばWebアクセスでも、平常時と話題になった時では到着率が大きく違います。観測者から見ると単一の $\lambda$ で説明できず、ばらつきが平均を超えてしまうのです。

この状況をモデル化するには、$\lambda$ をガンマ分布に従う確率変数として、ポアソンとガンマを混合します。すると得られる周辺分布が負の二項分布(negative binomial distribution)になります。負の二項分布は平均とは独立に分散を大きくできるので、過分散データを表現できます。

過分散データに対しポアソンと負の二項を重ねた比較図

灰色のヒストグラムは分散が平均(5)を大きく超える過分散データです。ポアソン $\mathrm{Poi}(5)$(青)は山が急すぎて裾を捉えきれていませんが、負の二項分布(紫)は広い裾までよく合っています。「分散 > 平均」のデータに出会ったら、まずポアソンを疑い、負の二項分布を検討するのが定石です。詳しくは負の二項分布の記事を参照してください。

理論が一通りそろったので、ここからはPythonで手を動かして確かめていきましょう。

Pythonでポアソン分布を実装する

まずは確率質量関数の概形を描きます。scipyの poisson を使えば簡単に計算できます。

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

ks = np.arange(0, 30)
for lam in [1, 3, 7, 15]:
    pmf = poisson.pmf(ks, lam)
    plt.plot(ks, pmf, "o-", label=f"lambda = {lam}")

plt.xlabel("発生回数 k")
plt.ylabel("確率 P(X=k)")
plt.legend()
plt.show()

このコードを実行すると、$\lambda$ が大きくなるにつれて山が右へ移り、低く広がっていく様子が描けます。冒頭で示した形状ギャラリーと同じ傾向で、定義式 $(1)$ の振る舞いをそのまま反映しています。

次に、導出した「平均 = 分散 = $\lambda$」を乱数で検証します。

import numpy as np

rng = np.random.default_rng(0)
for lam in [1, 5, 20]:
    s = rng.poisson(lam, size=200000)
    print(f"lambda={lam:>2}: 標本平均={s.mean():.3f}, 標本分散={s.var():.3f}")

出力は次のようになります。

lambda= 1: 標本平均=1.000, 標本分散=0.997
lambda= 5: 標本平均=5.004, 標本分散=5.010
lambda=20: 標本平均=20.001, 標本分散=19.954

どの $\lambda$ でも標本平均と標本分散がほぼ等しく、しかも $\lambda$ に一致しています。理論的に導いた等分散性が、シミュレーションでも確認できました。

最後に、実データへのフィットを最尤推定で行います。ここでは「1分あたりのWebアクセス数」を観測したと想定します。

import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt

rng = np.random.default_rng(10)
obs = rng.poisson(8.0, size=1000)   # 真の lambda = 8 のデータ

lam_hat = obs.mean()                # MLE = 標本平均
print(f"推定された lambda = {lam_hat:.3f}")

ks = np.arange(0, obs.max() + 2)
plt.hist(obs, bins=np.arange(0, obs.max() + 2) - 0.5,
         density=True, alpha=0.6, label="観測データ")
plt.plot(ks, poisson.pmf(ks, lam_hat), "o-",
         label=f"ポアソンフィット lambda={lam_hat:.2f}")
plt.xlabel("1分あたりのアクセス数 k")
plt.ylabel("相対頻度 / 確率")
plt.legend()
plt.show()

実行すると、推定値は真値 $8$ に近い値($\hat{\lambda} \approx 8$)になります。

アクセス件数のヒストグラムにポアソンpmfを重ねたフィット図

ヒストグラム(観測データ)の上に、推定した $\hat{\lambda}$ のポアソン確率質量関数がきれいに重なっています。標本平均を取るだけで $\lambda$ が推定でき、その分布が実データをよく説明できることが分かります。実務ではこの後、$\chi^2$ 適合度検定などで「本当にポアソンでよいか(過分散はないか)」を確認するのが定石です。

コードで実感がつかめたところで、最後に応用例を整理しておきましょう。

ポアソン分布の応用例

ポアソン分布は理論だけでなく、現場のさまざまな場面で使われます。代表的な3つを挙げます。

待ち行列(コールセンター・サーバー): 単位時間あたりの到着件数をポアソン分布で、サービス時間を指数分布でモデル化する「M/M/1待ち行列」は、待ち行列理論の出発点です。何台の窓口を用意すれば待ち時間が許容範囲に収まるか、といった設計に直結します。

事故・故障件数: 交通事故、保険金請求、機械の故障など、「めったに起きないが機会は無数にある」イベントの件数はポアソン分布によく従います。下の図は、低頻度の事故件数の古典的な例です。

稀な事故件数の観測度数とポアソン期待度数の比較図

観測度数(灰色)とポアソン分布から計算した期待度数(青)がよく一致しています。歴史的には、プロイセン軍で馬に蹴られて死亡した兵士数のデータがポアソン分布に従うことが示され、稀なイベントの法則の有名な実例となりました。このように、低頻度の件数データはまずポアソン分布を当てはめてみるのが第一歩です。

Webアクセス・通信トラフィック: 単位時間あたりのアクセス数やパケット到着数のモデル化に使われます。先ほどのフィット例がまさにこれです。ただし、バースト的なトラフィックは過分散になりやすいので、負の二項分布の検討も忘れずに。

まとめ

本記事では、ポアソン分布について直感から応用まで一通り解説しました。

  • ポアソン分布は「稀なイベントが単位時間あたり何回起きるか」を表す離散分布で、確率質量関数は $\mathrm{Poi}(k\mid\lambda) = \lambda^k e^{-\lambda}/k!$
  • 期待値も分散もどちらも $\lambda$(等分散性)。これは定義式から省略なしに導ける
  • 二項分布で $n\to\infty$、$p\to 0$、$np=\lambda$ 一定の極限を取るとポアソン分布が現れる
  • ポアソン過程・再生性・最尤推定($\hat\lambda=\bar x$)・正規近似($\mathcal N(\lambda,\lambda)$)という豊かな性質を持つ
  • 現実の過分散データはポアソンで表せず、負の二項分布への拡張が必要

ポアソン分布は、二項分布(離散の機会)と正規分布(連続の極限)、そして指数分布(待ち時間)をつなぐハブのような存在です。ここを起点に、確率分布の地図がぐっと見通しよくなります。

次のステップとして、以下の記事も参考にしてください。