尖度(kurtosis)と歪度(skewness)についての、R/EZR/jamoviの実装
尖度(kurtosis)と歪度(skewness)について質問があり、R/EZR/jamoviでの実装を調べてみた。
R本体には関数として実装されていないが、e1071パッケージに入っていて、helpを見たら、Joanes and Gill (1988)に基づいて、それぞれ3通りの計算方法が実装されているとわかった。
古典的定義(歪度を3次のモーメントを2次のモーメントの平方根の3乗で割った値、尖度を4次のモーメントを2次のモーメントの二乗で割って3を引いた値とする定義。ちなみにr次のモーメントとは平均からの偏差のr乗和をサンプルサイズで割った値である)に基づくのがtype=1で、SASやSPSSと同じ実装がtype=2(e1071パッケージのヘルプでは表示されないが、Joanes and Gill, 1988によると、EXCELもこの実装を採用しているとのこと)、MINITABやBMDPと同じ実装がtype=3で、どちらもデフォルトはtype=3とのこと。
正規分布の下で不偏推定量であることがわかっているのは、歪度の方は3つともだが、尖度はtype=2だけとのことなので(なぜtype=2をデフォルトにしなかったのか謎だが)、R本体でlibrary(e1071)からskewness()やkurtosis()を使う場合は、特別な理由がない限り、type=2を指定すべきと思う。
EZRでは統計解析>連続変数の解析>正規性の検定でアウトプットウィンドウの中に表示されるが、type=2の結果と同じようだ。
jamoviは探索(Exploration)の記述統計(Descriptives)で変数を選んで計算させた後で統計量(Statistics)の分布(Distribution)の下にある歪度(skewness)と尖度(kurtosis)にチェックを入れるとtype=2と同じ結果が表示される。
医学統計ではSASやSPSSと同じ結果になるのが無難な選択であろうから、EZRの方針は合理的だと思う。元々心理統計のために開発されたらしいjamoviも、最近は医学論文でも使われているから、妥当な選択であろう。
なお、EZRやjamoviでは欠損値があっても自動的に除去して計算してくれるが、e1071パッケージのskewness()やkurtosis()は標準関数のmean()やvar()と同じく、na.rm=FALSEオプションがデフォルトなので、欠損値が含まれていると結果がNAになる。欠損値を除去して計算させたい場合は、na.rm=TRUEというオプション指定も必要。
コメント
コメントを投稿