Pythonを用いた確率分布のプログラミング 〜ポアソン分布、正規分布、指数分布〜

数式だけの解説ではわかりにくい場合もあると思われるので、統計学の手法や関連する概念をPythonのプログラミングで表現します。当記事ではポアソン分布、正規分布、指数分布などの確率分布の確率密度関数とパラメータの対応やグラフの描画に関して取り扱いました。

・Pythonを用いた統計学のプログラミングまとめ
https://www.hello-statisticians.com/stat_program

離散型確率分布

ポアソン分布

$$
\large
\begin{align}
f(x|\lambda) = \frac{\lambda^{x} e^{-\lambda}}{x!}, \quad x \geq 0
\end{align}
$$

上記で表したポアソン分布$Po(\lambda)$の確率密度関数のグラフは下記を実行することで描画を行うことができる。

import math
import matplotlib.pyplot as plt
import numpy as np

def factorial(vec):
    res = np.zeros(vec.shape[0])
    for i in range(vec.shape[0]):
        res[i] = math.factorial(vec[i])
    return res

lamb1, lamb2, lamb3 = 3., 5., 7.

x = np.arange(0, 16, 1)
y1 = lamb1**x * np.e**(-lamb1) / factorial(x)
y2 = lamb2**x * np.e**(-lamb2) / factorial(x)
y3 = lamb3**x * np.e**(-lamb3) / factorial(x)

plt.plot(x,y1,color="blue",label="lambda: {:.1f}".format(lamb1))
plt.plot(x,y2,color="green",label="lambda: {:.1f}".format(lamb2))
plt.plot(x,y3,color="red",label="lambda: {:.1f}".format(lamb3))

plt.legend()
plt.show()

・実行結果

連続型確率分布

正規分布

$$
\large
\begin{align}
f(x|\mu,\sigma) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left[ -\frac{(x-\mu)^2}{2 \sigma^2} \right]
\end{align}
$$

上記で表した正規分布$N(\mu,\sigma)$の確率密度関数のグラフは下記を実行することで描画を行うことができる。

import numpy as np
import matplotlib.pyplot as plt

mu = 0
sigma = np.array([0.5, 1., 2.])

x = np.arange(-5., 5.01, 0.01)

for i in range(sigma.shape[0]):
    y = np.exp(-(x-mu)**2/(2*sigma[i]**2))/np.sqrt(2*np.pi*sigma[i]**2)
    plt.plot(x,y,label="mu: {:.1f}, sigma: {:.1f}".format(mu,sigma[i]))

plt.legend()
plt.show()

・実行結果

指数分布

$$
\large
\begin{align}
f(x|\lambda) = \lambda e^{-\lambda x}, \quad x \geq 0
\end{align}
$$

上記で表した正規分布$Exp(\lambda)$の確率密度関数のグラフは下記を実行することで描画を行うことができる。

import numpy as np
import matplotlib.pyplot as plt

lamb = np.array([0.5, 1., 2.])

x = np.arange(0., 5.01, 0.01)

for i in range(lamb.shape[0]):
    y = lamb[i] * np.e**(-lamb[i]*x)
    plt.plot(x,y,label="lambda: {:.1f}".format(lamb[i]))

plt.legend()
plt.show()

・実行結果

「Pythonを用いた確率分布のプログラミング 〜ポアソン分布、正規分布、指数分布〜」への1件の返信

コメントは受け付けていません。