【等分散の仮定】2標本問題ってなんだ?|python
確率変数が2つ登場するため、難しいですが、応用上用いられることが多いのが「2標本問題」です。
中でも今回は、二つの確率変数が同一の分散であると仮定した「等分散の仮定」に基づいて解説していきます。
等分散の仮定が認められないときには、Welchのt検定を使います。詳しくは、【非等分散編】pythonでWelchのt検定をやってみたをご覧ください。
統計検定のチートシートは以下をクリック!
【最短合格】統計検定準一級のチートシート|難易度や出題範囲について
【最短】統計検定2級合格ロードマップとチートシート|おすすめの本について
2標本問題
2標本問題とは、以下のような状況です。
X1,...,Xm ~ N(μ1,σ^2) でiid Y1,...,Yn ~ N(μ2,σ^2) でiid X1,...,Xm と Y1,...,Ynは互いに独立 確率変数Xと確率変数Yはそれぞれ正規分布に従っている。 この時の、2標本間の母平均に差があるかどうかを知りたい。
まず覚えていただきたいのが、2標本問題では、標本間の平均値に差があるかを知りたい、ということです。
ここまで聞いて、帰無仮説と対立仮説が浮かんだ方はかなり鋭いです。
よく使われるのが、以下のような治験の例です。
血圧を下げる新しい薬の効果を調べたいです。 m人の試験者に血圧を下げるとされる新薬を投与し、n人には偽薬を与えました。 処置群の血圧の平均値をμ1、コントロール群の血圧の平均値をμ2とします。 その平均の差が有意か調べたいです。
帰無仮説:\(μ1 = μ2\)
対立仮説:\(μ1≠ μ2)
以上のように、帰無仮説と対立仮説を設定できたと思います。
棄却したい条件、今回なら新薬を投与してもしなくても血圧の平均は変わらない、を帰無仮説とします。
両側検定の対立仮説は、「新薬は、血圧を下げることもあれば、上げることもある」ですので、\(μ1<μ2\)のように、片側検定の対立仮説を置いても良いでしょう。
では、検定の手順に移っていきます。
1:標本平均の差を出す
$$|\overline{X}- \overline{Y}|,μ_{1}=μ_{2}$$
そのまま帰無仮説の右辺を移行した形になります。
差の絶対値が、どんな分布に従うかを知る必要がありました。
2:標本平均の差の絶対値がある値Cを超えるとき、帰無仮説を棄却する
$$|\overline{X}- \overline{Y}|>C→H_{0}は棄却される$$
3:差の絶対値が従う分布を調べる
まず、それぞれの標本平均が従う分布は、各確率変数が従う正規分布の「平均をサンプル数で割り」、「分散をサンプル数の2乗で割った」正規分布です。
$$\overline{X}〜N(μ_{1},\frac{σ^2}{m}), \overline{Y}〜N(μ_{2},\frac{σ^2}{n})$$
上のような形になります。こちらの差を取り、絶対値を取るので、以下のようになります。
$$\overline{X}-\overline{Y}〜N(|μ_{1}-μ_{2},\frac{σ^2}{m}+\frac{σ^2}{n})$$
差をとっているので、平均は差を取り、分散は和を取ります。
そもそも標本平均や差の絶対値が従う分布がわかるのでしょうか?
ここで、正規分布の再生性が活躍します。
何気なくやる計算も、再生性という性質がなければ線形変換した値の分布がわからなくなってしまいます。
正規分布の再生性に関しては、【例題つき】正規分布の確率密度についてをご覧くださいませ。
4:標準化する。
そのままでは使いづらいので、標準化しようと思います。
差の絶対値に対する処置は、「平均分引き、標準偏差だけ割る」です。
$$Z=\frac{|\overline{X}-\overline{Y}|-|μ_1-μ_2|}{σ\sqrt{m-{-1}+n^{-1}}}〜N(0,1)$$
ややこしくなってきたので、Zに置き換えます。
また、帰無仮説の元では2標本間の平均は等しいので、|μ1 – μ2|=0になります。分子が軽くなりました。
このように、標準正規分布に従うようになりました。
5:誤棄却の確率αを求める
こちらは、「帰無仮説が正しいのに、帰無仮説を棄却してしまう」確率であり、いわゆる第一種の過誤です。
有意水準とp値について復習したい方はこちらをご覧ください。
【仮説検定】p値をゼロから解説(第一種の過誤,第二種の過誤,検出力)
$$α=P(|Z|>C|H_0)=2P(Z>C|H_0)$$
$$\frac{|\overline{X}-\overline{Y}|-|μ_1-μ_2|}{σ\sqrt{m-{-1}+n^{-1}}}=z_{\frac{α}{2}}$$
$$|\overliner{X}-\overline{Y}|=σ\sqrt{\frac{m+n}{mn}}z_{\frac{α}{2}}$$
また、Cは2分のα分位点に一致することになります。
よって、\(Z\)が2分の\(α\)分位点よりも大きい時に、帰無仮説を棄却できます(嬉しい)。
さて、ここで一つ不明のものがあります。「標準偏差\(σ\)」です。
6:母分散σ^2を不偏分散に置き換える
不偏分散を使えば、置き換えた結果の検定統計量もt分布に従い、かつ不偏分散は自由度(m+n-2)のカイ2乗分布に従います。
不偏分散については、【n-1】不偏分散を解説します。をご覧ください。
今回は、等分散の仮定があるので、2標本を使った不偏分散を作ります。
$$V^2=\frac{1}{m+n-2}(\sum_{i=0}^m(X_i-\overline{X})^2\sum_{i=0}^m(Y_i-\overline{Y})^2)$$
Xの不偏分散とYの不偏分散の加重平均をとっているだけです。簡単ですね。
よって、新しい検定統計量Tは自由度\(m+n-2\)のt分布に従うことがわかりました。
$$T = \frac{|\overline{X}-\overline{Y}|}{V\sqrt{m^{-1}+n^{-1}}}〜t_{m+n-2,\frac{α}{2}}$$
等分散の仮定
冒頭でも解説しましたが、等分散の仮定とは「二つの確率変数の母分散が同じである」とする強い仮定のことです。
「そんなこと現実的にあり得るのか」という疑問もあると思います。
等分散の仮定は、社会科学の分野ではほとんど効果を発揮しません。自然科学の分野では使われることが多めです。
なぜなら、外部の影響を受けないように管理された実験系の場合、「計測器によるばらつき」などは「等分散の仮定」を置いても一定の妥当性があるからです。
実際の問題を解く
血圧を下げる新しい薬の効果を調べたいです。 10人の試験者に血圧を下げるとされる新薬を投与し、10人には偽薬を与えました。 処置群の血圧の平均値が94、コントロール群の血圧の平均値が100でした。 有意水準95%その平均の差が有意か調べたいです。 ただし、不偏分散は6.4であるとします。
では、以上のような問題を解いてみましょう。
先ほどの式に当てはめると、検定統計量は自由度18のt分布に従うことがわかります。
$$T = \frac{|100-94|}{6.4\sqrt{10^{-1}+10^{-1}}}〜t_{18,\frac{α}{2}}$$
計算すると、検定統計量は2.096‥でした!
t分布表を見ると、値は\(2.101\)です。\(T < 2.101\)なので、帰無仮説を棄却することはできません。
つまり、「新薬に血圧に明確な効果があるとは言えない」です。
φ(自由度) | 95%(片側) | 95%(両側) |
1 | 6.3137 | 12.7062 |
2 | 2.9200 | 4.3027 |
3 | 2.3534 | 3.1824 |
4 | 2.1318 | 2.7765 |
‥ | ‥ | ‥ |
17 | 1.7396 | 2.1098 |
18 | 1.7341 | 2.1009 |
19 | 1.7291 | 2.0930 |
20 | 1.7247 | 2.0860 |
21 | 1.7207 | 2.0796 |
CODE|python
ここでは、pythonで等分散の検定を行うコードを紹介いたします。
import scipy.stats as stats
data1 = [34, 23, 44, 29, 26]
data2 = [44, 39, 29, 23, 33]
stat, p = stats.levene(data1, data2)
print("Statistic: ", stat)
print("p-value: ", p)
if p < 0.05:
print("The variances are not equal.")
else:
print("The variances are equal.")
statsライブラリのleveneというメソッドを使えば簡単に検定を行うことができます。
Statistic: 0.015414258188824687 p-value: 0.9042560437250893 The variances are equal.
このように評価されたと思います。
有意水準0.05では、「分散は異なる」と判断されなかったようです。