相関に対する置換検定
Bitcoin のボラティリティは S&P 500 と比べてどうでしょうか?
以前、ボラティリティを日次変化率として計算しました。これはデータ内の Pct_Daily_Change_BTC と Pct_Daily_Change_SP500 列に保存されています。ここで答えたいのは、これら2つの値がどの程度相関しているかです。これを調べる1つの方法が置換検定です。S&P 500 と BTC の値をランダムに並べ替えることで、偶然による結果がどのようなものかを確認し、それを観測された値と比較できます。
S&P 500 と Bitcoin の価格の DataFrame(btc_sp_df)は読み込まれており、pandas は pd、NumPy は np、SciPy からは stats がインポート済みです。
この演習はコースの一部です
Pythonで学ぶ推測の基礎
演習の手順
- 2つのベクトル間の Pearson の相関係数(Pearson R)だけを返す
statistic()関数を定義します。 dataを、BTCとSP500のボラティリティを含むタプルに設定します。- この data と statistic を使い、リサンプル数 1000、仮説は Bitcoin のボラティリティがより大きいとする代替仮説で置換検定を実行します。
- p 値が 5% で有意かどうかを出力してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define a function which returns the Pearson R value
def statistic(x, y):
____
# Define the data as the percent daily change from each asset
data = ____
# Compute a permutation test for the percent daily change of each asset
res = ____(____, ____,
n_resamples=____,
vectorized=____,
alternative='____')
# Print if the p-value is significant at 5%
print(res.pvalue < 0.05)