可能最简单的做法是让 Statsmodels 为您计算它们,但使用经过训练的参数和新数据集。这是一个例子:
首先,训练模型(您的第 1 步)并保存参数,以便您以后可以使用它们
# 1. Train the model
mod = sm.tsa.SARIMAX(endog_train, order=(p, d, q))
res = mod.fit()
# Save the parameters for use later
res.params.to_csv('trained_params.csv')
然后使用更新的数据集创建一个新模型,但不是重新训练参数(使用fit 方法),而是将旧参数应用于新数据(使用smooth 方法)。
# 2. Use the saved parameters with a new dataset
mod = sm.tsa.SARIMAX(endog_updated, order=(p, d, q))
params = pd.read_csv('trained_params.csv', index_col=[0])['0']
res = mod.smooth(params)
# Produce forecasts and 95% confidence intervals
fcast = res.get_forecast(steps=5, alpha=0.05)
print(fcast.summary_frame())
对于我使用的数据,打印如下:
realgdp mean mean_se mean_ci_lower mean_ci_upper
2009Q4 1.682724 3.717418 -5.603282 8.968729
2010Q1 1.031580 4.360360 -7.514567 9.577728
2010Q2 0.632402 4.578709 -8.341702 9.606506
2010Q3 0.387689 4.658123 -8.742065 9.517443
2010Q4 0.237670 4.687621 -8.949899 9.425239
您可以根据需要多次执行此操作,然后在需要重新训练模型时,只需返回上面的 #1。