statsmodels.graphics.tsaplots.plot_acf

statsmodels.graphics.tsaplots.plot_acf(x, ax=None, lags=None, *, alpha=0.05, use_vlines=True, adjusted=False, fft=False, missing='none', title='Autocorrelation', zero=True, auto_ylims=False, bartlett_confint=True, vlines_kwargs=None, **kwargs)[source]

绘制自相关函数

在水平轴上绘制滞后,在垂直轴上绘制相关性。

Parameters:
xarray_like

时间序列值数组

axAxesSubplot, optional

如果指定,此子图将用于绘图,而不是创建新图形。

lags{int, array_like}, optional

一个整数或滞后值数组,用于水平轴。当lags是整数时,使用np.arange(lags)。如果没有提供,lags=np.arange(len(corr)) 被使用。

alphascalar, optional

如果给定一个数值,则返回给定水平的置信区间。例如,如果 alpha=.05,则返回 95% 的置信区间,其中标准差根据 Bartlett 公式计算。如果为 None,则不绘制置信区间。

use_vlinesbool, optional

如果为True,则绘制垂直线和标记。 如果为False,则仅绘制标记。默认标记是‘o’;可以使用marker关键字参数进行覆盖。

adjustedbool

如果为真,则自协方差的分母为 n-k,否则为 n

fftbool, optional

如果为真,则通过FFT计算ACF。

missingstr, optional

指定如何处理NaN的字符串,可选值为[‘none’, ‘raise’, ‘conservative’, ‘drop’]。

titlestr, optional

图表上显示的标题。默认是‘自相关’

zerobool, optional

指示是否包含0滞后自相关性的标志。 默认值为True。

auto_ylimsbool, optional

如果为真,自动调整y轴的限制以适应ACF值。

bartlett_confintbool, default True

ACF值的置信区间通常设置在 r_k 的 2 倍标准误差范围内。用于标准误差的公式取决于具体情况。如果自相关性用于作为 ARIMA 例程的一部分来测试残差的随机性,则假设残差为白噪声来确定标准误差。任何滞后的近似公式是每个 r_k 的标准误差 = 1/sqrt(N)。有关 1/sqrt(N) 结果的更多详细信息,请参见 [1] 的第 9.4 节。有关更基础的讨论,请参见 [2] 的第 5.3.2 节。 对于原始数据的 ACF,滞后 k 处的标准误差是根据正确的模型是 MA(k-1) 来确定的。这允许可能的解释是,如果所有滞后超过某个滞后的自相关性都在限制范围内,则模型可能是由最后一个显著自相关性定义的 MA 阶数。在这种情况下,假设数据为移动平均模型,并且应使用 Bartlett 公式生成置信区间的标准误差。有关 Bartlett 公式结果的更多详细信息,请参见 [1] 的第 7.2 节。

vlines_kwargsdict, optional

可选的关键字参数字典,这些参数会被传递给vlines。

**kwargskwargs, optional

可选的关键字参数,这些参数直接传递给 Matplotlib 的 plotaxhline 函数。

Returns:
Figure

如果 ax 为 None,则创建图形。否则为 ax 连接的图形。

注释

改编自matplotlib的xcorr

数据被绘制为 plot(lags, corr, **kwargs)

kwargs 用于将 matplotlib 可选参数传递给绘制自相关图的线条以及水平线。这些选项必须对 Line2D 对象有效。

vlines_kwargs 用于传递额外的可选参数给连接每个自相关与轴的垂直线。这些选项必须对 LineCollection 对象有效。

参考文献

[1] Brockwell 和 Davis, 1987. 时间序列理论与方法 [2] Brockwell 和 Davis, 2010. 时间序列与预测导论, 第2版.

示例

>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> import statsmodels.api as sm
>>> dta = sm.datasets.sunspots.load_pandas().data
>>> dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008'))
>>> del dta["YEAR"]
>>> sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40)
>>> plt.show()

(源代码, png, 高分辨率png, pdf)

../_images/graphics_tsa_plot_acf.png

Last update: Oct 16, 2024