You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PACF内置绘图工具与手动调用pacf函数结果不一致问题咨询

问题原因与解决方法

你遇到的PACF结果差异及值小于-1的异常,核心是参数默认值不一致和滞后项范围不匹配导致的,具体分析和修复方案如下:

1. 估计方法的默认差异

statsmodels中两个函数的PACF计算默认方法不同:

  • pacf() 函数默认用 method='ywunbiased'(Yule-Walker无偏估计),这种方法在样本量小或序列有特殊相关性时,可能输出超出[-1,1]范围的结果,也就是你看到的最小值小于-1的异常。
  • plot_pacf() 函数默认用 method='ywmle'(Yule-Walker最大似然估计),该方法会将PACF值约束在[-1,1]区间内,计算结果和无偏估计有数值差异。

2. 滞后项范围不匹配

你的代码中:

  • 内置绘图时 plot_pacf 的 lags=len_of_pacf-1,绘制的是滞后1到len_of_pacf-1的PACF值;
  • 手动计算时 pacf(..., nlags=len_of_pacf),返回的是滞后0到len_of_pacf的结果(共len_of_pacf+1个值),其中滞后0的PACF恒为1,导致横轴范围和内置工具不匹配,放大了差异感。

修复代码

要让手动计算和内置绘图结果完全一致,需统一参数并匹配滞后范围:

len_of_pacf = len(entire_mid)//4

# 内置工具绘图(保留原逻辑)
plot_acf(entire_mid, lags=len(entire_mid)-1)
plot_pacf(entire_mid, lags=len_of_pacf-1)
plt.show()

# 手动绘图修正版
acf_result = acf(entire_mid, nlags=len(entire_mid)-1)
# 去掉lag 0的结果,和plot_acf的显示范围对齐
plt.plot(acf_result[1:])

# 统一使用plot_pacf默认的method,匹配lags参数
pacf_result = pacf(entire_mid, nlags=len_of_pacf-1, method='ywmle')
# 去掉lag 0的结果,和plot_pacf的显示范围对齐
plt.plot(pacf_result[1:])
plt.show()

额外优化

如果想避免PACF超出[-1,1]的情况,可以改用更稳定的ols(普通最小二乘法)估计方法,同时在两个函数中统一设置:

# 内置绘图
plot_pacf(entire_mid, lags=len_of_pacf-1, method='ols')
# 手动计算
pacf_result = pacf(entire_mid, nlags=len_of_pacf-1, method='ols')

内容的提问来源于stack exchange,提问作者Muhammad Ikhwan Perwira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:21:00