Permutationstest för korrelationer
Hur förhåller sig Bitcoins volatilitet till S&P 500:s volatilitet?
Du beräknade tidigare volatilitet som den procentuella dagliga förändringen, vilket har lagrats i kolumnerna Pct_Daily_Change_BTC och Pct_Daily_Change_SP500 i dina data. Frågan du vill besvara är i vilken utsträckning dessa två värden korrelerar. Ett sätt att göra det är genom ett permutationstest. Genom att slumpmässigt blanda värden mellan S&P 500 och BTC kan du se hur ett slumpmässigt utfall skulle se ut och sedan jämföra det med de observerade värdena.
En DataFrame med S&P 500- och Bitcoin-priser (btc_sp_df) har laddats in åt dig, liksom paketen pandas som pd, NumPy som np och stats från SciPy.
Den här övningen är en del av kursen
Grunderna i inferens med Python
Övningsinstruktioner
- Definiera en funktion
statistic()som enbart returnerar Pearsons R-värde mellan två vektorer. - Sätt
datatill en tupel som innehåller volatiliteten förBTCochSP500. - Genomför ett permutationstest med dessa data, statistiken, 1 000 omsamplingar och med alternativhypotesen att Bitcoin har högre volatilitet.
- Skriv ut om p-värdet är signifikant på 5 %.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)