LoginSignup
3
1

More than 1 year has passed since last update.

何を選ぶ?データの正規性の検定

Last updated at Posted at 2023-02-28

目次

正規性の検定とは?
正規性の検定
正規性の検定の比較(αエラーの比較)
正規性の検定の比較(1-β)
結論

正規性の検定とは?

 正規性の検定とは,データが正規分布に従わないことを確認する検定です.
 昔から医療系の研究で統計解析を行うときに,データが正規分布に従う・従わないという理由で,パラメトリック検定(正規分布に従う場合),ノンパラメトリック検定(正規分布に従わない場合)の何れを選ぶかという迷いに悩まされる人が多かったはずです.
 ヒストグラムで確認するという時代もありましたが,N=100程度ではとても確認できるものではありません.かつてはカイ二乗適合度検定や,歪度・尖度を活用する方法もありましたが,十分ではありませんでした.
 最初に断っておきますが,正規分布に従う現実のデータを発見した人は,世の中に存在しません(理論的には作成できます).本当に確認する意味あるのかな…と思ってしまいますが,慣例に倣って続きを.

正規性の検定

 正規性の検定として,Shapiro-Wilk検定,Kolmogorov-Smirnov検定,Lilliefors検定,Anderson–Darling検定など,があります.
 いずれも,正規性の検定なので,どれを使っても間違いとはいい切れません.ただ,それぞれに特徴があります.
 RコマンダーではShapiro-Wilk検定,Anderson–Darling検定,Cramer-von Mises検定,Lilliefors(Kolmogorov-Smirnov)検定,ピアソンのカイ二乗検定がメニューに入っています.
 これは,

 normalityTest

 の関数に基づくもので,

normalityTest(~ 変数名 , test="lillie.test", data= データ名 )

"lillie.test"の" "内部分を変えれば手法が選択できます.

shapiro.test:Shapiro-Wilk検定
ad.test:Anderson–Darling検定
cvm.test:Cramer-von Mises検定
lillie.test:Lilliefors(Kolmogorov-Smirnov)検定
pearson.test:ピアソンのカイ二乗検定
sf.test:Shapiro-Francia検定

に変えればそれぞれの手法が選べます. 
 こんなにあると,どれが良いのか悩むと思います.下記に簡単な説明を入れますが,詳しくはここも参考になるでしょう.

Shapiro-Wilk検定

 Shapiro-Wilk検定は正規分布に従うデータの検定に特化した手法です.3≦n≦5000のデータであれば,検定できます.SPSSをはじめとした,ほとんどの統計ソフトにプログラムされている手法です.医療系での使用頻度も高いと思います.

Kolmogorov-Smirnov検定とLilliefors検定

 基本的なKolmogorov-Smirnov検定は,n≦100のデータでは精度が悪く使えません.そこで,n≦100のときは,Lilliefors検定に切り替える統計ソフト(SPSSなど)もあります.
 Lilliefors検定はKolmogorov-Smirnov検定の修正版なので,Rコマンダー2.8.0以降ではLilliefors(Kolmogorov-Smirnov)と表示されます.
 Lilliefors検定は,逆にnが大きい方(2000≦n)が良いともいわれます.

Anderson–Darling検定

 Anderson–Darling検定はRコマンダーVer2.8.0になってから,デフォルトで設定されています.デフォルト設定するぐらいなので,もしかして最も優れた手法かも…と考えてしまいます.JMPでもプログラムされているようです.5000≦nのようなデータであれば,この方法が妥当といわれます(根拠は不明です).
 

その他の検定

 かつては使用されていたピアソンのカイ二乗適合度検定,Shapiro-Francia検定は使用の機会が少ないと思います.
Cramer-von Mises検定は,あまり耳にすることがありませんでしたが,歴史的には古い手法です(Cramer-von Mises Smirnov検定とも呼ばれます).

正規性の検定の比較(αエラーの比較)

 いずれも甲乙つけがたいし,理論のウンチクを述べても仕方ないので,これらの検定を実際に比較してみます.

  • R4.2.2を使用し,標本の大きさn(n=10,30,50,80,100,150,200,250,300)の正規分布に従う乱数 xN (0,1)を発生させます.
  • x に対して,Shapiro-Wilk検定,Kolmogorov-Smirnov検定,Lilliefors検定,Cramer-von Mises検定,Anderson–Darling検定を行ってp値を出力します.
    • 使用する関数は,全てnormalityTestですが,RではShapiro-Wilk検定の関数としてshapiro.testが用いられることも多いので,こちらも出力します
    • 以降,normalityTestによる結果はShapiro-Wilk検定 shapiro.testはShapiro-Wilk検定 とします.
    • Kolmogorov-Smirnov検定は,normalityTestにはないので(Lilliefors検定で代用しているようですが),ks.test関数を使用します.
  • この作業を 10万回 繰り返します.
  • 各々の手法でp<0.05となった結果の個数(10万個のp値のうちいくつか)を数えます.

 正規分布に従うデータを検定しますので,正解はp≧0.05です.間違った判定のp<0.05となった結果の個数(10万個のp値のうちいくつか)を数え,割合を以下の表に示しました.理想は0.05です.この値に近いほど,理論的に優れている検定法となります.

n Shapiro-Wilk① Shapiro-Wilk② Anderson–Darling Lilliefors Cramer-von Mises Kolmogorov-Smirnov
10 0.04996 0.04996 0.05052 0.05034 0.05049 0.04989
30 0.05119 0.05119 0.04996 0.04767 0.05021 0.05032
50 0.04972 0.04972 0.04975 0.04893 0.05025 0.05020
80 0.04886 0.04886 0.04958 0.04952 0.05024 0.04891
100 0.04889 0.04889 0.04934 0.05075 0.05037 0.04499
150 0.04952 0.04952 0.04927 0.05159 0.05081 0.04589
200 0.04979 0.04979 0.04965 0.05078 0.05035 0.04847
250 0.05072 0.05072 0.04989 0.05066 0.05059 0.04626
300 0.05098 0.05098 0.05032 0.05140 0.05055 0.04816

 Shapiro-Wilk検定は,normalityTestshapiro.testの何れを使っても同じ結果なので,どちらでも良いでしょう.
 いずれの方法も,0.05にかなり近いので,どれを使っても間違っているとはいえない結果です.RのKolmogorov-Smirnov検定は補正がかかっている(基本的なKolmogorov-Smirnov検定ではない)と思います.
 ここまでの結果からは,どれをつかってもほぼ同じ,自らの専門の学術分野でよくみられる方法を使えばよいでしょう.

正規性の検定の比較(1-β)

 上と同様にRで,

  • 標本の大きさn(n=10,30,50,80,100,150,200,250,300)の正規分布に従うデータ xLN (0,0.1)を発生させます.
  • 以降は,上記αエラーと同様です.
  • 各々の手法でp<0.05となった結果の個数(10万個のp値のうちいくつか)を数えます.

 正規分布に従わないデータを検定しますので,正解はp<0.05です.正解の判定のp<0.05となった結果の個数(10万個のp値のうちいくつか)を数え,割合を表に示しました.理想は1に近いほど,理論的に優れている検定法となります.

n Shapiro-Wilk① Shapiro-Wilk② Anderson–Darling Lilliefors Cramer-von Mises Kolmogorov-Smirnov
10 0.05770 0.05770 0.05756 0.05600 0.05601 0.00003
30 0.08648 0.08648 0.07657 0.06583 0.07357 0.00025
50 0.11402 0.11402 0.09405 0.08014 0.08849 0.00050
80 0.15405 0.15405 0.12022 0.09840 0.11038 0.00081
100 0.17876 0.17876 0.13950 0.11219 0.12709 0.00078
150 0.25181 0.25181 0.18821 0.14598 0.16854 0.00156
200 0.31659 0.31659 0.23395 0.17481 0.20713 0.00234
250 0.38994 0.38994 0.28752 0.21009 0.25485 0.00370
300 0.45652 0.45652 0.33635 0.24315 0.29536 0.00508

 Shapiro-Wilk検定が最も高い検出力を示しました.最も低いのはKolmogorov-Smirnov検定,Lilliefors検定も低めです.
nが小さければ(Kolmogorov-Smirnov検定を除いて),どの手法も似たり寄ったりです.

結論

 結論として,Shapiro-Wilk検定が妥当と考えます.
 他の分布ではどうなるか不明ですが,本例が一つ発生していますので,この結論でよいと思います.
 たまに,Kolmogorov-Smirnov検定を使う方がいますが,nが小さい(といってもn=300でも疑わしいですが)と検出力は疑問です.ないとは思いますが,正規分布ではない,という結果を(意図的に)避ける示唆となっているかもしれません.

追加

xU (0,1)でも確認.

n Shapiro-Wilk① Shapiro-Wilk② Anderson–Darling Lilliefors Cramer-von Mises Kolmogorov-Smirnov
10 0.08166 0.08166 0.07851 0.06227 0.07147 0.00002
30 0.38345 0.38345 0.29791 0.14087 0.23164 0.00032
50 0.74907 0.74907 0.57498 0.25543 0.43711 0.00139
80 0.97329 0.97329 0.86342 0.45936 0.71684 0.00498
100 0.99628 0.99628 0.94872 0.59141 0.84071 0.00914
150 0.99998 0.99998 0.99776 0.83150 0.97306 0.03965
200 1.00000 1.00000 0.99998 0.94721 0.99728 0.11460
250 1.00000 1.00000 1.00000 0.98648 0.99979 0.24254
300 1.00000 1.00000 1.00000 0.99743 0.99998 0.40962

同じ結果でした.

3
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
3
1