scipy.stats: シャピロ・ウィルク検定 shapiro
シャピロ・ウィルク検定(正規性の検定)を行う。
shapiro(x)
帰無仮説 $H_0$: データは正規母集団から抽出されたものである
対立仮説 $H_1$: データは正規母集団から抽出されたものではない
from scipy.stats import shapiro
import numpy as np
1. 正規乱数
平均値=50,標準偏差=10 の 20 個の乱数を発生させ,シャピロ・ウィルク検定でこのデータが正規分布に従うか検定する。
np.random.seed(123)
x = np.random.normal(50, 10, 20)
shapiro(x)
ShapiroResult(statistic=0.9611964225769043, pvalue=0.5680192112922668)
$p \gt 0.05$ なので,有意水準 5% のもとでは,帰無仮説は棄却できない。結論は,「データは正規母集団から抽出されたものではないとはいえない」となる。
2. t 分布に従う乱数
2.1. 自由度=1 の場合
from scipy.stats import t
np.random.seed(123)
y = t.rvs(df=1, size=50)
shapiro(y)
ShapiroResult(statistic=0.25566935539245605, pvalue=1.693792811086406e-14)
自由度 1 の場合は,コーシー分布である。
$p \lt 0.05$ なので,有意水準 5% のもとでは,帰無仮説は棄却される。結論は,「データは正規母集団から抽出されたものではない」となる。
2.2. 自由度=10 の場合
$t$ 分布は,自由度が無限大の場合には正規分布になる。
np.random.seed(123)
z = t.rvs(df=10, size=100)
shapiro(z)
ShapiroResult(statistic=0.9897159337997437, pvalue=0.6416555643081665)
サンプルサイズが 100 の場合,自由度が 10 程度で正規分布と区別がつきにくくなる。
$p \gt 0.05$ なので,有意水準 5% のもとでは,帰無仮説は棄却できない。結論は,「データは正規母集団から抽出されたものではないとはいえない」となる。