Python:如何使用已拟合的ARIMA模型对未知数据进行滚动预测
statsmodels ARIMA固定模型滚动预测实现方案
你需要的固定参数滚动预测可以通过ARIMA拟合结果对象自带的extend(0.13+版本)/append(0.12及更早版本)方法实现,该方法仅用已训练好的模型参数更新观测序列状态,不会重新拟合,完全满足实时预测的性能要求。
具体实现代码示例
import pandas as pd from statsmodels.tsa.arima.model import ARIMA # 1. 初始拟合固定参数模型,仅执行一次 # 假设全量数据的value列为时间序列值,索引为连续顺序索引 train_data = df.iloc[:7000]['value'] # 替换为你自己的p/d/q参数 arima_model = ARIMA(train_data, order=(1,1,1)) # 拟合后的res对象全程复用,不需要再次调用fit fitted_res = arima_model.fit() # 2. 第一次预测:得到7001~7004的4步预测结果 first_pred = fitted_res.forecast(steps=4) # 3. 拿到新观测数据(索引7001的真实值)后更新模型状态 new_observed = df.iloc[7000:7001]['value'] # extend方法传入新增观测,refit设为False保证不重新拟合模型参数 # 0.12及更早版本替换为 fitted_res.append(new_observed, refit=False) fitted_res = fitted_res.extend(new_observed, refit=False) # 4. 第二次预测:得到7002~7005的4步预测结果 second_pred = fitted_res.forecast(steps=4) # 后续滚动迭代重复步骤3、4即可
核心注意事项
- 必须设置
refit=False,否则模型会用全量历史+新增数据重新估计参数,不符合固定模型的需求 - 单次可以传入任意长度的新增观测序列,不需要逐条传入,方法会自动更新内部状态
- 如果使用带外生变量的ARIMAX模型,调用
extend时需要同步传入新增观测对应的外生变量值,维度需和训练时保持一致
内容的提问来源于stack exchange,提问作者c_m_conlan
相关产品推荐
相关产品推荐

