Wie erhalte ich eine Korrelation für eine rollende Pandaserie und eine feste Serie?
Nov 19 2020
Ich möchte die Korrelation zwischen zwei Serien berechnen. Ich habe sie definiert als:
s = pd.Series([1,2,3,4,5,6,7])
s2 = pd.Series([2,3,4])
was ich will ist eine korrelationsreihe, dass die werte die korr zwischen s.rolling (3) mit s2 sind
Zum Beispiel: Das erste Element des Ergebnisses sollte [1,2,3] .corr (s2) sein, das zweite sollte [2,3,4] .corr (s2) sein, .....
Ich habe das Verwendungsbeispiel des Rollens gelesen, aber ich denke, es ist eine innere Methode des Rollens (3).
Antworten
QuangHoang Nov 19 2020 at 21:59
Kannst du eine rollierende Bewerbung machen:
from scipy.stats import pearsonr
s.rolling(3).apply(lambda x: pearsonr(x,s2)[0])
Ausgabe:
0 NaN
1 NaN
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
dtype: float64
WBM Nov 19 2020 at 21:50
Warum nicht einfach eine for-Schleife verwenden?
import pandas as pd
s = pd.Series([1,2,3,4,5,6,7])
s2 = pd.Series([2,3,4])
window_size = len(s2)
output = []
for i in range(len(s)-window_size):
output.append(s[i:window_size+i].corr(s2))