如何使用已拟合的pmdarima SARIMA模型对其他时间序列进行预测
可以实现该需求,核心逻辑是复用已拟合SARIMA模型的阶数配置和训练得到的系数参数,加载到新的模型实例中对新序列做预测,全程不会重新拟合参数,完全复用原有训练结果。
你可以参考以下代码实现你需要的predict_for功能:
from pmdarima import ARIMA def predict_for(fitted_model, new_series, n_periods): # 提取原模型的阶数配置(p,d,q 和 季节性P,D,Q,m) order = fitted_model.order seasonal_order = fitted_model.seasonal_order # 提取原模型已拟合得到的所有系数参数 fitted_params = fitted_model.params() # 初始化同配置的新模型,关闭自动拟合 new_model = ARIMA( order=order, seasonal_order=seasonal_order, suppress_warnings=True ) # 用新序列和原模型参数初始化,maxiter=0保证不重新训练参数 new_model.fit(new_series, start_params=fitted_params, maxiter=0) # 输出指定步长的预测结果 return new_model.predict(n_periods=n_periods)
调用方式和你预期的完全一致:
# 其他完全独立的时间序列 some_other_series = train + np.random.randint(0, 5000, len(train)) N = 12 # 预测未来12步结果 forecasts = predict_for(model, some_other_series, N)
使用时需要注意以下限制:
- 新时间序列需要和原训练序列做相同的预处理逻辑,比如原序列拟合前做过对数变换、标准化等操作,新序列也需要做相同处理
- 新序列的平稳性需要和原模型的差分阶数匹配,比如原模型d=1代表原序列一阶差分后平稳,新序列也需要满足一阶差分后平稳,否则预测结果会出现严重偏差
- 如果原模型拟合时传入了外生变量,预测新序列时也需要传入对应长度、维度一致的外生变量
内容的提问来源于stack exchange,提问作者GratefulGuest
相关产品推荐
相关产品推荐

