統計学 – t 分布

統計学 – t 分布

概要

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

t 分布

確率変数 $X$ が自由度 $n$ のカイ二乗分布に従い、環境変数 $Z$ が標準正規分布に従うとし、$X, Y$ は独立であるとする。このとき、

$$ Y = \frac{Z}{\sqrt{\frac{X}{n}}} $$

は自由度 $n$ の t 分布 (t distribution) に従うという。 確率変数 $X$ が自由度 $n$ の t 分布に従うとき、$Y \sim t_n$ と表す。

確率関数

確率変数 $Y$ が t 分布に従う確率変数のとき、確率密度関数は

$$ f_Y(y) = \frac{\Gamma \left[ \frac{n + 1}{2} \right]}{\sqrt{n \pi} \Gamma(\frac{n}{2})} \left[ 1 + \frac{y^2}{n} \right]^{- \frac{n + 1}{2}} , y \in \R $$

ただし、$\Gamma(\cdot)$ はガンマ関数、$n \in \N$ とする。

確率密度関数の導出

結合確率密度関数は

$$ \begin{aligned} f_{X, Z}(x, z) &= \frac{1}{\sqrt{2 \pi}} \exp \left( – \frac{z^2}{2} \right) \cdot \frac{1}{\Gamma \left( \frac{n}{2} \right) 2^{\frac{n}{2}}} x^{\frac{n}{2} – 1} e^{- \frac{x}{2}} \quad \because X, Z は独立 \end{aligned} $$

ここで、$Y = \frac{Z}{\sqrt{\frac{X}{n}}}, V = X$ の変数変換をすると、

$$ \begin{cases} y = \frac{z}{\sqrt{\frac{x}{n}}} \\ v = x \end{cases} \Leftrightarrow \begin{cases} z = \sqrt{\frac{v}{n}} y \\ x = v \end{cases} $$

ヤコビアンは

$$ \begin{vmatrix} \frac{\partial z}{\partial y} & \frac{\partial z}{\partial v} \\ \frac{\partial x}{\partial y} & \frac{\partial x}{\partial v} \\ \end{vmatrix} = \begin{vmatrix} \sqrt{\frac{v}{n}} & \frac{y}{2 \sqrt{nv}} \\ 0 & 1 \\ \end{vmatrix} = \sqrt{\frac{v}{n}} $$

また、$-\infty < y < \infty, 0 < v < \infty$

よって、

$$ \begin{aligned} f_{Y, V}(y, v) &= \frac{1}{\sqrt{2 \pi}} \exp \left( – \frac{v y^2}{2n} \right) \cdot \frac{1}{\Gamma \left( \frac{n}{2} \right) 2^{\frac{n}{2}}} v^{\frac{n}{2} – 1} e^{- \frac{v}{2}} \sqrt{\frac{v}{n}} \\ &= \frac{1}{\Gamma \left( \frac{n}{2} \right) 2^{\frac{n}{2}} \sqrt{2 \pi n}} \exp \left( – \frac{v}{2} \left(\frac{y^2}{n} + 1\right) \right) v^{\frac{n}{2} – 1 + \frac{1}{2}} \\ \end{aligned} $$

$Y$ の周辺確率密度関数は

$$ \begin{aligned} f_Y(y) &= \int_{-\infty}^\infty f_{Y, V}(y, v) dv \\ &= K \int_0^\infty \exp \left( – \frac{v}{2} \left(\frac{y^2}{n} + 1\right) \right) v^{\frac{n + 1}{2} – 1} dv \\ \end{aligned} $$

ただし、

$$ K = \frac{1}{\Gamma \left( \frac{n}{2} \right) 2^{\frac{n}{2}} \sqrt{2 \pi n}} $$

とおいた。

ここで、$t = \frac{v}{2} \left(\frac{y^2}{n} + 1\right)$ とおくと、$v = \frac{2n}{y^2 + n} t$、$dv = \frac{2n}{y^2 + n} dt$ より、

$$ \begin{aligned} & \int_0^\infty e^{-t} \left( \frac{2n}{y^2 + n} t \right)^{\frac{n + 1}{2} – 1} \frac{2n}{y^2 + n} dt \\ &= \left( \frac{2n}{y^2 + n} \right)^{\frac{n + 1}{2}} \int_0^\infty t^{\frac{n + 1}{2} – 1} e^{-t} dt \\ &= \left( \frac{2n}{y^2 + n} \right)^{\frac{n + 1}{2}} \Gamma\left( \frac{n + 1}{2} \right) \quad \because ガンマ関数の定義 \end{aligned} $$

以上より、

$$ \begin{aligned} f_Y(y) &= \frac{1}{\Gamma \left( \frac{n}{2} \right) 2^{\frac{n}{2}} \sqrt{2 \pi n}} \left( \frac{2n}{y^2 + n} \right)^{\frac{n + 1}{2}} \Gamma\left( \frac{n + 1}{2} \right) \\ &= \frac{\Gamma\left( \frac{n + 1}{2} \right) }{\Gamma \left( \frac{n}{2} \right) \sqrt{\pi n}} \left( \frac{y^2}{n} + 1 \right)^{-\frac{n + 1}{2}}, -\infty < y < \infty\\ \end{aligned} $$

期待値

$n > 1$ のとき、

$$ \begin{aligned} E[Y] &= E\left[\frac{Z}{\sqrt{\frac{X}{n}}} \right] \\ &= \sqrt{n} E\left[\frac{Z}{\sqrt{X}} \right] \\ &= \sqrt{n} E\left[\frac{1}{\sqrt{X}}\right] E[Z] \quad \because X, Z は独立 \\ &= 0 \quad \because E[Z] = 0 \end{aligned} $$

分散

$n > 2$ のとき、

$$ \begin{aligned} E[Y^2] &= E\left[\frac{Z^2}{\frac{X}{n}} \right] \\ &= n E\left[\frac{Z^2}{X} \right] \\ &= n E\left[\frac{1}{X}\right] E[Z^2] \quad \because X, Z は独立 \end{aligned} $$

ここで、$X \sim \chi_n^2$ より、

$$ E\left[\frac{1}{X}\right] = \frac{1}{n – 2} $$

$Z^2 \sim \chi_1^2$ より、

$$ E[Z^2] = 1 $$

よって、

$$ \begin{aligned} E[Y^2] &= n E\left[\frac{1}{X}\right] E[Z^2] \\ &= \frac{n}{n – 2} \end{aligned} $$

したがって、分散は

$$ \begin{aligned} Var[Y] &= E[Y^2] – (E[Y])^2 \\ &= \frac{n}{n – 2} \\ \end{aligned} $$

標準偏差

$$ \begin{aligned} Std[X] &= \sqrt{Var[X]} \\ &= \sqrt{\frac{n}{n – 2}} \end{aligned} $$

scipy.stats の t 分布

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

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

sns.set(style="white")

df = 2.74
X = t(df)

サンプリング

In [2]:
x = X.rvs(size=5)
print(x)
[-0.30791396  0.34077362 -2.2863223  -1.55023673  1.40032404]

確率密度関数

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

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

plt.show()

累積分布関数

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

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

plt.show()

統計量

In [5]:
print("mean", X.mean())
print("var", X.var())
print("std", X.std())
mean 0.0
var 3.7027027027027017
std 1.924240812035412