正規性の検定(Shapiro-Wilk検定)
正規性の検定
データを分析するにあたり、
- データが正規分布に従う
- データが独立な標本である
といった仮定を置くことは多い。そのような場合に分析をする際、これら二つの仮定が満たされているか確認する必要が出てくる。そのための手法として統計的仮説検定がある。今回はその中の Shapiro-Wilk検定 をPythonで株価収益率に対してやってみようと思う。
二種類の誤り
仮説検定には2つの誤りがある。
第1種の誤り
帰無仮説が正しいにも関わらず、帰無仮説を棄却してしまう誤り。
第2種の誤り
帰無仮説が正しくないにも関わらず、帰無仮説を採択してしまう誤り。
通常、第一種の誤り確率をある水準(有意水準)以下に抑えた状態で、第二種の誤り確率をできるだけ小さくするようにする。そのため、帰無仮説が採択された場合は、積極的に帰無仮説を正しいとみているわけではなく、「帰無仮説が間違っているとは言えない」というような消極的な解釈となる。
Shapiro-Wilk検定
私が所持している本の中にはこの検定に関する記述のあるものが見つからなかったため、今回は
シャピロ–ウィルク検定 - Wikipedia
の内容でお茶を濁すことにする。
統計学における、シャピロ–ウィルク検定(シャピロ–ウィルクけんてい)とは、 標本 が正規母集団からサンプリングされたものであるという帰無仮説を検定する検定である。この検定方法は、サミュエル・シャピロとマーティン・ウィルクによって、1965年に発表された。検定統計量は、
$$
W = \frac{\left(\sum_{i=1}^n a_i x_{(i)} \right)^2}{\sum_{I=1}^n (x_i - \bar{x})^2}
$$ただし
- は、番目の順序統計量。
- は標本平均。
- 定数 は次の式によって与えられる。
$$
(a_1, \ldots, a_n) = \frac{m' V^{-1} }{\left( m' V^{-1} V^{-1} m \right)^{1/2}}
$$ただし、
$$
m = (m_1, \ldots, m_n)'
$$は、標準正規分布からサンプリングされた独立同分布の確率変数の順序統計量の期待値であり、「」は、この順序統計量の分散共分散行列である。帰無仮説は、「」が小さすぎる場合に棄却される。
※一応Wikiの引用だが、少し書き換えてある。
兎にも角にもこれを用いて正規性を検定する。データは株式の収益率を使う。
Pythonでは次のようにすれば、Shapiro-Wilkの検定が可能である.
from spicy import stats stats.shapiro(df['QUICK']) # df['QUICK'] はデータフレームdfに入っているQUICKの収益率データを表す
結果は以下のようになった。
統計量W | p値 | |
---|---|---|
QUICK | 0.9260867834091187 | 1.0152270032202054e-22 |
日立 | 0.9507756233215332 | 1.2722628221227775e-18 |
武田薬品 | 0.9450637698173523 | 1.0990565268293669e-19 |
どれもp値がほとんど0に近いので、棄却される。つまり、どれも正規分布に従っているとは言えない事がわかる。
各業種と日経平均株価についてヒストグラムとガウシアンフィッティングで得られた曲線(もし、そのデータが正規分布に従うならばフィットするであろう正規分布な曲線)を一緒に描画した図をみてみよう。
これをみて見ると、正規分布よりも尖った分布になっているのがみて取れる。
参考文献の本では、4銘柄中3銘柄帰無仮説が採択されてたのに...
正規分布に従っているという仮定には無理がある事がわかった。
参考文献
[1] 横内大介, 青木義充(2014):『現場ですぐ使える時系列データ分析〜データサイエンティストのための基礎知識〜』技術評論社