Вопрос о результате autocorrelation_plot против результата autocorr - PullRequest
0 голосов
/ 03 января 2019

Я использовал 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()

enter image description here

Затем я попытался использовать autocorr() для расчета автокорреляции с разными лагами:

for i in range(0,366):
    print(df['Values'].autocorr(lag=i))

Выходное значение равно 1 (или 0,99) для всех задержек. Но из коррелограммы ясно, что автокорреляция является кривой, а не прямой линией, зафиксированной на 1.

Правильно ли я интерпретировал коррелограмму или неправильно использовал функцию autocorr ()? Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

Вы используете обе функции правильно, но ... Autocorrelation_plot использует другой способ вычисления автокорреляций, чем autocorr () .

Следующие два поста объясняют больше о различиях.К сожалению, я не знаю, какой способ вычисления является правильным:

В чем разница между ACF для панд и ACF statsmodel?

Почему NUMPY соотносятся иcorrcoef возвращает различные значения и как «нормализовать» коррелят в «полном» режиме?

Если вам это нужно, вы можете получить автокорреляции из графика автокорреляции следующим образом:

ax = autocorrelation_plot(df)
ax.lines[5].get_data()[1]
...