Testy permutacyjne dla korelacji
Jak zmienność Bitcoina wypada w porównaniu ze zmiennością indeksu S&P 500?
Wcześniej obliczono zmienność jako procentową dzienną zmianę ceny – wartości te są zapisane w kolumnach Pct_Daily_Change_BTC i Pct_Daily_Change_SP500 w twoich danych. Chcesz sprawdzić, w jakim stopniu te dwie wartości są ze sobą skorelowane. Jednym ze sposobów jest test permutacyjny. Losowo tasując wartości między S&P 500 a BTC, możesz zobaczyć, jak wyglądałby losowy wynik, a następnie porównać go z obserwowanymi danymi.
Do dyspozycji masz wczytany DataFrame z cenami S&P 500 i Bitcoina (btc_sp_df), a także biblioteki: pandas jako pd, NumPy jako np oraz stats z SciPy.
To ćwiczenie jest częścią kursu
Podstawy wnioskowania statystycznego w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj funkcję
statistic(), która zwraca wyłącznie wartość współczynnika Pearsona R między dwoma wektorami. - Ustaw
datajako krotkę zawierającą zmiennośćBTCiSP500. - Przeprowadź test permutacyjny, korzystając z tych danych, zdefiniowanej statystyki, 1000 próbkowań i hipotezy alternatywnej zakładającej większą zmienność Bitcoina.
- Wydrukuj informację, czy wartość p jest istotna na poziomie 5%.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)