Poisson分布の条件付分布(Conditional)は二項分布に従うことの証明
Poisson分布の条件付分布(Conditional)は二項分布に従うことの証明
Poisson分布の条件付分布(Conditional)は,二項分布に従うことの証明のメモ. ついでにSimulation もやってみる.
Poisson分布の条件付分布が二項分布に従うことの証明
どういう条件付分布かというと, 互いに独立でポアソン分布に従う確率変数 \( X \sim Po(\lambda_x), Y \sim Po(\lambda_y) \) の和\( X+Y = n\)が起きた中で,\(X=k\)であるという分布になる. 記号で書くと, \( X=k | X + Y =n \) になり,これが二項分布に従う.
もっと例を使って説明すると, Poisson分布に従うようなボタンXのクリック数 \(X\) と ボタンYのクリック数 \(Y\) が 合計\( n \) 回起きたとき,そのうち ボタンX のクリック数である割合(成功確率)は平均の割合\( \frac{\lambda_X}{\lambda_X + \lambda_Y }\) である,つまり \(Bin(n, \frac{\lambda_X}{\lambda_X + \lambda_Y })\) に従うということになる.直感的には確かにそうなりそうなので,実際に数式を使って証明する.
確率変数 \(X, Y\) は互いに独立として, $$ X \sim Po(\lambda_{X})\\ Y \sim Po(\lambda_{Y}) $$
ポアソン分布の再生性
より, $$ Z = X+Y \sim Po(\lambda_{X} + \lambda_{Y}) $$
条件付分布は, \begin{eqnarray*} P(X_c = k) &=& P(X = k∣X+Y=n)\\ &=& \frac{P(X=k, X+Y=n)}{P(X+Y=n)} \end{eqnarray*} 分母に条件,分子に同時分布がくる形になる.
確率変数の値が $X=k$ になるときを考えると, 同時分布は, $$ P(X=k, X+Y=n) = P(X=k, Z=n)= P(X=k)P(Y=n-k) $$ になる.よって,P(X)P(Y)の積になる.
よって,条件付分布は, \begin{eqnarray*} P(X_c = k) &=& \frac{P(X=k \cap X+Y=n)}{P(X+Y=n)} \\ &=& \frac{P(X=k)P(Y=n-k)}{P(Z=n)} \\ &=& \frac{ \frac{\lambda_X^k}{k!}e^{-\lambda_X} \frac{\lambda_Y^{(n-k)}}{(n-k)!}e^{-\lambda_Y}}{ \frac{(\lambda_X + \lambda_Y)^n}{n!}e^{-(\lambda_X + \lambda_Y)} }\\ &=& \frac{n!}{(n-k)!k!} \frac{\lambda_X^k \lambda_Y^{(n-k)}}{(\lambda_X + \lambda_Y)^n} \\ &=& \frac{n!}{(n-k)!k!} \frac{\lambda_X^k \lambda_Y^{(n-k)}}{(\lambda_X + \lambda_Y)^{k}(\lambda_X + \lambda_Y)^{n-k}} \\ &=& \frac{n!}{(n-k)!k!} \left(\frac{\lambda_X}{\lambda_X + \lambda_Y}\right)^{k} \left(\frac{\lambda_Y}{\lambda_X + \lambda_Y} \right)^{n-k}\\ &=& \frac{n!}{(n-k)!k!} \left(\frac{\lambda_X}{\lambda_X + \lambda_Y}\right)^{k} \left(1 - \frac{\lambda_X}{\lambda_X + \lambda_Y} \right)^{n-k}\\ &=& {}_{n}C_{k} \left(\frac{\lambda_X}{\lambda_X + \lambda_Y}\right)^{k} \left(1 - \frac{\lambda_X}{\lambda_X + \lambda_Y}\right)^{n-k} \end{eqnarray*} 条件付分布は,二項定理の項が出てくることにより, 二項分布の確率(質量)関数となる.
よって, $$ X_c \sim B(n, \frac{\lambda_X}{\lambda_X + \lambda_Y}) $$
条件付分布のシミュレーション
数式で証明できたけど,実際に二項分布に従うのかシミュレーションしてみる.流れとしては,
-
\(X \sim Po(2), Y \sim Po(3)\) として, それぞれ5000個のポアソン乱数を発生させ,その和を求める.
例えば以下のようになる.
X Y X+Y 3 2 5 1 9 10 4 3 7 ... ... ... -
例えば,\(X+Y= 5\) になるときのみを抽出.
X Y X+Y 3 2 5 2 3 5 1 4 5 ... ... ... -
\(X\)の値の頻度をカウントし,正規化してプロット.
-
二項分布 \(Bin(n=5, p=\frac{2}{2+3}) \) に従っているはずなので,確率質量関数(pmf)をプロットして,ある程度重なっているか確認.
使用環境は以下である.
環境
- conda: 4.2.12
- Python 3.5.1
- scipy 0.18.1
- pandas 0.18.1
- jupyter 1.0.0
コードは以下のようになる. なお,コードでは, \((X=k|X+Y =2), (X=k|X+Y =3) \cdots , (X=k|X+Y =5)\) の時をプロットしている.
import scipy as sp
import scipy.stats as stats
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure(figsize=(11, 5))
size= 5000
def plot(n_start, sub_row, sub_col):
num = sub_row * sub_col
for i in sp.arange(0, num, 1):
n = n_start + i
plt.subplot(str(sub_row) + str(sub_col) + str(i+1))
X_rand = stats.poisson.rvs(mu=2, size=size)
Y_rand = stats.poisson.rvs(mu=3, size=size)
df = pd.DataFrame([X_rand, Y_rand, X_rand+Y_rand], index=["X", "Y", "X+Y"]).T
df_n = df[df["X+Y"]==n]
freq = df_n["X"].value_counts(sort=False) / df_n["X"].count()
freq.plot(label=("X|X+Y=" + str(n)))
#true binome
k_ = sp.arange(0, n+1, 1)
plt.bar(k_-0.2/2, stats.binom.pmf(k=k_, n=n, p=2/(2+3)), label="true B(" + str(n) + ", 2/5)", width=.2, color="red")
plt.xlim(-.5, n+0.5)
plt.grid()
plt.xlabel("k")
plt.ylabel("Prob")
plt.legend(loc=1)
plot(2, sub_row=2, sub_col=2)
fig.suptitle("Simulation that Conditional of Poissons follows Binom", y=0, fontsize=16)
plt.tight_layout()
plt.show()
結果は以下のようなった. 青い実線 が上記の乱数発生で計算した確率で,赤い棒グラフ が二項分布の実際の確率(質量)関数の値である. 大体合ってるのが分かる.
何に使えるの?
この性質何に使えるの?って感じだが, どうやら「2群のポアソン分布の平均の差の検定」, C-Test [1] (CはConditionalの略)に使われているようだ.この二項分布に従うという性質を使って,両側・片側検定を行う.後日,ブログに挙げる予定.
参考リンク