どうも、木村(@kimu3_slime)です。
今回は、2サンプルの平均の差の検定について、異サイズ等分散のケースを、Juliaを使って紹介します。
2サンプルの平均の差の検定
検定の原理と手順
あるテストを10人に受けてもらい、1ヶ月後別の20人に同じテストを受けてもらい、点数が次のようになったとしましょう。
1 2 3 4 | using HypothesisTests, Distributions, Random Random.seed!(2022) x = rand(Normal(50,10),10) |
1 2 3 4 5 6 7 8 9 10 11 | 10-element Vector{Float64}: 50.6912301164913 38.84399961848597 42.84480604223728 60.9769650429804 54.978651946367876 33.951339022096505 40.96806064167559 32.42960541746047 49.11909337153176 48.368593011534614 |
1 2 | Random.seed!(2023) y = rand(Normal(60,10),20) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 20-element Vector{Float64}: 57.23376737326983 53.31042496456294 33.575638089991145 69.02873395966154 49.88661922990406 77.13082098104172 73.73711455313895 52.50792918471635 60.55878925411058 55.519917656199226 73.0282906930819 67.7789909760568 56.790702213303554 48.80306427103682 60.33450567203198 61.989920125014635 62.119519366016895 87.65180984683572 50.055120974036186 53.34878940372904 |
それぞれの平均を計算してみると、
1 | mean(x),mean(y) |
1 | (45.31723442308618, 60.219523439387004) |
差には違いがあり、2回目の方が大きいように見えます。ただし、この数字を比較するだけでは、たまたま偶然によるブレがあったと言えるかもしれません。
そこで、2つのサンプルの差について、検定を行いましょう。
今回は、
- 2つのサンプルは正規分布に従っていて、分散が等しい
という仮定を置きます。サンプルのサイズは異なって良いものとします。これは2サンプルで等分散のt検定と呼ばれるものです。
2つのサンプルの母集団の平均を\(\mu_X ,\mu _Y\)とし、分散が等しく、サンプルサイズを\(n_X, n_Y\)としましょう。そしてサンプルの平均を\(M_X, M_Y\)、サンプルの不偏分散を\(S_X, S_Y\)とします。このとき、
\[T= \sqrt{\frac{n_X n_Y (n_X+n_Y -2)}{n_X +n_Y}} \frac{(M_X-M_Y)-(\mu_X -\mu_Y)}{\sqrt{n_X S_X ^2 +n_Y S_Y ^2}}\]
は自由度\(n_X+n_Y-2\)のt分布に従うことが知られています。それはカイ二乗分布との関係から、計算で示せます。
参考:ホーエル「入門数理統計学」10.5. t分布の応用
帰無仮説として
\[H_0: \mu_X = \mu _Y\]
対立仮説として
\[H_1: \mu_X \neq \mu _Y\]
を設定しましょう。一方は平均の差が0、もう一方は平均の差が0でない、という仮説です。
有意水準を\(\alpha\)として決めたとき、帰無仮説が正しい仮定のもとで、
\[P(c_1 \leq T \leq c_2) = 1-\alpha\]
となる区間を求めることができます。
- サンプルの差がこの区間に入るならば、帰無仮説は棄却されない
- サンプルの差がこの区間に入らないならば、帰無仮説は棄却される
という考え方で、検定を行えます。
検定のやり方
以上が平均の差の検定の原理です。ここからは、実際に検定を行ってみましょう。
JuliaのパッケージHypothesisTestsでは、「EqualVarianceTTest(x,y)」で平均の差が0であるという仮説を検定できます。
1 | EqualVarianceTTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Two sample t-test (equal variance) ---------------------------------- Population details: parameter of interest: Mean difference value under h_0: 0 point estimate: -14.9023 95% confidence interval: (-23.81, -5.997) Test summary: outcome with 95% confidence: reject h_0 two-sided p-value: 0.0019 Details: number of observations: [10,20] t-statistic: -3.427930730722703 degrees of freedom: 28 empirical standard error: 4.347313346427805 |
最初に示したサンプルを検定すると、有意水準が\(\alpha =0.05\)のときは、仮説が棄却されることがわかりました。平均に差があるという仮説が支持されたわけです。
一方で、帰無仮説が棄却される最小の有意水準の値=p値は約0.002です。\(\alpha=0.001\)と設定していたときは、帰無仮説は棄却されない、平均に差がない可能性が否定されません。
母集団の平均が近いサンプルを用意すると、平均に差があるという仮説は棄却されなくなります。
1 2 3 4 5 | Random.seed!(2022) x = rand(Normal(50,10),10) Random.seed!(2023) y = rand(Normal(52,10),20) EqualVarianceTTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Two sample t-test (equal variance) ---------------------------------- Population details: parameter of interest: Mean difference value under h_0: 0 point estimate: -6.90229 95% confidence interval: (-15.81, 2.003) Test summary: outcome with 95% confidence: fail to reject h_0 two-sided p-value: 0.1236 Details: number of observations: [10,20] t-statistic: -1.5877137133380173 degrees of freedom: 28 empirical standard error: 4.347313346427805 |
同じ平均の設定のもとで、サンプルサイズを大きくすると、平均の違いが検知されるようになります。
1 2 3 4 5 | Random.seed!(2022) x = rand(Normal(50,10),50) Random.seed!(2023) y = rand(Normal(52,10),100) EqualVarianceTTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Two sample t-test (equal variance) ---------------------------------- Population details: parameter of interest: Mean difference value under h_0: 0 point estimate: -5.05187 95% confidence interval: (-8.536, -1.567) Test summary: outcome with 95% confidence: reject h_0 two-sided p-value: 0.0048 Details: number of observations: [50,100] t-statistic: -2.8650142473695146 degrees of freedom: 148 empirical standard error: 1.763297020642981 |
サンプルサイズが小さいと、仮に平均に差があったとしても、検定で見抜けない可能性があるわけです。
逆に言えば、どんなに小さな平均の差であったとしても、サンプルサイズを増やして検定をすれば、平均に差がないという仮説が棄却されるようになります。「差がある」仮説が棄却されないからといって、「差が大きい」とは限らないことに注意しましょう。
最後に、有意水準に関する検証をしましょう。
何度も検定を繰り返したとき、帰無仮説が正しいにもかかわらずそれを棄却する割合が有意水準\(\alpha\)です。
母集団分布の平均に差がないデータを与えて、棄却される割合を計算してみましょう。「pvalue(検定)」で、検定のp値を求められます。
1 2 3 4 5 6 7 8 9 10 11 12 | k = 10^4 α = 0.05 rej = 0 for i in 1:k x = rand(Normal(50,10),10) y = rand(Normal(50,10),20) if pvalue(EqualVarianceTTest(x,y)) < α rej += 1 else end end rej/k |
1 | 0.0515 |
10000回サンプルを取って検定を繰り返した結果、約5%が棄却されました。これが有意水準\(\alpha =0.05\)の意味ですね。
以上、2サンプルの平均の差の検定について、異サイズ等分散のケースを、Juliaを使って紹介してきました。
等分散のt検定は特にスチューデントのt検定(Student’s t-test)と呼ばれ、異分散のときはウェルチのt検定(Welch’s t-test)が知られています。
検定量の形は変わりますが、いずれもt分布を利用して検定できる点は共通していますね。
木村すらいむ(@kimu3_slime)でした。ではでは。
Probability and Statistics: Pearson New International Edition
Pearson Education Limited (2013-07-30T00:00:01Z)
¥10,792 (中古品)
培風館 (1978-01-01T00:00:01Z)
¥5,280
Advanced Engineering Mathematics
John Wiley & Sons Inc (2011-05-03T00:00:01Z)
¥5,862 (中古品)
こちらもおすすめ
2サンプルの平均の差の検定:等サイズ等分散、Juliaを使って
統計的仮説検定とは:平均の検定、t検定を例に、Juliaを使って