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
时间序列值数组
- ax
AxesSubplot,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。
- missing
str,optional 指定如何处理NaN的字符串,可选值为[‘none’, ‘raise’, ‘conservative’, ‘drop’]。
- title
str,optional 图表上显示的标题。默认是‘自相关’
- zerobool,
optional 指示是否包含0滞后自相关性的标志。 默认值为True。
- auto_ylimsbool,
optional 如果为真,自动调整y轴的限制以适应ACF值。
- bartlett_confintbool,
defaultTrue 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_kwargs
dict,optional 可选的关键字参数字典,这些参数会被传递给vlines。
- **kwargs
kwargs,optional 可选的关键字参数,这些参数直接传递给 Matplotlib 的
plot和axhline函数。
- 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()