統計学 – コーシー分布

概要

連続確率分布の1つであるコーシー分布について解説します。

確率密度関数

確率変数 XX が次のような確率密度関数をもつとき、XX はパラメータ x0,γx_0, \gamma のコーシー分布 (Cauchy distribution) に従うという。

fX(x)=1πγ(xx0)2+γ2 f_X(x) = \frac{1}{\pi} \frac{\gamma}{(x – x_0)^2 + \gamma^2}

ただし、x0x_0 は位置パラメータ、γ>0\gamma > 0 は尺度母数である。 x0=0,γ=1x_0 = 0, \gamma = 1 のとき、標準コーシー分布という。

fX(x)=1π(x2+1) f_X(x) = \frac{1}{\pi (x^2 + 1)}

確率密度関数である

1πγ(xx0)2+γ2dx=γπ1t2+γ2dtt=xx0で置換積分=γππγ積分1=1 \begin{aligned} & \int_{-\infty}^{\infty} \frac{1}{\pi} \frac{\gamma}{(x – x_0)^2 + \gamma^2} dx \\ &= \frac{\gamma}{\pi} \int_{-\infty}^{\infty} \frac{1}{t^2 + \gamma^2} dt \quad \because t = x – x_0 で置換積分 \\ &= \frac{\gamma}{\pi} \frac{\pi}{\gamma} \quad \because 積分1 \\ &= 1 \end{aligned}

積分1の導出 Integral Calculator • With Steps!

また、fX(x)0f_X(x) \ge 0 は明らか。

累積確率関数

P(Xx)=x1πγ(tx0)2+γ2dt=γπxx01u2+γ2duu=tx0で置換積分=γπ1γ(arctan(xx0γ)+π2)積分1=1πarctan(xx0γ)+12 \begin{aligned} P(X \le x) &= \int_{-\infty}^x \frac{1}{\pi} \frac{\gamma}{(t – x_0)^2 + \gamma^2} dt \\ &= \frac{\gamma}{\pi} \int_{-\infty}^{x – x_0} \frac{1}{u^2 + \gamma^2} du \quad \because u = t – x_0 で置換積分 \\ &= \frac{\gamma}{\pi} \frac{1}{\gamma} \left( \arctan \left( \frac{x – x_0}{\gamma} \right) + \frac{\pi}{2} \right) \quad \because 積分1 \\ &= \frac{1}{\pi} \arctan \left( \frac{x – x_0}{\gamma} \right) + \frac{1}{2} \end{aligned}

積分1の導出 Integral Calculator • With Steps!

期待値

E[X]=xfX(x)dx=x0fX(x)dx+(xx0)fX(x)dx=x0+(xx0)fX(x)dx=x0+γπxx0(xx0)2+γ2dx=x0+γπt1+t2dtt=1γ(xx0)=x0+limR1,R2γπR1R2t1+t2dt=x0+limR1,R2γ2πlogR22+1R12+1積分1 \begin{aligned} E[X] &= \int_{-\infty}^{\infty} x f_X(x) dx \\ &= \int_{-\infty}^{\infty} x_0 f_X(x) dx + \int_{-\infty}^{\infty} (x – x_0) f_X(x) dx \\ &= x_0 + \int_{-\infty}^{\infty} (x – x_0) f_X(x) dx \\ &= x_0 + \frac{\gamma}{\pi} \int_{-\infty}^{\infty} \frac{x – x_0}{(x – x_0)^2 + \gamma^2} dx \\ &= x_0 + \frac{\gamma}{\pi} \int_{-\infty}^{\infty} \frac{t}{1 + t^2} dt \quad \because t = \frac{1}{\gamma} (x – x_0) \\ &= x_0 + \lim_{R_1, R_2 \to \infty} \frac{\gamma}{\pi} \int_{-R_1}^{R_2} \frac{t}{1 + t^2} dt \\ &= x_0 + \lim_{R_1, R_2 \to \infty} \frac{\gamma}{2 \pi} \log \frac{R_2^2 + 1}{R_1^2 + 1} \quad \because 積分1 \\ \end{aligned}

ここで、

limR1,R2logR22+1R12+1 \lim_{R_1, R_2 \to \infty} \log \frac{R_2^2 + 1}{R_1^2 + 1}

は極限が存在しないので、E[X]E[X] は定義されない。

積分1の導出 Integral Calculator • With Steps!

分散

期待値が定義されないので、分散も定義されない

標準偏差

期待値が定義されないので、標準偏差も定義されない

scipy.stats のコーシー分布

scipy.stats.cauchy でコーシー分布に従う確率変数を作成できます。

In [1]:
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt
from scipy.stats import cauchy, norm

sns.set(style="white")

X = cauchy(loc=0, scale=1)
Python

サンプリング

In [2]:
x = X.rvs(size=5)
print(x)
Python
[ 6.88852887e-01  1.63192866e-03 -1.39746430e-01 -1.66039028e+00
  2.34561191e+00]

1000個サンプリングした結果を描画します。 図を見るとわかりますが、大半は 00 近辺の値となっていますが、まれに大きな外れ値が発生しています。これはコーシー分布が正規分布より裾野が広いために発生しています。

In [3]:
x = X.rvs(size=1000, random_state=0)
ax = sns.boxplot(x)
ax.grid()
Python

確率密度関数

比較するために正規分布も合わせて描画しました。

In [4]:
x = np.linspace(-10, 10, 100)
y1 = X.pdf(x)
y2 = norm.pdf(x)

fig, ax = plt.subplots()
ax.plot(x, y1, label="Cauchy Distribution")
ax.plot(x, y2, label="Normal Distribution")
ax.legend()
ax.grid()

plt.show()
Python

累積分布関数

In [5]:
x = np.linspace(-10, 10, 100)
y = X.cdf(x)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.grid()

plt.show()
Python

統計量

期待値、分散、標準偏差は定義されないので、NaN を返します。

In [6]:
print("mean", X.mean())
print("var", X.var())
print("std", X.std())
Python
mean nan
var nan
std nan

サンプル数 NN を増やした場合の標本平均の値を描画します。 図を見るとわかりますが、NN を増やしても外れ値の影響で標本平均が収束しないことがわかります。

In [7]:
np.random.seed(0)

means = []
for n in np.linspace(10, 100000, 100):
    x = X.rvs(size=10000)
    means.append(x.mean())

fig, ax = plt.subplots()
ax.plot(means)
ax.grid()
Python

参考文献

コメント

コメントする