Вопрос о результате autocorrelation_plot против результата autocorr
Я использовал autocorrelation_plot
для построения автокорреляции прямой линии:
import numpy as np
import pandas as pd
from pandas.plotting import autocorrelation_plot
import matplotlib.pyplot as plt
dr = pd.date_range(start='1984-01-01', end='1984-12-31')
df = pd.DataFrame(np.arange(len(dr)), index=dr, columns=["Values"])
autocorrelation_plot(df)
plt.show()
Затем я попытался с помощью autocorr()
Для расчета автокорреляции с разными лагами:
for i in range(0,366):
print(df['Values'].autocorr(lag=i))
Выходное значение равно 1 (или 0,99) для всех задержек. Но из коррелограммы ясно, что автокорреляция - это кривая, а не прямая линия с фиксированным значением 1.
Правильно ли я интерпретировал коррелограмму или неправильно использовал функцию autocorr()? Спасибо!
1 ответ
Вы используете обе функции правильно, но... Autocorrelation_plot использует другой способ вычисления автокорреляций, чем autocorr().
Следующие два поста объясняют больше о различиях. К сожалению, я не знаю, какой способ расчета является правильным:
В чем разница между ACF панд и statsmodel ACF?
Если вам это нужно, вы можете получить автокорреляции из графика автокорреляции следующим образом:
ax = autocorrelation_plot(df)
ax.lines[5].get_data()[1]