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

Python ARIMA时间序列预测:解决forecast_variance属性不存在报错

问题原因与解决方案

核心报错原因

statsmodels.tsa.arima.model.ARIMA训练得到的ARIMAResults对象没有forecast_variance方法,你混淆了旧版ARIMA(如statsmodels.tsa.arima_model.ARIMA)和新版接口的用法。新版ARIMA的预测方差需要通过get_forecast()方法获取,而非直接调用forecast_variance。

具体修改步骤

1. 修正预测值与方差的获取逻辑

在calculate_prediction_intervals方法中,替换原有的预测代码:

# 原错误代码
forecast = model_fit.forecast(steps=n_forecast_steps)
forecast_variance = model_fit.forecast_variance(steps=n_forecast_steps)
stderr = np.sqrt(model_fit.forecast_variance(steps=n_forecast_steps))

# 修改为
forecast_result = model_fit.get_forecast(steps=n_forecast_steps)
forecast = forecast_result.predicted_mean  # 获取点预测值
forecast_variance = forecast_result.var_pred_mean  # 获取预测方差
stderr = np.sqrt(forecast_variance)  # 计算标准误

2. 修正方法返回值

你调用calculate_prediction_intervals时尝试接收三个返回值,但原方法只返回两个,需要修改方法的return语句:

# 原return语句
return forecast, prediction_intervals

# 修改为
return forecast, forecast_variance, prediction_intervals

3. 修正差分逻辑(可选但重要)

你的difference_series方法逻辑错误,累加多次差分结果会导致数据失真,正确的d阶差分应该是逐次对前一次的差分结果再做差分:

def difference_series(self, order):
    diff_series = self.series.copy()
    # 执行order[1]次差分
    for _ in range(order[1]):
        diff_series = diff_series.diff().dropna()
    return diff_series

4. 修正绘图方法的参数匹配

你调用plot_original_series时传入了forecast_variance,但方法定义中没有该参数,且方法内部未用到它,可去掉多余参数:

# 原调用代码
ts_forecast.plot_original_series(forecast, forecast_variance, prediction_intervals, best_order)

# 修改为
ts_forecast.plot_original_series(forecast, prediction_intervals, best_order)

同时确保方法定义的参数列表与调用一致:

def plot_original_series(self, forecast, prediction_intervals, order):
    # 原方法逻辑不变

额外注意事项

  • 新版statsmodels的ARIMA接口(statsmodels.tsa.arima.model.ARIMA)与旧版(statsmodels.tsa.arima_model.ARIMA)API差异较大,建议优先参考官方文档中的新版用法。
  • 代码中存在两处重复的Usage代码块,运行时会执行第二次的实例化逻辑,建议删除其中一处避免混乱。

内容的提问来源于stack exchange,提问作者wasmithpfs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:30:56