在训练了一个 sarimax 模型之后,我希望能够在未来使用它和新的观察结果进行预测,而无需重新训练它。但是,我注意到我在新应用的预测中使用的观察数量会改变预测。
据我了解,只要给出足够的观察值以允许正确计算自回归和移动平均值,该模型甚至不会使用早期的历史观察值来告知自己,因为系数没有被重新训练。在 (3,0,1) 示例中,我会认为它需要至少 3 个观察值来应用其训练的系数。然而,情况似乎并非如此,我质疑我是否正确理解了模型。
作为示例和测试,我已将经过训练的 sarimax 应用于完全相同的数据,并删除了最初的几个观察值,以使用以下代码测试行数对预测的影响:
import pandas as pd
from statsmodels.tsa.statespace.sarimax import SARIMAX, SARIMAXResults
y = [348, 363, 435, 491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432]
ynew = y[10:]
print(ynew)
model = SARIMAX(endog=y, order=(3,0,1))
model = model.fit()
print(model.params)
pred1 = model.predict(start=len(y), end = len(y)+7)
model2 = model.apply(ynew)
print(model.params)
pred2 = model2.predict(start=len(ynew), end = len(ynew)+7)
print(pd.DataFrame({'pred1': pred1, 'pred2':pred2}))
结果如下:
pred1 pred2
0 472.246996 472.711770
1 494.753955 495.745968
2 498.092585 499.427285
3 489.428531 490.862153
4 477.678527 479.035869
5 469.023243 470.239459
6 465.576002 466.673790
7 466.338141 467.378903
基于此,这意味着如果我要从具有新观测值的训练模型生成预测,观测值本身的变化将影响预测的完整性。
对此有何解释?考虑到观察结果数量的变化,将训练模型应用于新观察结果的标准做法是什么?
如果我想更新模型,但无法控制我是否从训练集一开始就拥有所有原始观察结果,那么这个测试将表明我的预测也可能是随机数。