Korrelationer
Det är bra att undersöka korrelationer innan man bygger maskininlärningsmodeller, eftersom man då kan se vilka särdrag som korrelerar starkast med målet. Pearsons korrelationskoefficient används ofta och mäter enbart linjära samband. Det antas vanligtvis att data är normalfördelad, vilket man kan bedöma visuellt utifrån histogram. Starkt korrelerade variabler har en Pearsons korrelationskoefficient nära 1 (positivt korrelerade) eller -1 (negativt korrelerade). Ett värde nära 0 innebär att de två variablerna inte är linjärt korrelerade.
Om vi använder samma tidsperioder för tidigare och framtida prisförändringar kan vi se om aktiepriset är mean-reverting (studsar upp och ned) eller trenddrivande (stiger om det nyligen har stigit).
Den här övningen är en del av kursen
Maskininlärning för finans i Python
Övningsinstruktioner
Använd DataFrame:en lng_df och dess kolumn Adj_Close:
- Skapa det framtida priset om 5 dagar (som
5d_future_close) med pandas.shift(-5). - Använd
pct_change(5)på5d_future_closeochAdj_Closeför att skapa den framtida 5-dagars procentuella prisförändringen (5d_close_future_pct) och den nuvarande 5-dagars procentuella prisförändringen (5d_close_pct). - Undersök korrelationerna mellan de två kolumnerna med procentuella prisförändringar över 5 dagar genom att använda
.corr()pålng_df. - Skapa ett spridningsdiagram av
5d_close_pctmot5d_close_future_pctmedplt.scatter().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Create 5-day % changes of Adj_Close for the current day, and 5 days in the future
lng_df['5d_future_close'] = lng_df['Adj_Close'].shift(____)
lng_df['5d_close_future_pct'] = lng_df['5d_future_close'].pct_change(5)
lng_df['5d_close_pct'] = lng_df['Adj_Close'].pct_change(____)
# Calculate the correlation matrix between the 5d close pecentage changes (current and future)
corr = lng_df[['5d_close_pct', '5d_close_future_pct']].____
print(corr)
# Scatter the current 5-day percent change vs the future 5-day percent change
plt.scatter(lng_df['5d_close_pct'], lng_df[____])
plt.show()