pmdarima的auto_arima预测时报NaN/inf值错误如何排查
问题排查与解决方案
错误根源
- 报错并非来自输入的时间序列
ts,而是自动参数搜索选出的ARIMA(3,2,2)模型数值不稳定,导致预测阶段计算置信区间时生成了无穷大值,触发scikit-learn的数值校验报错 - 你的时间序列仅包含11个样本点,经过2阶差分后仅剩9个有效样本,却需要拟合3个自回归系数+2个移动平均系数,参数过多导致自由度严重不足。搜索日志里出现的异常低AIC值(12)、大量
AIC=inf记录,本身就是短数据支撑高参数模型时数值不稳定的典型信号
修复方案
你可以任选以下一种方式解决问题:
- 限制ARIMA的参数搜索范围,给
auto_arima添加max_p、max_q参数,控制参数数量适配短序列,避免选出参数过多的不稳定模型:
model = pmd.auto_arima(ts, start_p=1, start_q=1, test="adf", max_p=2, max_q=1)
- 关闭预测时的置信区间计算,调用
predict时添加参数return_conf_int=False,跳过导致报错的置信区间校验逻辑,直接获取预测值:
est = model.predict(1, return_conf_int=False)[0]
- 补充时间序列样本量,ARIMA模型建议至少有30个以上的历史样本才能保证参数估计的稳定性,当前11个样本的长度本身不适合使用复杂度较高的ARIMA模型。
内容的提问来源于stack exchange,提问作者Josh K
相关产品推荐
相关产品推荐

