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

如何在Python中用ARIMAX模型预测?遇样本内拟合问题求解答

ARIMAX模型预测问题与滞后项疑问解答

一、解决样本内拟合而非测试集预测的问题

你的results.predict(steps=5)默认从训练集起始位置(索引0)开始预测,所以返回的是训练集的拟合值,而非样本外测试集预测。可以通过两种方式修正:

方法1:指定预测起始位置

训练集共100条数据(索引0-99),将start参数设为训练集长度,同时注意外生变量列名要和训练集一致(你代码里的pc1,pc2应该是笔误,需改为x1,x2):

# 修正外生变量列名,指定从训练集结束位置开始预测
preds = results.predict(start=len(df_train), end=len(df_train)+4, exog=df_test[['x1', 'x2']])

方法2:使用get_forecast()(更推荐)

statsmodels为ARIMA结果提供了专门的get_forecast()方法用于样本外预测,无需手动指定起始位置,会自动基于训练集末尾状态计算:

# 生成5步样本外预测
forecast = results.get_forecast(steps=5, exog=df_test[['x1', 'x2']])
# 提取预测值
forecast_values = forecast.predicted_mean

二、关于模型滞后项的说明

不需要手动追加训练集y的最后2个值。results对象在拟合完成后,已经保存了训练序列的最后状态信息(包括滞后的y值、残差等),样本外预测时会自动利用这些信息完成递推计算,无需额外操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:55:21