statsmodels的plot_acf、plot_pacf函数滞后数异常问题咨询
statsmodels plot_acf/plot_pacf绘图不一致问题解决方案
- 你遇到的默认输出最大滞后数为20的问题,确实是参数默认值导致的。statsmodels 0.12.2版本中,
plot_acf、plot_pacf函数的lags参数默认值为20,未手动指定时就会只绘制到滞后20阶的结果。部分教程使用的旧版本statsmodels默认规则不同,或教程示例数据样本量更大,才会出现相同代码输出不一致的情况。 - 报错
Can only compute partial correlations for lags up to 50% of the sample size.是PACF的计算逻辑限制:偏自相关系数的计算要求滞后阶数最多不能超过样本量的50%。你可以先打印当前加载的时间序列长度,确认可设置的最大滞后数,再对应调整。
调整后复现代码
from pandas import read_csv from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf from matplotlib import pyplot series = read_csv('stationary.csv', header=None, index_col=0, parse_dates=True, squeeze=True) # 打印样本量,确认最大可设置的PACF滞后数 print(f"当前时间序列样本量:{len(series)},最大可设PACF滞后数:{len(series)//2 - 1}") pyplot.figure() pyplot.subplot(211) # lags参数替换为你要复现的教程中的最大滞后数 plot_acf(series, ax=pyplot.gca(), lags=30) pyplot.subplot(212) # 若PACF数值和教程不一致可调整method参数,ywm为0.12版本默认值,yw为旧版本默认值 plot_pacf(series, ax=pyplot.gca(), lags=30, method='ywm') pyplot.show()
若当前数据集样本量不足,你需要替换为和教程一致的原始数据集,保证样本量满足滞后数的2倍要求,否则无法复现相同的绘图结果。
内容的提问来源于stack exchange,提问作者hdabdelatif
相关产品推荐
相关产品推荐

