首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么观测数改变了固定系数的sarimax模型的预测量?

为什么观测数改变了固定系数的sarimax模型的预测量?
EN

Stack Overflow用户
提问于 2022-02-23 18:00:52
回答 1查看 140关注 0票数 0

在训练了sarimax模型之后,我希望将来能够用新的观测来预编预报,而不必再训练它。然而,我注意到我在新应用的预测中使用的观测数改变了预测。

根据我的理解,只要给出足够的观测量,允许正确地计算自回归和移动平均,该模型甚至不会使用先前的历史观测来通知自己,因为系数没有经过再训练。在一个(3,0,1)的例子中,我认为它至少需要3个观测才能应用其经过训练的系数。然而,情况似乎并非如此,我怀疑我是否正确地理解了这一模式。

作为一个示例和测试,我对相同的数据应用了一个经过训练的sarimax,去掉了最初的几个观察结果,用以下代码测试行数对预测的影响:

代码语言:javascript
复制
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}))

结果如下:

代码语言:javascript
复制
   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

基于这一点,这意味着,如果我要从一个经过训练的模型中得到新的观测结果,那么观测数量的变化将影响到预测的完整性。

对此有何解释?鉴于新观测数目的变化,应用经过训练的新观测模型的标准做法是什么?

如果我想更新模型,但无法控制是否从我的训练集一开始就有所有的原始观测,这个测试将表明我的预测可能也是随机数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-24 00:23:43

主要议题

这里的主要问题是,您没有在第二组预测中使用新的结果对象(model2)。你有:

代码语言:javascript
复制
pred2 = model.predict(start=len(ynew), end = len(ynew)+7)

但你应该:

代码语言:javascript
复制
pred2 = model2.predict(start=len(ynew), end = len(ynew)+7)

如果您修复了这个问题,您将得到非常类似的预测:

代码语言:javascript
复制
      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

要理解它们为什么不相同,还有第二个问题(这不是代码中的问题,而是数据/模型的统计特性)。

二级发行

您的估计参数意味着一个非常持久的模型:

代码语言:javascript
复制
print(params)

给出

代码语言:javascript
复制
ar.L1        2.134401
ar.L2       -1.683946
ar.L3        0.549369
ma.L1       -0.874801
sigma2    1807.187815

它与近单位根过程相关联(最大特征值= 0.99957719)。

这意味着,一个特定的数据点对预测的影响需要很长时间才能消失。在你的例子中,这只是意味着对前10个周期的预测仍然有很小的影响。

这不是一个问题,它只是这个特定的估计模型的工作方式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71241967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档