今日は統計フリーソフトRを使ってデータが正規分布なのかを検定する方法について説明してきます。
ファイナンスでよく使われる確率分布が正規分布です。ちなみになぜよく使われるのかというと計算しやすいからです。
・今回使うデータ
任天堂の2015年の株価収益率(対数差収益率)
> r.ninten2015 ##対数差収益率を入れているオブジェクト
Close
2015-01-06 -4.27007876
2015-01-07 0.50697194
…
2015-12-29 2.96473278
2015-12-30 -1.12760839
これをヒストグラムにするとこうなります。
>hist(r.ninten2015,breaks=seq(-10,20,0.5)) ##ー10から20までの幅で0.5刻みでヒストグラムを描く
これ全然正規分布に見えませんよね?だから任天堂の株価収益率は正規分布じゃないと結論付けたくなりますが、そうではありません。
次はちょっと数値を弄ったヒストグラムを書いて見ます。もちろんデータ自体は何も変わってません。
> hist(r.ninten2015,breaks=seq(-20,20,0.5)) ##ー20から20までの幅で0.5刻みのヒストグラムを描く
正規分布の特徴である左右対称の釣り鐘型っぽくなりました。このようにヒストグラムは見せ方によって見る人に全然違う印象を与えることができます。伝える側の意図で結構形を変えることができてしまうので、テレビなどの情報番組で分析結果を見る際にも、ヒストグラムはあまり信用せず疑ってかかったほうがいいでしょう。
ではどうやってデータが正規分布なのかを検証するのかというと、QQプロットという方法を使います。
・qqプロットの作成
> qqnorm(r.ninten2015) ##qqプロットの作成
> qqline(r.ninten2015) ##第1四分位範囲と第3四分位範囲を結んだ線を描く
グラフの大半がこの線上にあれば正規分布とすることができます。ヒストグラムもqqプロットもあくまで視覚イメージなので次は数値によって正規分布かどうかを判断する検定の一つであるシャピロ・ウィルク検定をしてみます。
・シャピロ・ウィルク検定
シャピロ・ウィルク検定は得られたデータが正規分布に従うものを調べる検定です。帰無仮説 (H0) は「標本分布が正規分布に従う」ことで、今回は有意水準5%(P値が0.05以下なら正規分布とみなすということ)にて検定すします。
> data<-as.data.frame(r.ninten2015) ##時系列データをデータフレームに変換
> class(data) ##データの確認
[1] “data.frame”
※この手順は使うデータがもとからデータフレームの人は必要ないです。
> shapiro.test(data$Close) ##シャピロ・ウィルク検定
Shapiro-Wilk normality test
data: data$Close
W = 0.90387, p-value = 2.301e-11
p値は2.301×10⁻¹¹なので、有意水準を満たしており2015年の任天堂の株価収益率は正規分布であるとみなすことができます。
コメント
p値は2.301×10⁻¹¹なので、有意水準を満たしており2015年の任天堂の株価収益率は正規分布であるとみなすことができます。
とありますが、
正規分布していないと判断できる結果ではないでしょうか?
“p値は2.301×10⁻¹¹なので、有意水準を満たしており2015年の任天堂の株価収益率は正規分布であるとみなすことができます。” は、まったく間違っていますので、ご注意ください。正規分布はしていません。