我按照教程研究了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)。谢谢!
答案 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的参数。您必须根据您的数据行为找到它们
这是一个很好的answer如何找到非季节性组件值
答案 1 :(得分:0)
博客作者设置这些参数是因为:“我们的代码输出表明SARIMAX(1,1,1)x(1,1,1,12)产生最低的AIC。”