統計学:χ2乗分布(カイ2乗分布)の意味

統計

統計を学びたての頃、正規分布は何となくわかり始めた後に出てくるのが、\( \chi^2 \)分布。これ何?どうやって使うの?そもそも何て読むの?ってなりますよね。始めはとっつきにくい\(\chi^2\)分布ですが、分散の検定、適合度検定などに使われたり、平均値の差の検定に使われる\(t\)分布や分散比の検定に使われる\(F\)分布とも非常に密接な関係がある重要な分布です。 \(\chi^2\)分布は特に分散との関係が非常に強いので、ここでは、\(\chi^2\)分布と分散の関係について整理します。

χ2乗分布の定義

独立に標準正規分布に従うn個の確率変数\( X_1,X_2,…X_n \)があるとき $$ Z = \sum_{i=1}^{n}{X_i^2} $$ が従う分布のことを、自由度nの\(\chi^2\)分布といいます。「\(\chi^2\)」っていう文字にばかり目がいってしまうかもしれませんが、この自由度「\(n\)」っていうのもとても大事な値です。

 

χ2乗分布ってどういう分布?何を表すの?

 

キーワードは独立、正規分布、2乗の和です。どこかで聞いたようなキーワードだと思いませんか?
そう、分散です。 \(X_1,X_2,…,X_n\) が独立で正規分布\(N(\mu、\sigma^2)\) に従う場合を考えます。
\(X_i(i=1,…,n)\)​の分散(不偏分散ではなく、手元にあるデータの分散)は、 $$ s = \frac{\sum_{i=1}^{n}{(X_i-\mu)^2}}{n} $$ で計算されます。ここで平均値\(\mu\)は標本データの平均値\(\overline{X}= \frac{\sum_{i=1}^{n}X_i}{n} \)とは違うことに注意してください。\(\mu\)は標本データの平均値\(\overline{X}\)ではなく、真の平均値(データ数nを無限にとった場合の平均値)のことです。 $$ \mu = \lim_{n \to \infty}\frac{\sum_{i=1}^{n}X_i}{n} (\neq \overline{X}) $$ このとき、 $$ Z_i = \frac{X_i – \mu}{\sigma} $$ と変換すると、\(Z_i\)は標準正規分布に従うことから、 $$ \begin{eqnarray} S &=& \sum_{i=1}^{n}Z_i^2 \\ &=& \sum_{i=1}^{n}(\frac{X_i-\mu}{\sigma})^2 \\ &=& \frac{n}{\sigma^2}\sum_{i=1}^{n}\frac{(X_i-\mu)^2}{n}\\ &=& \frac{n}{\sigma^2}s \end{eqnarray} $$ が自由度\(n\)の\(\chi^2\)乗分布に従うということになります。\(X_i(i=1,…,n)\)の分散\(s\)の分布が\(\chi^2\)分布になるわけではありませんが、\(\frac{n}{\sigma^2}\)倍した値が自由度\(n\)の\(\chi^2\)分布に従うのです。 つまり、自由度\(n\)の\(\chi^2分布\)は、ある正規分布に従う母集団から\(n\)個のサンプルを取ったときの分散に関係するということです。 もっと単純化して言うと、定数倍の違いこそあれ本質的には、\(\chi^2\)分布はサンプルデータの分散の確率分布を表している、ということです。

 

 

Sがχ2乗分布に従うことがわかると何ができるの?

分散の検定ができます。 \(X_1,…,X_n\)が正規分布に従い、真の平均\(\mu\)がわかっている場合を想定します。
分散が\(\sigma^2\)であると仮定すると、標本から\(S\)の値が計算できます。\(S\)は自由度\(n\)の\(\chi^2\)分布に従うので、標本から計算された\(S\)が確率的にあり得る値かどうかを評価することで、分散を\(\sigma^2\)と仮定したことが妥当かどうかを評価できます。簡単な具体例を下記に示します。

具体例1

\(X_1,…,X_n\)が独立に正規分布に従うこと、その平均が\(\mu=50\)であるがわかっていて、手元に\(n=10\)個のデータ\(X_i(i=1,…,10)\)があったとします。 $$(X_1,…,X_{10})=(46.87, 50.92, 45.82, 57.98, 51.65, 45.90, 52.44, 53.69, 52.88, 48.47)$$ 分散はわからないけれど\(\sigma^2=5^2\)であると仮定した場合、この仮定は妥当かどうかを検定してみます。なお、上記の\(X_1,…,X_{10}\)は実際に平均\(\mu=50\)、分散\(\sigma^2=5^2\)の乱数を発生させているので、仮定は妥当になるはずです。 Rで書くと以下のようなコードになります。

n <- 10
mu <- 50
x_sgm <- 5     # 乱数を発生させるときのsgm
sgm <- x_sgm   # 検定の際に仮定するsgmm

set.seed(1)    # 解析の再現性を保つため乱数の種を固定

X <- rnorm(n, mean = mu, sd = x_sgm)    # X1,...,X10の乱数発生
s <- sum((X - mu)^2) / n              # 分散sの計算  = 14.15
S <- n / sgm^2 * s                    # 統計量Sの計算 = 5.659
p <- pchisq(S, df = n)                # 統計量がS以下になる確率 = 0.157 

#----------------------------------------
#  グラフを描く
#----------------------------------------
library(ggplot2)

ggplot() +
  xlim(0,30) +
  geom_function(fun = dchisq, args = list(df = n)) +
  geom_vline(xintercept = S, colour = "blue", lty = 2) +
  annotate("text", x = 6, y = 0.005, hjust = 0,label = "S = 5.659") +
  xlab(label = "S") +
  ylab(label = "density")

ggsave("chi.png", width = 5, height = 3.5)

計算してみると\(S\)は5.659になり、自由度\(n=10\)の\(\chi^2\)分布で統計量が5.659以下になる確率は15.7%となります(下の図の青破線の左の領域の面積が0.157になる)。一般に2.5%以下の確率になる場合、仮定がおかしいと評価します(有意水準\(\alpha\)=5%の両側検定の場合)。今回の結果からは、仮定はおかしいとは言えないという結果になります。本当の答えを仮定して乱数を発生させているので当然と言えば当然の結果ですが。

 

具体例2

同じ乱数に対し、\(\sigma^2=7^2\)と仮定して評価するとどうなるでしょう? 上のコードでsgm <- 7と書き換えて計算します。 この場合、S = 2.887、p = 1.6%となります。2.5%よりも小さい値ですので、通常起こり得ないと評価し、仮定した\(\sigma^2=7^2\)がおかしいと考えます。

平均値μが未知の場合は?

ここまで\(\mu\)がわかっていることを前提として話を進めてきました。でも平均値一般に真の平均値\(\mu\)はわからないことが多いです。平均値\(\mu\)がわからない場合はどうしたらよいのでしょう? \(\mu\)の代わりに\(\overline{X}\)を使って、\(S’=\sum_{i=1}^{n}(\frac{X_i-\overline{X}}{\sigma})^2\)を計算してみます。

$$ \begin{eqnarray} S’ &=& \sum_{i=1}^{n}(\frac{X_i-\overline{X}}{\sigma})^2 \\ &=& \frac{1}{\sigma^2}\sum_{i=1}^{n}{(X_i-\mu)-(\overline{X}-\mu)}^2 \\ &=& \frac{1}{\sigma^2}\sum_{i=1}^{n}{(X_i-\mu)^2-2(X_i-\mu)*(\overline{X}-\mu)+(\overline{X}-\mu)^2} \\ &=& \frac{1}{\sigma^2}{ \sum_{i=1}^{n}(X_i-\mu)^2-2\sum_{i=1}^{n}(X_i-\mu)(\overline{X}-\mu)+\sum_{i=1}^{n}(\overline{X}-\mu)^2} \\ &=& \frac{1}{\sigma^2}{ \sum_{i=1}^{n}(X_i-\mu)^2-2(\overline{X}-\mu)\sum_{i=1}^{n}(X_i-\mu)+\sum_{i=1}^{n}(\overline{X}-\mu)^2} \\ &=& \frac{1}{\sigma^2}{ \sum_{i=1}^{n}(X_i-\mu)^2-2(\overline{X}-\mu)(n\overline{X}-n\mu)+n(\overline{X}-\mu)^2} \\ &=& \frac{1}{\sigma^2}{ \sum_{i=1}^{n}(X_i-\mu)^2-n(\overline{X}-\mu)^2} \\ &=& S -\frac{n}{\sigma^2}(\overline{X}-\mu)^2 \\ &\neq& S \end{eqnarray} $$

計算は面倒ですが、丁寧に計算をしていくと\(S’\)が\(S\)とは\(\frac{n}{\sigma^2} (\overline{X}-\mu)^2\)だけ違うことがわかります。なので、こうやって計算した\(S’\)は自由度\(n\)の\(\chi^2\)分布には従いません。では、\(S’\)はどういう分布に従うのでしょう? 上の式を再度書き直すと

$$
S=S’+\frac{n}{\sigma^2} (\overline{X}-\mu)^2 \\
\sum_{i=1}^n(\frac{X_i-\mu}{\sigma})^2 =\sum_{i=1}^n(\frac{X_i-\overline{X}}{\sigma})^2+\frac{n}{\sigma^2} (\overline{X}-\mu)^2
$$

のようになります。さらに、\(Z_i = \frac{X_i-\mu}{\sigma}, \overline{Z}=\frac{\sum_{i=1}^nZ_i}{n}\)とおくと、この式は

$$
\sum_{i=1}^nZ_i^2 =\sum_{i=1}^n(Z_i-\overline{Z})^2 + n\overline{Z}^2
$$
と書き換えられます。

ここで「コクランの定理」というものを使います(コクランの定理は下の方を参照してください)。コクランの定理を使うと、右辺の第1項(\(=\sum_{i=1}^n(Z_i-\overline{Z})^2=S’\))、第2項(=\(n \overline{Z}^2=\frac{n}{\sigma^2} (\overline{X}-\mu)^2 \))はそれぞれ独立で、自由度n-1,1の\(\chi^2\)分布に従うことが示せます。 ようやく結論です。 \(S’\)(真の平均\(\mu\)ではなく、標本平均\(\overline{X}\)を用いて計算した値)は自由度\(n-1\)の\(\chi^2\)分布に従います。

$$ S’=\sum_{i=1}^n(Z_i-\overline{Z})^2 \\ =\sum_{i=1}^n(\frac{X_i-\overline{X}}{\sigma})^2 $$

\(S’\)がわかった場合にできることは、真の平均値\(\mu\)が既知の場合と同様です。ただ、使う分布が自由度\(n-1\)になります。以下、簡単な具体例を示します。

 

具体例3

具体例2と同じことを平均\(\mu\)がわからないとして計算すると2.8%になります。2.5%より大きな値になるので、通常起こり得ないとは言えず、仮定した\(\sigma^2=7^2\)がおかしいとは言えない結果になります。

n <- 10
mu <- 50
x_sgm <- 5
sgm <- 7

set.seed(1)

X <- rnorm(n, mean = mu, sd = x_sgm)
S <- sum((X - mean(X))^2) /sgm^2           # 分散sの計算は省略。統計量Sは標本平均を使って計算
p <- pchisq(S, df = n -1)           # χ2分布の自由度はn-1

コクランの定理

標本\(z_1,z_2,….,z_n\)が独立に標準正規分布\(N(0,1)\)に従い、その2乗和が適当な係数\(a_{ij}^{(k)}\)を用いて
$$
\sum_{i=1}^n z_i^2 = Q_1 + Q_2 + …. + Q_s\
Q_k = \sum_{i=1}^n\sum_{j=1}^n a_{ij}^{(k)}z_iz_j \
Q_k>0 \
$$
のように分解されたとする。\(Q_k\)の自由度を\(n_k\)とするとき、次の(a), (b)は同値である

(a) \(n_1+n_2+ … + n_s = n\)
(b) \(Q_k\)はそれぞれ独立に自由度\(n_k\)の\(\chi^2\)分布に従う

まとめ

自由度\(n\)の\(\chi^2\)分布は、ある正規分布に従う母集団から\(n\)個のサンプルを取ったときの分散に関係する。
誤解を恐れずもっと単純化して言うと、定数倍の違いこそあれ本質的には、\(\chi^2\)分布はサンプルデータの分散の確率分布を表している。