信頼区間を利用することで、統計的検定を行うことができる。統計的検定とは、とある母集団の性質に関する帰無仮説 \(H_0\) を棄却できるか、対立仮説の方が妥当か否かを検定するものである。
それではt検定の手順を見ていこう。 例: 製品の性能チェック。使用可能時間が1600時間とうたっている、ある電球を10個調査したところ、使用可能時間の 標本平均は1598時間、標準偏差の不偏推定量は\(\sqrt{10}\)時間であった。このとき、”使用可能時間が1600時間”という表示は妥 当なものであろうか?
第1に、統計的検定では検証したい仮説、帰無仮説 \(H_0\) を設定する。この場合、検定したい仮説は \(H_0: \mu = 1600\) である。統計的検定では、帰無仮説を設定すると同時に対立仮説 \(H_1\) が定める。ここでの対立仮説は、\(H_1: \mu \neq 1600\) である。
第2に、この帰無仮説 \(H_0: \mu = 1600\) が妥当という想定のもと、\(z\) を計算する。つまり、 \[\begin{equation}
z = \frac{1600 - 1598}{\frac{\sqrt{10}}{\sqrt{10}}} = 2
\end{equation}\]
第3に、計算した \(z\) が、自由度 \(N - 1\) のt分布において、どの程度実現しうる値なのかを計算する。特に、95%信頼区間 (この \(N = 10\) の例では、\(-2.26 \le z \le 2.26\)) 、99%信頼区間 (この \(N = 10\) の例では、\(-3.25 \le z \le 3.25\)) に含まれるかどうかを確認する (\(N\)が十分大きくて、標準化したデータ平均が正規分布に従うときとは異なる値であることに注意)。
最終的に、95%信頼区間に \(z\) が含まれている場合、帰無仮説 \(H_0: \mu = 1600\)は5%有意水準にて棄却できない、と判断される(あくまで棄却できないだけであり、帰無仮説が妥当であると判断されてないことに留意)。さらに、99%信頼区間に \(z\) が含まれている場合、帰無仮説 \(H_0: \mu = 1600\)は1%有意水準にて棄却できない、と判断される。
さらに、このように t分布 を利用した母集団平均に関する統計的検定を t検定 と呼ぶ。統計的検定において最も主流に利用されている検定手法の一つである。
上記では0から(1から?)統計的検定を行う方法を示してきた。しかしながら、通常の場合、統計的検定はRやPythonやMATLAB上でサクッと計算されることが圧倒的に多い (excelでもできる)。
上記の男女の身長差の例において、男性の身長、女性の身長の母集団分布をともにガウス分布と想定してシミュレーションしてみる (本来、ガウス分布かどうかはわからない)。ここでのt検定は、
x1 = rnorm(50, 170, 5) # Assume: 男性
x2 = rnorm(50, 163, 7) # Assume: 女性
t.test(x1, x2)
##
## Welch Two Sample t-test
##
## data: x1 and x2
## t = 5.3418, df = 90.438, p-value = 6.813e-07
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 4.485102 9.796084
## sample estimates:
## mean of x mean of y
## 170.2564 163.1158
ここで重要な指標がいくつか出てくる。多くの場合、着目される指標が p-value (p値) である。
p-valueとは、計算された z が、\(100(1-p)\)%信頼区間に含まれることを意味する (また、あまりおすすめできない片側検定というものもあり、片側検定でのp-valueは意味が異なる)。すなわち、p-valueが小さいほど、とても広い信頼区間を想定しない限り実現されない \(z\) となることを意味する。そのため、p-valueが小さいほど、帰無仮説は強く棄却されることを意味する。
加えて、“95 percent confidence interval” は95%信頼区間であり、これまた重要な指標である。
電球の例であれば、
x = rnorm(10, 1598, 10)
x = 1600-x
t.test(x)
##
## One Sample t-test
##
## data: x
## t = 1.8758, df = 9, p-value = 0.09343
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -1.262909 13.524831
## sample estimates:
## mean of x
## 6.130961
上記のようにt検定を行う。1種類のデータに対するt検定は“0と異なるかどうか”を検定する。すなわち、1600と異なるかどうかは、1600-xが0と異なるかどうかを検定すればよいということである。
男女の身長差を検証する例では、1人目の男性と1人目の女性、2人目の男性と2人目の女性、… は関係ないことが多い。この場合は、上記のように t 検定を行う。その一方、同じ人が数学と物理のテストを受け、数学のテストと物理のテストの得点に差があるか、ということを検証したい場合はどうであろうか。1人目の数学のテストの得点と1人目の物理のテストの得点、2人目の数学のテストの得点と2人目の物理のテストの得点、… は非常に関係があり、この対応関係を考慮する必要がある。このように、対応がある2つのことに差があるかどうかを検証する場合、対応ありのt検定がより妥当な統計的検定となる。
x1 = runif(50, 10, 70) # Assume: 数学
x2 = runif(50, 20, 80) # Assume: 物理
t.test(x1, x2, paired = T)
##
## Paired t-test
##
## data: x1 and x2
## t = -4.2823, df = 49, p-value = 8.592e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -22.033882 -7.958922
## sample estimates:
## mean of the differences
## -14.9964
“paired = T” を追加することにより、対応ありt検定が実行可能である。
これまで学んできた統計的検定(主にt検定)は、2群での比較(通常のt検定)もしくは1群での比較(paired t検定)のどちらかであった。それでは、3群以上を比較するときにはどのような統計的検定が必要であろうか。
例: 大多数の人が所属するグループA, B, Cにおけるテストの得点を比べる。グループA, B, Cからそれぞれ10名の得点を調査し、平均点はそれぞれ61点、62点、64点、標準偏差の不偏推定量は共通して\(\sqrt{10}\)であった。このとき、グループA, B, Cの間に差はあるといえるのか?
解答例(?): 標準化したデータ平均を計算して、帰無仮説\(H_0: \mu_A = \mu_B\)、\(H_0: \mu_B = \mu_C\)、\(H_0: \mu_C = \mu_A\)をそれぞれ検証すれば良い。
→ 一般的には、これだけでは不十分であると言われている。なぜだろうか?
なぜ不十分か、それは“少なくとも1つは帰無仮説が棄却される確率が増える”から。5%有意水準でグループCとAに有意差が認められたとする(=帰無仮説が棄却されたとする)。これは5%であたりがでるくじを3回引いて、少なくとも1回あたりである確率と何が違うのであろうか?この場合、\(1 - (19/20)^3 = 0.14\)。有意水準は5%に設定しているものの、3グループを比べると、“本来差がなくとも十分に有意差が検出されてしまう”であろう確率である。
さらに、グループが10種類あったとして、2つづつ比較する場合の数は\(_{10}C_2 = 45\)通り。少なくとも1パターン、5%有意水準にて有意差が認められる確率はいくつであろうか?確率は0.4になる。ほぼコインを投げて表がでる確率と等しくなる。これを認めるならば、意味なくグループを分けて“通常のt検定”で比較すれば、いずれか差が出ることを意味する。複数グループを比較するにはどのようにすれば良いのであろうか?
t検定などを利用して複数グループの比較を行う場合、検証する信頼区間もしくは有意水準を変更する。特に、検定を行えば行うほど帰無仮説は棄却されやすくなるため、有意水準を5%から下げる。最も厳しく有意水準を下げる方法は、Bonferroni’s correctionであり、有意水準(通常は5%)を、 \[\begin{equation} \mathrm{有意水準} / \mathrm{検定を行う回数} \end{equation}\] にすることである。例えば10グループの比較において、有意水準を\(5/45\)に下げると、少なくとも1つ有意差が検出される確率は\(1 - (1 - 0.05/45)^45 = 0.049\)になる。つまり、“本来差がなくとも十分に有意差が検出されてしまう”確率は0.05となり、これならば検出される有意差は意義があるものであると期待できる。
複数の治療法を比較して、それぞれの治療法が異なるか否かを検証する。計測された改善度を\(x\)として、治療法\(j\)を利用した被験者\(k\)の改善度は\(x_{jk}\)であるとする。以下の表のようにデータが計測されたとする。
| Treatment | Data | Mean |
|---|---|---|
| Treatment 1 | \(x_{11}\) \(x_{12}\) … \(x_{1b}\) | \(\bar{x}_{1.}\) |
| Treatment 2 | \(x_{21}\) \(x_{22}\) … \(x_{2b}\) | \(\bar{x}_{2.}\) |
| … | … | |
| Treatment a | \(x_{a1}\) \(x_{a2}\) … \(x_{ab}\) | \(\bar{x}_{a.}\) |
このとき、治療法が異なるか否かを検証する。\(_a C_2\)回t検定を行う選択肢も場合によってはあり得るが、補正が必須なため本来差があるはずのものを差がないと判定されやすい傾向にある。このような複数の条件において条件間に差があるか否かは、一般的に分散分析がよく利用される。
上記の表は1要因の分析であり、1要因の分散分析を利用する。1要因の分散分析では、第一に各データ\(x_{jk}\)は確率変数\(X_{jk}\)の実現値であると想定する(これまでと同じ)。加えて、\(X_{jk}\)は \[\begin{equation}
X_{jk} = \mu_j + \Delta_{jk}
\end{equation}\] に従うと想定する。ここで、\(\Delta_{jk}\)は独立な平均0、分散\(\sigma^2\)のガウス分布に従う確率変数、\(\mu_j\)は治療法\(j\)の効果である。つまり、治療法\(j\)を受けた被験者\(k\)から計測される改善度は、平均\(\mu_j\)、分散\(\sigma^2\)のガウス分布から実現される値であると想定する。もしくは、 \[\begin{equation}
\mu = \frac{1}{a}\sum_{j = 1}^a\mu_j
\end{equation}\] とすると、\(\mu_j = \mu + \alpha_j\) (\(\sum_{j = 1}^a\alpha_j = 0\)) として \[\begin{equation}
X_{jk} = \mu + \alpha_j + \Delta_{jk} \ (\sum_{j = 1}^a\alpha_j = 0)
\end{equation}\] と書き直すことことができる。そして、帰無仮説\(H_0: \alpha_j = 0 \ (j = 1, ..., a)\)もしくは\(H_0: \mu_j = \mu \ (j = 1, ..., a)\) (i.e., 治療法\(j\)の効果は他の治療法と変わらないという仮説) が妥当か否かを検証する。これが分散分析である。そもそもt検定では、治療法1と2は異なるか、治療法1と3は異なるか、治療法2と3は異なるか、を検定して有意差がなければおおよそ同じ、と結論づけるが、直接3つが同じという検定ではない。そのため、3つが同じか否かの検定は分散分析がより妥当である。
1要因の分散分析(1元配置分散分析)は、以下のように実装できる。この場合、帰無仮説が棄却され、グループの主効果(=治療法の違い)がある可能性が高い。
x1 = rnorm(50, 1, 1) # Assume: 治療法1
x2 = rnorm(50, 2, 1) # Assume: 治療法2
x3 = rnorm(50, 3, 1) # Assume: 治療法3
xvec = c(c(x1, x2), x3)
group = factor(rep(c("1", "2", "3"), c(50, 50, 50))) # factorで定義
anova(aov(xvec~group))
## Analysis of Variance Table
##
## Response: xvec
## Df Sum Sq Mean Sq F value Pr(>F)
## group 2 75.08 37.540 35.578 2.503e-13 ***
## Residuals 147 155.11 1.055
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
同様にして、2要因の分散分析も考えることができる(2元配置分散分析)。例えば、治療法\(j\)を病院\(k\)で受けた被験者の改善度が\(x_{jk}\)のとき、治療法と病院の影響があるかどうかの検定。 \[\begin{equation}
X_{jk} = \mu + \alpha_{j} + \beta_{k} + \Delta_{jk}
\end{equation}\] もしくは、交互作用\(\gamma_{jk}\)を加えた2要因の分散分析も考えることができる。交互作用とは、治療法1と2の効果のみが病院1,2で高く、治療法3と4はどの病院でも同じ場合などに有意に0と異なる。 \[\begin{equation}
X_{jk} = \mu + \alpha_{j} + \beta_{k} + \gamma_{jk} + \Delta_{jk}
\end{equation}\]
分散分析に関する補足(Advanced topics): 上記の治療法の場合、すべての被験者は異なる。一方、同一の被験者がエクササイズ1,2,3を行い効果の違いを検証する場合、反復測定分散分析を行う必要がある。これは混合モデルと呼ばれる確率モデルを考えることに等しくなる。さらに分散分析は一般化線形モデルと呼ばれるモデルを利用した統計解析と等価であり、一般化線形モデルに要因を足していくとさらに複雑な条件まで考えることができる分散分析も組むことが可能。ベイズの知識が必要となり、Pythonではなく、ベイズを組みやすいRを使う価値がでてくる(普通は反復測定分散分析くらいで十分であり、Pythonで十分だと思います)。