t 検定

Julia で基本的な統計検定を行うとき HypothesisTests パッケージを利用する必要がある。例えば 2 つの実験群の平均に有意差があるかどうかを検定する t 検定もそうである。

using HypothesisTests

等分散データの t 検定

検定対象となる 2 つの実験群のデータの分散が等しい時の t 検定は EqualVarianceTTest 関数を利用する。検定結果の p 値は Test summary 項に、t 値は Details 項に記述される。以下の例では帰無仮説がリジェクトされたことがわかる。すなわち、危険率 5% のとき、a と b の平均値が異なる。

a = [20.5, 5.3, 12.4, 2.9, 12.3, 6.7, 2.1, 13.1]
b = [1.4, 16.1, 31.0, 10.9, 20.6, 15.7, 24.2, 28.0]

EqualVarianceTTest(a, b)
## Two sample t-test (equal variance)
## ----------------------------------
## Population details:
##     parameter of interest:   Mean difference
##     value under h_0:         0
##     point estimate:          -9.075
##     95% confidence interval: (-17.773564910980284,-0.37643508901971323)
## 
## Test summary:
##     outcome with 95% confidence: reject h_0
##     two-sided p-value:           0.042024126117462306 (significant)
## 
## Details:
##     number of observations:   [8,8]
##     t-statistic:              -2.237603488856483
##     degrees of freedom:       14
##     empirical standard error: 4.055678338541444

分散が等しくない 2 群間のデータの t 検定

検定対象となる 2 つの実験群のデータの分散が等しくない時の t 検定は UnequalVarianceTTest 関数を利用する。

a = [20.5, 5.3, 12.4, 2.9, 12.3, 6.7, 2.1, 13.1]
b = [1.4, 16.1, 31.0, 10.9, 20.6, 15.7, 24.2, 28.0]

UnequalVarianceTTest(a, b)
## Two sample t-test (unequal variance)
## ------------------------------------
## Population details:
##     parameter of interest:   Mean difference
##     value under h_0:         0
##     point estimate:          -9.075
##     95% confidence interval: (-17.909469020626247,-0.24053097937375334)
## 
## Test summary:
##     outcome with 95% confidence: reject h_0
##     two-sided p-value:           0.044946136933658135 (significant)
## 
## Details:
##     number of observations:   [8,8]
##     t-statistic:              -2.237603488856483
##     degrees of freedom:       12.025711830871167
##     empirical standard error: 4.055678338541444

従属な 2 群間 t 検定

従属な 2 群間の t 検定は「2 つの群のデータの差が 0 に等しい」という帰無仮説を検定することに等しい。この場合、1 サンプル t 検定用の関数 OneSampleTest を用いて検定する。

before = [591, 615, 602, 618, 596]
after  = [585, 590, 583, 594, 589]

diff = after - before

OneSampleTTest(diff, 0)
## One sample t-test
## -----------------
## Population details:
##     parameter of interest:   Mean
##     value under h_0:         0
##     point estimate:          -16.2
##     95% confidence interval: (-27.55969884491835,-4.8403011550816455)
## 
## Test summary:
##     outcome with 95% confidence: reject h_0
##     two-sided p-value:           0.01668502037395062 (significant)
## 
## Details:
##     number of observations:   5
##     t-statistic:              -3.959472105576539
##     degrees of freedom:       4
##     empirical standard error: 4.091454509095756

以下のように、従属な 2 群間 t 検定を行うこともできる。

OneSampleTTest(after, before)
## One sample t-test
## -----------------
## Population details:
##     parameter of interest:   Mean
##     value under h_0:         0
##     point estimate:          -16.2
##     95% confidence interval: (-27.55969884491835,-4.8403011550816455)
## 
## Test summary:
##     outcome with 95% confidence: reject h_0
##     two-sided p-value:           0.01668502037395062 (significant)
## 
## Details:
##     number of observations:   5
##     t-statistic:              -3.959472105576539
##     degrees of freedom:       4
##     empirical standard error: 4.091454509095756

以上と同じデータを用いて R と Python で検定を行った時の結果はこちら

References

  • HypothesisTests.jl Documents. Website