どうも、木村(@kimu3_slime)です。
今回は、2サンプルの分散の比の検定について、F分布とは何か、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 | var(x),var(y) |
1 | (83.71338280293834, 146.02198825012428) |
とそれほど大きな違いはありません。このとき、母集団分布の分散は等しいと結論づけることはできるでしょうか。
そこで、2つのサンプルの分散の比について、検定を行いましょう。
今回は、
- 2つのサンプルは正規分布に従っている
という仮定を置きます。サンプルのサイズは異なって良いものとします。これは2サンプルの分散の比に関するF検定(F-test)と呼ばれるものです。
2つのサンプルの母集団の分散を\(\sigma_X^2 ,\sigma _Y^2\)とし、サンプルサイズを\(n_X, n_Y\)としましょう。そしてサンプルの不偏分散を\(S_X^2, S_Y^2\)とします。このとき、
\[F= \frac{S_X^2}{S_Y^2}\]
は自由度\((n_X-1,n_Y-1)\)のF分布に従うことが知られています。(これはカイ二乗分布から導けます。)
F分布(F-distribution)とは、確率密度関数を\(x>0\)のとき
\[f(x) = \frac{1}{x B(\frac{\nu_1}{2}, \frac{\nu_2}{2}) }\sqrt{\frac{(\nu_1 x)^{\nu_1} \cdot \nu_2 ^{\nu_2}}{(\nu_1 x + \nu_2)^{\nu_1 +\nu_2}} } \]
とする確率分布です。ここで\(B\)はベータ関数であり、2つのパラメータ\((\nu_1,\nu_2)\)は自由度(degree of freedom)と呼ばれています。
帰無仮説として
\[H_0: \sigma_X ^2 = \sigma_Y ^2\]
対立仮説として
\[H_1:\sigma_X ^2 \neq \sigma_Y ^2\]
を設定しましょう。一方は分散の比が1である、もう一方は分散の比が1でない、という仮説とも言いかえられます。
有意水準を\(\alpha\)として決めたとき、帰無仮説が正しい仮定のもとで、
\[P(c_1 \leq F \leq c_2) = 1-\alpha\]
となる区間を求めることができます。
- サンプルの差がこの区間に入るならば、帰無仮説は棄却されない
- サンプルの差がこの区間に入らないならば、帰無仮説は棄却される
という考え方で、検定を行えます。
検定のやり方
以上が分散の比の検定の原理です。ここからは、実際に検定を行ってみましょう。
JuliaのパッケージHypothesisTestsでは、「VarianceFTest(x,y)」で分散の比が1であるという仮説を検定できます。
1 | EqualVarianceTTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Variance F-test --------------- Population details: parameter of interest: variance ratio value under h_0: 1.0 point estimate: 0.573293 Test summary: outcome with 95% confidence: fail to reject h_0 two-sided p-value: 0.3952 Details: number of observations: [10, 20] F statistic: 0.5732929937890165 degrees of freedom: [9, 19] |
最初に示したサンプルを検定すると、分散の比が1であるという仮説は棄却されませんでした。つまり、同じ分散を持っている可能性があるというわけです。
異なる分散を持つ分布を設定し、そこからサンプルを得ると、検定によって検出されます。
1 2 3 4 5 | Random.seed!(2022) x = rand(Normal(50,10),10) Random.seed!(2023) y = rand(Normal(60,20),20) VarianceFTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Variance F-test --------------- Population details: parameter of interest: variance ratio value under h_0: 1.0 point estimate: 0.143323 Test summary: outcome with 95% confidence: reject h_0 two-sided p-value: 0.0052 Details: number of observations: [10, 20] F statistic: 0.14332324844725416 degrees of freedom: [9, 19] |
小さな分散の違いは、検出されにくいです。
1 2 3 4 5 | Random.seed!(2022) x = rand(Normal(50,10),10) Random.seed!(2023) y = rand(Normal(60,14),20) VarianceFTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Variance F-test --------------- Population details: parameter of interest: variance ratio value under h_0: 1.0 point estimate: 0.292496 Test summary: outcome with 95% confidence: fail to reject h_0 two-sided p-value: 0.0634 Details: number of observations: [10, 20] F statistic: 0.29249642540255955 degrees of freedom: [9, 19] |
同じ分散の設定のもとでも、サンプルサイズを増やせれば小さな違いが検出されるようになります。
1 2 3 4 5 | Random.seed!(2022) x = rand(Normal(50,10),50) Random.seed!(2023) y = rand(Normal(60,14),100) VarianceFTest(x,y) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Variance F-test --------------- Population details: parameter of interest: variance ratio value under h_0: 1.0 point estimate: 0.500419 Test summary: outcome with 95% confidence: reject h_0 two-sided p-value: 0.0083 Details: number of observations: [50, 100] F statistic: 0.5004194324337277 degrees of freedom: [49, 99] |
検定によって「分散の比が1でない」と考えられることと、「分散の違いが大きい」ことは一般に別物なので注意しましょう。
最後に、有意水準に関する検証をしましょう。
何度も検定を繰り返したとき、帰無仮説が正しいにもかかわらずそれを棄却する割合が有意水準\(\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(60,10),20) if pvalue(VarianceFTest(x,y)) < α rej += 1 else end end rej/k |
1 | 0.0509 |
10000回サンプルを取って検定を繰り返した結果、約5%が棄却されました。これが有意水準\(\alpha =0.05\)の意味ですね。
以上、2サンプルの分散の比の検定について、F分布とは何か、Juliaによる例を紹介してきました。
平均の差に関するt検定では、分散が等しいことを仮定することがありますが、そのチェックとしてもF検定は使えますね。
木村すらいむ(@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 (中古品)
こちらもおすすめ
正規分布の分散の検定、カイ二乗検定とは:Juliaによる求め方
2サンプルの平均の差の検定:等サイズ等分散、Juliaを使って
統計的仮説検定とは:平均の検定、t検定を例に、Juliaを使って