statespace.SARIMAX模型:为什么模型使用所有数据来训练模式,并预测一系列列车模型

时间:2017-05-29 06:03:16

标签: python time-series statsmodels

我按照教程研究了SARIMAX模型:https://www.digitalocean.com/community/tutorials/a-guide-to-time-series-forecasting-with-arima-in-python-3。数据的日期范围是1958-2001。

mod = sm.tsa.statespace.SARIMAX(y,
                                order=(1, 1, 1),
                                seasonal_order=(1, 1, 1, 12),
                                enforce_stationarity=False,
                                enforce_invertibility=False)

results = mod.fit()

当拟合ARIMA时间序列模型时,我发现作者所有日期范围数据都适合模型参数。但在验证预测时,作者使用从1998-01-01开始的日期作为拟合模型的数据日期范围的一部分。

pred = results.get_prediction(start=pd.to_datetime('1998-01-01'), dynamic=False)
我知道在机器学习模型中,训练数据和验证(测试)数据不同,我的意思是不同的范围。我的意思是作者是对的?为什么这样(我的意思是所有列车数据的原因),我是一个新的SARIMAX模型。

你能告诉我更多关于这个模型的信息吗,例如如何预测几天或几周而不仅仅是一个月,我的意思是如何设置order =(1,1,1),seasonal_order =(1,1, 1,12)。谢谢!

2 个答案:

答案 0 :(得分:8)

作者是对的。当您进行回归时(线性,高阶或逻辑 - 无关紧要) - 绝对可以偏离您的训练数据(例如,即使对训练数据进行逻辑回归也可能会给您误报)。

同样代表时间序列。我认为这样作者想要证明模型是正确构建的。

seasonal_order=(1, 1, 1, 12)

如果您查看tsa stats documentation,您会看到如果您想使用季度数据 - 您必须分配最后一个参数 - 值4.每月 - 12.这意味着如果你想用每周数据操作season_order应该是这样的

seasonal_order=(1, 1, 1, 52)

每日数据

seasonal_order=(1, 1, 1, 365)

order component是分别负责非季节性参数p,d和q的参数。您必须根据您的数据行为找到它们

  • 页。您可以将其解释为enter image description here对其有影响 enter image description here。或者换句话说,如果您有每日数据且p为6,那么您可以将其理解为周二数据会对周日数据产生影响。
  • d。差分参数。它定义了您的流程的集成级别。这意味着你应该多少次应用时间序列differencing operator来使你的时间序列固定
  • Q值。您可以将其解释为先前的噪音(错误)影响当前值

这是一个很好的answer如何找到非季节性组件值

答案 1 :(得分:0)

博客作者设置这些参数是因为:“我们的代码输出表明SARIMAX(1,1,1)x(1,1,1,12)产生最低的AIC。”