Gamma分布、指数分布、カイ二乗分布に従う確率変数の期待値、分散、モーメント母関数

Gamma分布

単位時間に平均$${\lambda}$$回起こる確率的事象が$${\alpha}$$回起こるまでの時間$${x}$$が従う確率分布を、Gamma分布と呼ぶ。
この確率密度関数は、Gamma関数$${\displaystyle{\Gamma(\alpha)=\int^\infty_0x^{\alpha-1}e^{-x}dx, \Gamma(1)=\int^\infty_0e^{-x}dx=1}}$$を用いて、

$${\displaystyle{f(x)=\frac{\lambda^\alpha}{\Gamma(\alpha)}x^{\alpha-1}e^{-\lambda x}}}$$
と与えられる。ただし、定義から$${x\geq 0 }$$である。
$${\displaystyle{\int^\infty_{-\infty}f(x)dx=\int^\infty_0\frac{\lambda^\alpha}{\Gamma(\alpha)}x^{\alpha-1}e^{-\lambda x}dx}}$$
$${t=\lambda x}$$と置いて、$${dt=\lambda dx}$$
$${\displaystyle{\int^\infty_0f(x)dx=\frac{\lambda^\alpha}{\Gamma(\alpha)}\int^\infty_0\Big(\frac{t}{\lambda}\Big)^{\alpha-1}e^{-t}\lambda^{-1}dt=\frac{\lambda^\alpha}{\Gamma(\alpha)}\frac{\Gamma(\alpha)}{\lambda^\alpha}=1}}$$

Gamma関数の性質として、
$${\displaystyle{\Gamma(\alpha)=\int^\infty_0\Big(\frac{x^\alpha}{\alpha}\Big)^{'}e^{-x}dx=\Big[\frac{x^\alpha}{\alpha}e^{-x}\Big]^\infty_0+\int^\infty_0\frac{x^\alpha}{\alpha}e^{-x}dx=\frac{\Gamma(\alpha+1)}{\alpha}}}$$、よって、
$${\Gamma(\alpha+1)=\alpha\Gamma(\alpha)=\alpha!}$$
また、$${x=y^2}$$と置き換えて
$${\displaystyle{\Gamma(\alpha)=\int^\infty_0y{2^\alpha-2}{\alpha}e^{-y^2}2ydy=2\int^\infty_0y{2^\alpha-1}{\alpha}e^{-y^2}dy}}$$より、
$${\displaystyle{\Gamma(\frac{1}{2})=2\int^\infty_0e^{-y^2}dy=2\cdot \frac{\sqrt{\pi}}{2}=\sqrt{\pi}}}$$
と与えられる。ここで、最後にガウス積分を使った。

モーメント母関数は、
$${\displaystyle{M_x(t)=E[e^{tx}]=\frac{\lambda^\alpha}{\Gamma(\alpha)}\int^\infty_0 x^{\alpha-1}e^{-(\lambda-t) x}dx }}$$
$${t=(\lambda-t)x}$$として、
$${\displaystyle{M_x(t)=\frac{\lambda^\alpha}{\Gamma(\alpha)}\frac{1}{(\lambda-t)^{\alpha-1}}\int^\infty_0 t^{\alpha-1}e^{-t}(\lambda-t)^{-1}dt =\frac{\lambda^\alpha}{(\lambda-t)^{\alpha}}}}$$
これから、期待値と分散は以下のように求められる。
$${E[x]=\displaystyle{\frac{d}{dt}\frac{\lambda^\alpha}{(\lambda-t)^{\alpha}}\Big|_{t=0}=\frac{\alpha\lambda^\alpha}{(\lambda-t)^{\alpha+1}}\Big|_{t=0}=\frac{\alpha}{\lambda}}}$$

$${\displaystyle{V[x]=\frac{d^2}{dt^2}\frac{\lambda^\alpha}{(\lambda-t)^{\alpha}}\Big|_{t=0} -\frac{\alpha^2}{\lambda^2}=\frac{\alpha(\alpha+1)\lambda^{\alpha}}{(\lambda-t)^{\alpha+2}}\Big|_{t=0}-\frac{\alpha^2}{\lambda^2}}}$$
$${\displaystyle{=\frac{\alpha(\alpha+1)}{\lambda^2}-\frac{\alpha^2}{\lambda^2}=\frac{\alpha}{\lambda^2}}}$$

ガンマ分布に従う乱数は、pythonでnumpy.randomのgammaで与えられ、第一引数のshapeが$${\alpha}$$、第二引数のscaleが$${\lambda}$$の逆数である。
$${\frac{1}{\lambda}=\text{scale}=2.0}$$に固定し、$${\alpha=\text{shape}=1,2,4}$$にして得られた分布は以下のようになる。

import numpy as np
from numpy import random as rand
import matplotlib.pyplot as plt
rand.seed(0)
randnum=1_000_000

scale=2
shape=1
g=rand.gamma(shape, scale, size=randnum)
plt.hist(g, 100,label=rf'$\alpha$={shape}',alpha=0.6)
shape=2
g=rand.gamma(shape, scale, size=randnum)
plt.hist(g, 100,label=rf'$\alpha$={shape}',alpha=0.6)
shape=4
g=rand.gamma(shape, scale, size=randnum)
plt.hist(g, 100,label=rf'$\alpha$={shape}',alpha=0.6)
plt.title('$\Gamma$ distribution $\lambda$ =0.5')
plt.ylabel('Probability')
plt.xlabel('Data')
plt.legend();

指数分布

単位時間に平均$${\lambda}$$回起こる確率的事象が初めて起こるまでの時間$${x}$$が従う確率分布を指数分布と呼ぶ。
これは、Gamma分布における$${\alpha=1}$$の場合であるから、確率密度関数$${f(x)=\lambda e^{-\lambda x}}$$となる。
指数分布に従う乱数の実装は、pythonのnumpy.randomのexponentialで行うことができる。

scale=4.0
expran=rand.exponential(scale=scale, size=randnum)
plt.hist(expran, 100,label=rf'$1/\lambda$={scale}',alpha=0.6)
scale=2.0
expran=rand.exponential(scale=scale, size=randnum)
plt.hist(expran, 100,label=rf'$1/\lambda$={scale}',alpha=0.6)
scale=1.0
expran=rand.exponential(scale=scale, size=randnum)
plt.hist(expran, 100,label=rf'$1/\lambda$={scale}',alpha=0.6)
plt.title('Exponential')
plt.ylabel('Probability')
plt.xlabel('Data')
plt.legend();


引数のscaleは$${\Gamma}$$分布と同じく$${\lambda}$$の逆数で与えられている。よって、上記の指数分布$${\frac{1}{\lambda}=2}$$は、ガンマ分布の図$${\lambda=0.5}$$における$${\alpha=1}$$に等しくなっている。

$${\chi}$$二乗分布

整数$${n}$$とともに、Gamma分布において、$${\displaystyle{\alpha=\frac{n}{2}}$$、$${\displaystyle{\lambda=\frac{1}{2}}}$$で与えられる確率分布を自由度$${n}$$の$${\chi}$$二乗分布とよび、$${\chi^2(n)}$$と表す。
これは、標準正規分布$${\cal{N}(0,1)}$$に従うそれぞれ独立な$${n}$$個の確率変数$${z_1, \cdots z_n}$$の二乗和$${x=\displaystyle{\sum z_i^2}}$$が従う確率分布であり、確率密度関数は、
$${\displaystyle{f(x)=\frac{x^{\frac{n}{2}-1}e^{-\frac{x}{2}}} {2^{\frac{n}{2}}\Gamma(\frac{n}{2})} }}$$
と与えられる。
$${\chi}$$二乗分布に従う乱数のpythonでの実装は、numpy.randomのchisquareで行うことができる。

df=2
chi=rand.chisquare(df, size=randnum)
plt.hist(chi, 100,label=f'df={df}',alpha=0.6)
df=8
chi=rand.chisquare(df, size=randnum)
plt.hist(chi, 100,label=f'df={df}',alpha=0.6)
df=16
chi=rand.chisquare(df, size=randnum)
plt.hist(chi, 100,label=f'df={df}',alpha=0.6)
plt.title('$\chi$ square')
plt.ylabel('Probability')
plt.xlabel('Data')
plt.legend();

この記事が気に入ったらサポートをしてみませんか?