プログラミング

Pythonで学ぶ確率密度関数

確率密度関数(Probability Density Function, PDF)は、連続確率変数が特定の値を取る確率を示す関数です。確率密度関数は、確率論や統計学において非常に重要な役割を果たします。この記事では、Pythonを使用して確率密度関数を計算する方法について、完全かつ包括的に解説します。

確率密度関数とは

確率密度関数は、連続確率変数の値が特定の範囲に存在する確率を示すもので、数式で表現する際には以下のように記述されます。

f(x)=dPdxf(x) = \frac{dP}{dx}

ここで、f(x)f(x) は確率密度関数、PP は確率、xx はランダム変数です。確率密度関数は、特定の値を取る確率がゼロであることが特徴です。しかし、ある範囲における確率を計算するためには、確率密度関数を積分する必要があります。

Pythonでの確率密度関数の計算

Pythonでは、scipy ライブラリを利用して簡単に確率密度関数を計算できます。scipy.statsモジュールには、様々な確率分布に対応した関数が用意されています。例えば、正規分布や一様分布、指数分布などがあります。

正規分布の確率密度関数

正規分布は、最も広く使用されている確率分布の一つです。正規分布の確率密度関数は以下の数式で表されます。

f(x)=1σ2πexp((xμ)22σ2)f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\left( – \frac{(x – \mu)^2}{2\sigma^2} \right)

ここで、μ\mu は平均、σ\sigma は標準偏差です。

例: 正規分布の確率密度関数を計算

まず、scipy.stats.normを使って、正規分布の確率密度関数を計算します。

python
import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm # 平均と標準偏差の設定 mu = 0 sigma = 1 # xの範囲 x = np.linspace(-5, 5, 1000) # 正規分布の確率密度関数 pdf = norm.pdf(x, mu, sigma) # グラフの描画 plt.plot(x, pdf, label='PDF: Normal Distribution') plt.title('Probability Density Function (Normal Distribution)') plt.xlabel('x') plt.ylabel('Density') plt.legend() plt.show()

このコードは、平均が0、標準偏差が1の正規分布に対する確率密度関数をプロットします。

一様分布の確率密度関数

一様分布は、全ての値が等確率で発生する分布です。確率密度関数は、以下のように定義されます。

f(x)=1baforaxbf(x) = \frac{1}{b – a} \quad \text{for} \quad a \leq x \leq b

ここで、aabb は一様分布の区間を示します。

例: 一様分布の確率密度関数を計算
python
from scipy.stats import uniform # 区間の設定 a = 0 b = 1 # xの範囲 x = np.linspace(-0.5, 1.5, 1000) # 一様分布の確率密度関数 pdf = uniform.pdf(x, a, b - a) # グラフの描画 plt.plot(x, pdf, label='PDF: Uniform Distribution') plt.title('Probability Density Function (Uniform Distribution)') plt.xlabel('x') plt.ylabel('Density') plt.legend() plt.show()

このコードは、区間[0, 1]における一様分布の確率密度関数をプロットします。

確率密度関数の積分

確率密度関数を積分することで、ある範囲における確率を求めることができます。例えば、正規分布であれば、ある区間における確率を求めるために、scipy.stats.norm.cdf(累積分布関数)を使用します。

例: 正規分布の累積確率を計算
python
# 累積確率関数 cdf_value = norm.cdf(1, mu, sigma) - norm.cdf(-1, mu, sigma) print(f'P(-1 <= x <= 1) = {cdf_value}')

このコードは、正規分布において区間[-1, 1]にある確率を計算します。

他の確率分布

Pythonでは、scipy.statsモジュールを使ってさまざまな確率分布の確率密度関数を計算できます。以下は、その一部です:

  • 指数分布: scipy.stats.expon
  • ポアソン分布: scipy.stats.poisson
  • ガンマ分布: scipy.stats.gamma
  • ベータ分布: scipy.stats.beta

それぞれに対応するPDF関数を使って、特定の分布における確率密度を計算できます。

結論

確率密度関数は、統計学や機械学習の分野で非常に重要な概念です。Pythonでは、scipy.statsライブラリを活用することで、様々な確率分布に対して確率密度関数を簡単に計算し、可視化することができます。この記事で紹介した正規分布や一様分布をはじめ、他の確率分布に対しても同様の方法で確率密度を求めることができます。確率密度関数を使いこなすことで、データの分布に関する深い洞察を得ることができるでしょう。

Back to top button