検定#
統計的仮説検定#
帰無仮説(null hypothesis)
例えば、母集団の確率分布を
のように帰無仮説と対立仮説を設定する。
仮説検定方式#
標本空間
棄却域(rejection region)
受容域(acceptance region)
とに分割するルールのことを仮説検定方式(hypothesis testing procedure)という。
また標本
有意水準#
もし帰無仮説を棄却したとき、その判断が間違っている可能性をコントロールしたい。
そこで、帰無仮説
を満たすように棄却域を調整する。この
ここで
例えば、標本平均がある値
という両側検定は、適当な定数
ならば を棄却する ならば を受容する
と書き換えることができる。この場合、
となる。
有意水準が
となるような
TODO: 続きかく
import numpy as np
from scipy import stats
import pandas as pd
import matplotlib.pyplot as plt
正規母集団に関する検定#
母集団の分布が正規分布ときの検定について。
母平均に関する検定#
母平均
両側検定
が既知の場合#
検定統計量は標本平均
を使用する。
帰無仮説が正しければ、標本平均は中心極限定理により正規分布
言い換えると
とする。(絶対値を使うのは正規分布が原点に対し対称な分布であるため)
が未知の場合#
母分散
を使用する。
帰無仮説が正しければ、検定統計量
とする。
多項分布に関する検定#
カイ2乗適合度検定#
クロス表(多項分布)において、観測データの確率分布が理論上想定される確率分布に等しいかどうかを調べる検定がカイ2乗適合度検定である。
それぞれのカテゴリーに入る(真の)確率を
これをカテゴリーに関するカイ2乗適合度検定(chi-square test of goodness of fit)という。
にもとづいて測ることができるので、ピアソンのカイ2乗検定統計量
を使って検定を行うことができる
(ここで
とする検定を考えればよいことになる。ただし
Show code cell source
from scipy.stats import chi2
x = np.linspace(0, 20, 100)
dist = chi2(df=5)
y = dist.pdf(x)
fig, ax = plt.subplots()
ax.plot(x, y, label=r"$\chi^2_{K-1}$")
ax.axhline(color="gray", alpha=0.5)
alpha = 0.95
t = dist.ppf(alpha)
ax.text(t, -dist.pdf(t) * 0.7, r"$\chi^2_{K-1, \alpha}$", ha="center")
ax.fill_between(x=x[x > t], y1=y[x > t], alpha=.5)
ax.axis("off")
ax.legend()
fig.show()

(命題) は のもとで に収束する
(証明)
例#
日本人1000人の血液型を調べたところ、次のようになったとする。
Show code cell source
import pandas as pd
from scipy.stats import multinomial, chi2
n = 1000
pi = np.array([.4, .2, .3, .1]) # 理論確率
# データの生成
m = multinomial(n=1, p=pi)
x = m.rvs(size=n, random_state=100).sum(axis=0)
d = pd.DataFrame([x], columns=["A", "B", "O", "AB"], index=["観測度数"])
d
A | B | O | AB | |
---|---|---|---|---|
観測度数 | 371 | 200 | 337 | 92 |
日本人における血液型の割合は、おおよそA型40%、B型20%、O型30%、AB型10%といわれている(一般社団法人日本血液製剤協会)。
これを理論確率
Show code cell source
d.loc["期待度数", :] = pi * n
d
A | B | O | AB | |
---|---|---|---|---|
観測度数 | 371.0 | 200.0 | 337.0 | 92.0 |
期待度数 | 400.0 | 200.0 | 300.0 | 100.0 |
ピアソンのカイ2乗検定統計量
を計算すると次のようになる
Q = sum( (x - pi * n)**2 / (pi * n) )
Q
7.305833333333333
Show code cell source
from scipy.stats import chi2
K = len(d.columns)
df = K - 1
x = np.linspace(0, 15, 100)
dist = chi2(df=df)
y = dist.pdf(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.axhline(color="gray", alpha=0.5)
ax.set(title=r"$\chi^2_{K-1}$ and Q")
alpha = 0.95
t = dist.ppf(alpha)
ax.text(t, dist.pdf(t) * 1.1, r"$\chi^2_{K-1, \alpha}$")
ax.fill_between(x=x[x > t], y1=y[x > t], alpha=.5)
ax.vlines(Q, 0, dist.pdf(Q) * 1.4, color="tomato")
ax.text(Q, dist.pdf(Q) * 1.5, f"Q = {Q:.1f}", ha="center", color="tomato")
fig.show()

独立性の検定#
TODO
尤度比検定#
尤度を用いた検定。
最尤推定量の漸近正規性#
ワルド検定#
帰無仮説のもとでの漸近分布が正規分布で近似できるとき、それを利用して
という棄却域を作る
スコア検定#
スコア検定 (score test)はスコア関数
に基づいた検定方式である。
となる。
となる.
を棄却域とする検定をスコア検定という。