4

我曾经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()函数?

4

1 回答 1

2

您正确使用了这两个函数,但是...... Autocorrelation_plot使用与autocorr()不同的计算自相关的方法。

以下两篇文章详细说明了这些差异。不幸的是,我不知道哪种计算方式是正确的:

pandas ACF 和 statsmodel ACF 有什么区别?

为什么 NUMPY correlate 和 corrcoef 返回不同的值以及如何在“完整”模式下“标准化”相关?

如果需要,您可以从自相关图中获取自相关,如下所示:

ax = autocorrelation_plot(df)
ax.lines[5].get_data()[1]
于 2019-01-03T12:43:04.920 回答