LoginSignup
0
1

More than 1 year has passed since last update.

scipy.stats: 関連2標本の平均値の差の検定 ttest_rel, ttest_1samp

Posted at

scipy.stats: 関連2標本の平均値の差の検定 ttest_rel, ttest_1samp

1. テストデータの生成

import numpy as np
x = np.array([63.6, 62.9, 41.1, 54.0, 45.0, 39.8, 62.4, 37.8, 45.5, 47.9])
y = np.array([69.7, 50.2, 48.7, 59.4, 52.8, 54.9, 76.9, 66.4, 50.1, 48.8])

2. 関連2標本の平均値の差の検定 ttest_rel

from scipy.stats import ttest_rel

ttest_rel(a, b, axis=0, nan_policy='propagate', alternative='two-sided')

デフォルトで両側検定である。特に指定するなら alternative='two-sided' を指定する。

帰無仮説は「2 つの対応のある標本の母平均は等しい」である。

戻り値は $t$ 統計量と $p$ 値である。

ttest_rel(x, y)
Ttest_relResult(statistic=-2.3166916999976834, pvalue=0.045732821155958746)

帰無仮説が「最初に指定したデータの母平均のほうが小さい」という片側検定の場合には,alternative='less' を指定する。

$p$ 値は,両側検定の場合の 1/2 になる。

ttest_rel(x, y, alternative='less')
Ttest_relResult(statistic=-2.3166916999976834, pvalue=0.022866410577979373)

帰無仮説が「最初に指定したデータの母平均のほうが大きい」という片側検定の場合には,alternative='greater'

なお,テストデータは alternative='less' の例なので,'greater' を指定すると $p$ 値は 0.5 以上になる。

ttest_rel(x, y, alternative='greater')
Ttest_relResult(statistic=-2.3166916999976834, pvalue=0.9771335894220207)

3. 1標本の母平均の検定 ttest_1samp

対応のある2標本データの差を計算して,ttest_1samp で検定することもできる。この場合は,「観察データが指定した母平均を持つといえるか」という検定になるので,母平均を popmean で指定しなければならない。

popmean はデフォルト値がないので,必ず指定しなければならない。

「対応のある2標本データの平均値の差の検定」では,帰無仮説を「差がない」とすることが多いので,それに対しての「1標本の母平均の検定」では popmean=0 を指定することになろう。

しかし,ttest_1samppopmean を指定できるのは,ttest_rel よりも優れている。ttest_rel は平均値の差は 0 と決めつけていて変更できないからである(多くの統計パッケージでは,「対応のある2標本データの平均値の差の検定」の場合にも,平均値の差の指定ができる)。

from scipy.stats import ttest_1samp

ttest_1samp(a, popmean, axis=0, nan_policy='propagate', alternative='two-sided')

diff = x - y
print('mean(x) = ', x.mean(), '  mean(y) = ', y.mean(), '  mean(diff) = ', diff.mean())
mean(x) =  50.0   mean(y) =  57.79   mean(diff) =  -7.790000000000004

差を求めて ttest_1samp で検定する。帰無仮説は「差の母平均は 0 である」。これは,「元の対応のある 2 標本の平均値の差は 0 である」と同じことである。

特に指定しなければ両側検定(alternative='two-sided)が行われる。

戻り値は $t$ 統計量と $p$ 値である。

ttest_1samp(diff, popmean=0)
Ttest_1sampResult(statistic=-2.3166916999976834, pvalue=0.045732821155958746)

帰無仮説が「母平均は popmean より小さい」ならば,alternative='less' を指定する。

$p$ 値は両側検定の 1/2 になる。

ttest_1samp(diff, popmean=0, alternative='less')
Ttest_1sampResult(statistic=-2.3166916999976834, pvalue=0.022866410577979373)

帰無仮説が「母平均は popmean より大きい」ならば,alternative='greater' を指定する。

実際のデータが帰無仮説と逆になっていれば,$p$ 値は 0.5 より大きくなる。

ttest_1samp(diff, popmean=0, alternative='greater')
Ttest_1sampResult(statistic=-2.3166916999976834, pvalue=0.9771335894220207)

当然ながら popmean は 0 でなくてもよい。

例題では平均値の差は -7.79 であるが,もし帰無仮説が「母平均は -6 である(両側検定)」ならば,「そういうことはよく起きること」なので,$p$ 値は 0.05 より大きくなり,帰無仮説は棄却できないということになる。

ttest_1samp(diff, popmean=-6)
Ttest_1sampResult(statistic=-0.5323335228492759, pvalue=0.6073847139443715)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1