1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ポアソン分布の p(0) はなぜ特別に見えるのか:可視化で直感的に確かめる

Posted at

はじめに

ポアソン分布は

P(k)=\frac{\mu^k}{k!}e^{-\mu}

で定義され、「平均発生回数 $\mu$ のもとで、$k$ 回起きる確率」を表します。
前回の記事では、ポアソン分布の中で $p(0)$ が少し特別に見える理由について整理しました。

今回は数式の性質を追う代わりに、$p(k)$ を実際に描いて眺めることで、$p(0)$ とそれ以外の違いを直感的に確認することを目的にします。ポイントはとてもシンプルです。

  • $p(0)$ は単調に減る
  • $k\ge1$ の $p(k)$ は、一般に同じ確率値に対して複数の $\mu$ が対応しうる

それがグラフだけで見えてきます。

本記事の実装コードは、Google Colab こちら からも試すことができます。

1. 横軸 k・縦軸 確率:μ を変えた分布を見る

まずは、横軸を $k$、縦軸を確率 $p(k)$ とし、$\mu$ を少しずつ変えたポアソン分布を同じ図に描きます。

Python実装コードはこちら
import numpy as np
import matplotlib.pyplot as plt
from math import factorial
from matplotlib import colors, colormaps

def poisson_p(k, mu):
    return (mu**k / factorial(k)) * np.exp(-mu)

ks = np.arange(0, 15)
mus = np.arange(0.1, 5.2, 0.5)

fig, ax = plt.subplots(figsize=(6,4))

norm = colors.Normalize(vmin=mus.min(), vmax=mus.max())
cmap = colormaps["turbo"]

for mu in mus:
    ps = [poisson_p(k, mu) for k in ks]
    ax.plot(
        ks, ps,
        "-o",
        color=cmap(norm(mu)),
        lw=0.8,
        alpha=0.7,
        markersize=3
    )

ax.set_xlabel("k")
ax.set_ylabel("probability")

sm = plt.cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])
cbar = fig.colorbar(sm, ax=ax)
cbar.set_label(r"$\mu$")

fig.tight_layout()
plt.show()

image.png

この図から分かること

この図を見ると、$\mu$ が大きくなるにつれて分布全体が右にずれ、分布が広がり、ピークがおおよそ $k\approx\mu$ に移動していく様子が分かります。
そして重要なのは、$k\ge1$ において 同じ $k$ に対して異なる $\mu$ の分布が重なって見える という点です。つまり $k\ge1$ では、「この $k$ に対してこの確率が得られたから $\mu$ はこれだ」と一意に言えない状況が、色の重なりとして自然に現れています。これは、小さな平均 $\mu$ からの上振れと、大きな平均 $\mu$ からの下振れが同じ $k$ に集まって見えていることに対応しています。
一方で $k=0$ に注目すると、このような情報の混じりが起きていないことも分かります。次の章では、$p(k)$ と $\mu$ の対応関係を、別の視点からもう少し整理して眺めてみます。

2. 横軸 μ・縦軸 確率:p(k) を関数として見る

次に視点を変えて、$p(k)$ を $\mu$ の関数として描きます。

Python実装コードはこちら
import numpy as np
import matplotlib.pyplot as plt
from math import factorial

mu = np.linspace(0, 15, 1000)

def poisson_p(mu, k):
    return (mu**k / factorial(k)) * np.exp(-mu)

plt.figure(figsize=(5,4))
for k in [0, 1, 2, 3, 4, 5]:
    plt.plot(mu, poisson_p(mu, k), label=f"p({k})")

plt.xlabel(r"$\mu$")
plt.ylabel("probability")
plt.legend()
plt.tight_layout()
plt.show()

image.png

この図から分かること

まず目立つのは、$p(0)$ だけが単調に減少していることです。

p(0)=e^{-\mu}

は $\mu$ が増えるほどなめらかに減り、同じ確率値に対応する $\mu$ は必ず一つしかありません。つまり、$p(0)$ は $\mu$ と一対一で対応しています。

一方で $k\ge1$ の曲線はすべて途中で最大値を持つ山型になり、頂点を除けば、同じ確率値に対して異なる $\mu$ が対応する領域を持ちます。その結果、$p(1)$ や $p(2)$ だけを見ても、元の $\mu$ を一意に定めることは一般にできません。

グラフが教えてくれたこと

2つの図を並べて見ると、$p(k)$ の性質はかなりはっきりします。

  • $p(0)$

    • 単調
    • 重なりがない
    • $\mu$ と一対一対応
  • $k\ge1$ の $p(k)$

    • 山型の形を持つ
    • 頂点を除けば、異なる $\mu$ が同じ確率を与える
    • 単独では生成過程を一意に定めにくい

ここで重要なのは、$k\ge1$ の確率が
「小さな $\mu$ からの上振れ」と「大きな $\mu$ からの下振れ」
という 2 つの異なる生成過程がカップルした結果として現れている点です。そのため、同じ $p(k)$ が異なる $\mu$ から自然に生じ、確率の値だけを見ると情報が混ざって見えます。

おわりに

ポアソン分布は、グラフでグラデーションや軸の取り方を変えて眺めてみると、$p(0)$ と $k\ge1$ の振る舞いが明確に異なることが分かります。「何も起きなかった」という事象は一見地味ですが、視覚的には 最も素直で、最も混ざらない情報として現れます。数式で整理すれば、さらに踏み込んだ議論も広がりそうですが、本記事ではこの辺で留めておきます。この記事が、ポアソン分布を感覚的・視覚的に理解するための一助になれば幸いです。

関連記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?