Выравнивание окна корреляции Excel с окном корреляции Pandas
Я создал скользящую корреляцию в EXCEL, используя 3-периодное окно для Var_1 и Var_2.Код Excel:
=CORREL(B2:B4,C2:C4)
Я пытаюсь создать такой же результат в Python. Однако, когда я выполняю код, мои результаты смещаются на 1 строку в Python. Я также получаю 1.0 в качестве значения первой строки, чего я не понимаю. Лист считывается в Python из Excel и сохраняется в виде кадра данных pandas. Вот изображение. Код Python, который я создал для воссоздания этой скользящей корреляции.
df2 = pd.DataFrame((df.iloc[::1,1]).rolling(window = 3,min_periods = 1,center = True).corr((df.iloc[::1,2])))
1 ответ
Вы могли бы использовать модуль статистики со списком:
df['r_value'] = [scipy.stats.linregress(df['Var_1'].loc[i:i+2], df['Var_2'].loc[i:i+2])[2] for i in range(len(df))]
Var_1 Var_2 r_value
0 5 -55 -0.525909
1 41 -44 -0.455413
2 85 -65 0.032059
3 55 -77 0.896258
4 65 -25 0.388874
5 47 -77 0.474843
6 25 -48 1.000000
7 63 -12 0.000000