Python で shapiro-wilk テストを実行する方法
シャピロ・ウィルク検定は正規性の検定です。これは、サンプルが正規分布に由来するかどうかを判断するために使用されます。
Python で Shapiro-Wilk テストを実行するには、次の構文を使用するscipy.stats.shapiro()関数を使用できます。
scipy.stats.shapiro(x)
金:
- x:サンプル データのテーブル。
この関数は検定統計量と対応する p 値を返します。
p 値が一定の有意レベルを下回っている場合、標本データは正規分布からのものではないと言える十分な証拠があります。
このチュートリアルでは、この機能を実際に使用する方法の例をいくつか示します。
例 1: 正規分布データに対する Shapiro-Wilk 検定
次のサンプル データがあるとします。
from numpy.random import seed from numpy.random import randn #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 random values that follow a standard normal distribution data = randn(100)
次のコードは、この 100 データ値のサンプルに対して Shapiro-Wilk テストを実行して、それらが正規分布に由来するかどうかを判断する方法を示しています。
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)
結果から、検定統計量は0.9927で、対応する p 値は0.8689であることがわかります。
p 値は 0.05 未満ではないため、帰無仮説を棄却できません。標本データが正規分布に由来しないと言える十分な証拠はありません。
標準正規分布に従うランダム値を生成するrandn()関数を使用してサンプル データを生成したため、この結果は驚くべきことではありません。
例 2: 非正規分布データに対する Shapiro-Wilk 検定
ここで、次のサンプル データがあるとします。
from numpy.random import seed from numpy.random import fish #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data = fish(5, 100)
次のコードは、この 100 データ値のサンプルに対して Shapiro-Wilk テストを実行して、それらが正規分布に由来するかどうかを判断する方法を示しています。
from scipy.stats import shapiro #perform Shapiro-Wilk test shapiro(data) ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)
結果から、検定統計量は0.9582で、対応する p 値は0.00299であることがわかります。
p 値が 0.05 未満であるため、帰無仮説は棄却されます。標本データが正規分布からのものではないことを示す十分な証拠があります。
ポアソン分布に従うランダム値を生成するPoisson()関数を使用してサンプル データを生成したため、この結果も驚くべきことではありません。
追加リソース
次のチュートリアルでは、さまざまな統計ソフトウェアで他の正規性検定を実行する方法について説明します。
R で Shapiro-Wilk テストを実行する方法
Python で Anderson-Darling テストを実行する方法
Python でコルモゴロフ-スミルノフ テストを実行する方法