正規性の数値的検定
moments パッケージには、データの尖度 (kurtosis) と歪度 (skewness) を計算する関数に加えて、これらの高次モーメントに基づくJarque-Bera 検定(正規性の検定)を実行する関数が含まれています。1 回のコマンドで、データの歪度と尖度を正規分布の理論値(それぞれ 0 と 3)と比較します。
jarque.test(x)
skewness(x, na.rm = FALSE)
kurtosis(x, na.rm = FALSE)
この演習では、2008~2011 年のダウ工業株平均 (Dow Jones) 指数である djx について歪度と尖度を計算し、Jarque-Bera 検定で正規性を評価します。続いて、同期間のダウ構成銘柄 29 社のリターンを含む djreturns に対しても同じ方法を適用します。
apply(X, MARGIN, FUN, …) を使うと配列の各マージンに関数を適用できます。MARGIN には関数を適用する方向を示すベクトルを指定します。ここでは、行列 X の列に関数 FUN を適用するために 2 を使います。
moments パッケージはインポート済みで、djx と djreturns のデータはワークスペースに用意されています。
この演習はコースの一部です
Rで学ぶ定量的リスク管理
演習の手順
skewness()とkurtosis()を使って、djxに含まれるダウ指数リターンの歪度と尖度をそれぞれ計算します。jarque.test()を用いて、djxの正規性に関する Jarque-Bera 検定を実行します。apply()を使って、djreturnsに含まれる各銘柄リターンの歪度と尖度を計算し、結果をそれぞれsとkに代入します。plot()にtype = "n"を指定してkを横軸、sを縦軸にプロットし、その点に株式ティッカーをtext()コマンドで配置します(この部分は用意されています)。apply()を使って、djreturnsの各ダウ構成銘柄について Jarque-Bera 検定を実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Calculate skewness and kurtosis of djx
___(___)
___(___)
# Carry out a Jarque-Bera test for djx
___(___)
# Calculate skewness and kurtosis of djreturns
s <- ___(___)
k <- ___(___)
# Plot k against s and add text labels to identify stocks
plot(___, ___, ___)
text(s, k, names(s), cex = 0.6)
# Carry out Jarque-Bera tests for each constituent in djreturns
___(___)