Takuya Kawanishi

5. データに有意差があるとはどういうことか 1 (\(t\)-検定)

5.1 実験結果の有意差

化学工学・生物化学工学系(化学系・生物系)の実験データ

  • 同一条件での繰り返し実験の数が限られる(3〜5). 例えば, ファーメンテーターでの酵素反応実験ならば, 1 回の実験に数日かかることはざら. 多くの条件による違いを検討したければ, 1 条件での繰り返し数は限られる.

有意差があるかどうかを調べるとは

  • 例として, 条件 I と条件 II でそれぞれ 3 回の繰り返し実験を行って, 生産物濃度 \(x \ \mathrm{g /L}\) として, 以下の値を得たとする.

\begin{align*} \boldsymbol x_\mathrm I & = \{10.1, 10.4, 9.8 \} \\ \boldsymbol x_\mathrm{II} & = \{10.7, 11.6, 11.3 \} \end{align*}

  • これらは, それぞれ, 母集団 I, II からのサイズ 3 のサンプルである.

  • この 2 つの実験結果に有意な差があるかどうか, を判定するのであるが, 統計的には, 条件 I の母集団の平均値 \(\mu_\mathrm{I}\) と条件 II の母集団の平均値 \(\mu_\mathrm{II}\) に差があると言えるかどうかを, データ \(\boldsymbol x_\mathrm{I}\), \(\boldsymbol x_\mathrm{II}\) にもとづいて調べることになる.

Remark

  • 「有意差がある」, 「有意差があるとは言えない」, という 0 か 1 かの判断ではなく, \(p\) 値(後述)や信頼区間を報告することが推奨されている.

  • 通常, \(p=0.05\), \(p=0.1\) 以下であれば, それぞれ水準 5%, 10% で有意差が認められる, という.

  • しかし, \(p\) 値がこれよりも大きいとき, 「有意差がない」とは言えない. あくまで, 有意差があるはいえない, 差があることを強く示す統計的根拠はない, ということである.

5.2 仮説検定・第 1 種過誤・第 2 種過誤

帰無仮説と対立仮説

  • 否定したい結論を帰無仮説として設定, この仮説のもとに実験結果のようなデータが得られる確率(\(p\)-値)を計算し, \(p\) が十分小さければ仮説を棄却(reject)する.

  • 2 つのデータに有意な差があるかどうかを判定する場合, 帰無仮説(null hypothesis) \(H_0\) は,条件 I の母集団の平均を \(\mu_\mathrm I\), 条件 II の母集団の平均を \(\mu_\mathrm{II}\) として

\[H_0: \mu_\mathrm{I} = \mu_\mathrm{II}\]
  • 対立仮説(alternative hypothesis) \(H_1\)

\[H_1: \mu_\mathrm{I} \ne \mu_\mathrm{II}\]
  • 仮説は, パラメーターについての仮説であることに注意.

  • 母集団について検定するわけである.

第 1 種過誤・第 2 種過誤

  • 英語では Type-I error, Type-II error である. 訳語はどうも堅苦しい.

  • 第 1 種過誤は, 実は \(H_0\) が正しいのに, それを棄却してしまうこと.

  • 第 2 種過誤は, 実は \(H_1\) が正しいのに, 棄却しそこなうこと.

5.3 Student の \(t\)-検定

なぜ Student の \(t\)-検定なのか

  • 化学, 生物分野, 化学工学・生物化学工学では, 同一条件での繰り返し実験数を多くとることは難しく, 慣習として 3 回程度の繰り返し実験の結果からデータ解析を行うことが多い.

  • このような条件下で, 有意差の有無について検定する方法は, Student の \(t\) 検定くらいしかない.

注意点

  • Student の \(t\)-検定は,

      1. 2 つの母集団がともに正規分布に従っている,

      1. 2 つの母集団の分散が等しい

      1. 2 つの母集団は独立である

       という仮定の上に成り立っている.

  • 仮定が成り立っているか不明な場合については後述

Student の \(t\)-検定法の手順

Step 1: 帰無仮説 \(H_0\) と対立仮説 \(H_1\) を設定する.

  • 例えば, 2 つの標本, \(\boldsymbol x_\mathrm I\), \(\boldsymbol x_\mathrm {II}\) に有意差があるかどうか検定する場合には, 次の 2 つの仮説を設定する.

\[H_0: \mu_\mathrm{I} = \mu_\mathrm{II}\]
\[H_1: \mu_\mathrm{I} \ne \mu_\mathrm{II}\]

Step 2: 2 つの標本の平均値の差の \(t\)-統計量を求める..

  • 例えば, 独立な 2 標本の \(t\)-検定の場合, 標本の大きさを \(n_1\), \(n_2\), 標本分散(不偏分散)を \(S_1\), \(S_2\) として, 以下のステップに従って Student の \(t\) を計算する.

  • step 2.1 合併分散(pooled variance) \(S_p^2\) を計算する.

    \[S_p^2 = \frac{S_1^2 (n_1 - 1) + S_2^2 (n_2 - 1)}{n_1 + n_2 - 2} \tag{2.1}\]
  • この形だとややこしくみえるが, 実は, \(S_p^2\) は, それぞれの平均値に対する差の平方和を自由度 \(n-2\) で除したものである. その意味で, 1 群での標本分散と本質的に同じである.

  • また, ここで, 等分散を仮定していることから, 平方和を足すことができる.

  • step 2.2 平均値の差 \(\bar X_1 - \bar X_2\) に関して次の \(t\)-統計量を算出する.

    \[T = \frac{\bar X_1 - \bar X_2}{S_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}} \tag{2.2}\]
  • これらの導出は別項

Step 3: \(p\)-値の算出と有意差の検定

  • 自由度 \(n_1 + n_2 -2\)\(t\) 分布から 統計量 \(t\) に対応する \(p\)-値を計算する.

  • \(p < 0.1\) の場合, 0.1 水準で有意差がある, \(p<0.05\) の場合, 0.05 水準で有意差がある, とする.

Step 4(オプション): 平均値の差の信頼区間の算出

  • 自由度 \(n_1 + n_2 - 2\)\(t\) 分布から, \(t_\alpha\), の値を計算し, 信頼区間を次式で算出する(両側検定の場合).

\[\left(\lvert \bar X_1 - \bar X_2 \rvert - S_p t_{\alpha}, \lvert \bar X_1 - \bar X_2 \rvert + S_p t_{\alpha} \right) \tag{2.3}\]
  • ここで, \(S_p= \sqrt{S_p^2}\) は平均値の差の標準偏差で, 合併分散(プールされた分散)の平方根, \(t_\alpha\) は水準 \(\alpha\) における \(t\) の値である.

  • 95%信頼区間に 0 が含まれていれば, 0.05 水準で有意差がある, ということになる.


例題 5.1

  • 条件 A, 条件 B ののもとで, それぞれ 3 回の繰り返し実験を行い, 試料中の成分 P の濃度として次の値を得た (単位は, μg/L). それぞれの標本は, 同じ分散をもつ正規分布から得られたものと考えてよいとする.

条件

測定値

A

10.1 10.4 9.8

B

10.7 11.6 11.3

    1. 標本 A, 標本 B それぞれの標本平均と標本標準偏差(不偏分散の平方根)を求めよ.

    1. 標本 A と標本 B の平均値の差の, 合併分散, 標準偏差を求めよ.

    1. 標本 A と標本 B の平均値の差の 95% 信頼区間を求めよ.

    1. 結果は, 水準 \(\alpha=0.05\) で有意であると言えるか.

    1. \(p\)-値を求めよ.


解答例

  • 独立 2 群の差の検定であり, ここでは, 独立 2 標本 \(t\)-検定を行う.

  • 標本 A, 標本 B それぞれの平均値, 標本分散(不偏分散)と標準偏差(題 1.1 を参照).

\[\text{標本A}: \quad \bar x = 10.10, \quad s_1^2 = 0.0900, \quad s_1 = 0.300\]
\[\text{標本B}: \quad \bar y = 11.20, \quad s_2^2 = 0.2100, \quad s_2 = 0.458\]
  • 平均値の差の標本合併分散 \(s_p^2\) を式 (2.1) で算出, それをもとに合併標準偏差 \(s_p\) を計算する.

    \[s_p^2 = 0.150\]
    \[s_p = \sqrt{0.150} = 0.387\]
  • \(t\)-検定で信頼区間を算出する. 自由度 4 の \(t\)-分布の \(\alpha = 0.05\)\(t\)-値, \(t_\alpha\)\(t\)-分布表から求め, 95% 信頼区間を式 (2.3) で求める.

\[t_\alpha = 2.776\]
\[(0.222, 1.978)\]
  • 信頼区間による検定: 95% 信頼区間が 0 を含まないので, 水準 \(\alpha = 0.05\) で平均値に有意な差があるといえる.

  • \(p\)-値による検定: Student の \(t\)-統計量を式 (2.2) で計算し, 自由度 \(3 + 3 - 2 = 4\)\(t\)-分布から, \(p\)-値を計算する.

\[t = 3.478\]
\[p = 0.02539\]
  • \(p\)-値からも, 水準 \(\alpha=0.05\) で平均値に有意な差があるといえる.

Python での \(t\)-検定の例

  • scipy.stats.ttest_ind を使う.

  • 使い方は極めて簡単.

  • \(t\)-統計量と \(p\)-値が出力される.

  • paired \(t\)-test には scipy.stats.ttest_rel を使う.

[1]:
# Scipy.stats.ttest_ind
import numpy as np
import scipy.stats


x = [10.1, 10.4, 9.8]
y = [10.7, 11.6, 11.3]
res = scipy.stats.ttest_ind(x, y)
print(res)
Ttest_indResult(statistic=-3.47850542618521, pvalue=0.02538644793661544)

注意点

  • Student の \(t\)-統計量は, 母集団が正規分布に従い, かつ母分散が等しい場合で, 標本サイズが小さいときに用いられる.

なぜ 生物・化学系で Student の \(t\)-検定がよく使われるのか

  • 2 群間Student’s :math:`t`-test の仮定: 正規分布, 等分散性, 独立,

  • サンプル数が少ないと正規性の検定は無理(正規性を仮定しても問題ないという根拠が必要だが, 必ずしも根拠が明らかでない場合にも使われれいる).

  • 慣習的に, 同じものを測定しているのだから, 実験データのばらつきは正規分布に従っているだろう, という期待でやっているのが実情であろう.

  • 統計学的にはクエスチョンマークがつくが, 各専門分野ではそれぞれの判断があり得る.

5.3 Welch の \(t\)-検定(Welch’s \(t\)-test)

等分散性が明らかではなく, サンプル数が極端には少なくないとき,

  • 等分散性が成立するときもしないときも, Welch の \(t\)-検定を使う.

  • Welch の \(t\)-検定は,

      1. 2 つの母集団がともに正規分布に従っている,

      1. 2 つの母集団は独立である,

      1. 2 つの母集団の分散が等しいか否かはわからない,

       ときに使う.

\[W = \frac{\bar X_1 - \bar X_2}{\sqrt{\frac{S_1}{n_1} + \frac{S_2}{n_2}}}\]
  • \(W\) は自由度 \(\nu\)\(t\)-分布に従う. \(\nu\) は次の式で推算できる.

\[\hat \nu = \frac{\left(\dfrac{S_1^2}{n_1} + \dfrac{S_2^2}{n_2} \right)^2}{\dfrac{(S_1^2/n_1)^2}{n_1 - 1} + \dfrac{(S_2^2/n_2)^2}{n_2 - 1}}\]

例題 5.2

  • 次のような独立なサンプルが得られたとする.

  • Welch の \(t\)-test でデータの母数の平均値に有意差があるかどうか検定せよ.

x = [0.61, 1.69, 0.75 , 0.44, 1.16]
y = [1.43, 1.76, 1.79, 1.33]

[69]:
import scipy.stats

x = [0.61, 1.69, 0.75 , 0.44, 1.16]
y = [1.43, 1.76, 1.79, 1.33]
res = scipy.stats.ttest_ind(x, y, equal_var = False)
print(res)
Ttest_indResult(statistic=-2.5649599674782246, pvalue=0.043481803801431025)

解答 5.2

  • \(\texttt{scipy.stats.ttest_ind}\) にて, \(\texttt{equal_value=False}\) を指定すると Welch の \(t\)-test となる.

  • \(p=0.043\) で水準 0.05 で有意な差がある.

5.4 Student vs Welch

Student の \(t\)-検定と Welch の \(t\)-検定の比較.

Student

Welch

等分散性

等分散が確実

等分散かどうか不明

\(T\) 値の分母

\[S_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}\]
\[\sqrt{\frac{S_1}{n_1} + \frac{S_2}{n_2}}\]

自由度

\[n_1 + n_2 - 2\]

h:: hat nu = frac{left(dfrac{S_1^2}{n_1} + dfrac{S_2^2}{n_2} right)^2}{dfrac{(S_1^2/n_1)^2}{n_1 - 1} + dfrac{(S_2^2/n_2)^2}{n_2 - 1}}

  • ここで, Student の \(t\)-検定の欄の \(S_p\) は合併分散で, 次で表される.

    \[S_p^2 = \frac{S_1^2 (n_1 - 1) + S_2^2 (n_2 - 1)}{n_1 + n_2 - 2}\]