我在Stack Overflow中提到了以前的查询,但仍然无法得出结论
我有一个包含每月商品价格的数据集。我想用SARIMAX预测价格。我想预测未来24个月的价格。最初,我有509行的实际每月价格。现在我想预测下一个24个月(或24行)的价格,我已经为其创建了新的Dataframe。新的数据帧还包含实际的数据帧行
当我使用下面的代码时,我使用“dynamic=True”得到这个图:
future_df['forecast'] = results.predict(start = 508, end =533, dynamic =True)
px.line(future_df, x='Date', y= ['Price','forecast'],template = 'plotly_dark')
当我使用下面的代码时,我使用“dynamic=False”得到这个图:
future_df['forecast'] = results.predict(start = 508, end =533, dynamic =False)
px.line(future_df, x='Date', y= ['Price','forecast'],template = 'plotly_dark')
现在实际的问题来了,我得到了不同的图表
当我使用下面的代码使用“dynamic=True”或“dynamic=False”时,我得到了不同的图形,这与之前的情况不同
future_df['forecast']=结果。预测(开始=400,结束=533,动态=True)
px.line(future_df,x='Date',y='Price','forecast'],template='plotly'u dark')
future_df['forecast']=结果。预测(开始=400,结束=533,动态=False)
px.line(future_df,x='Date',y='Price','forecast'],template='plotly'u dark')
我还有几个问题:
Q1)最初我有509行,即509个时段的月价格(=行)。现在我想预测未来24个月的价格。
我使用所有509行(价格)构建了SARIMAX模型。我想验证每个图的模型。我应该使用哪种方法“dynamic=True”或“dynamic=False”?例如,我想使用plotly验证最后133行的价格509行内的价格。我可以看到,“future_df['forecast']=results.predict(开始=400,结束=533,动态=False)”与“future_df['forecast']=results.predict(开始=400,结束=533,动态=True)”相比,给我提供了更好的图表。请告知
Q2)我使用dynamic=true和false的预测是相同的。请参见下面的输出代码。
future_df['forecast']=结果。预测(开始=510,结束=533,动态=True)
##使用dynamic=False进行预测
future_df['forecast']=结果.预测(开始=510,结束=533,动态=False)
如果未来24个月的预测结果相似,那么我现在不知道该用哪种方法来预测未来24个月的价格。请告知。 提前谢谢你的帮助强>
当您设置
dynamic=True
时,模型连续预测一步超前(t+1),然后对于第二步超前(t+2)预测,它将预测值(t+1)附加到数据,在新扩展的数据上重新拟合模型,然后进行第二步超前预测。这称为样本外预测当您设置
dynamic=False
时,模型会使用前一时间步的真值而不是使用预测值连续预测一步。这称为样本预测在预测从509到533的曲线图的第一次比较中,得到相同曲线图的原因是您在进行外推,因此您没有预测的接下来24个步骤的真值,无论设置动态模型是否为真,使用样本外方法
由于样本外方法使用前一时间步的最后一个预测值来预测下一个时间步的值,随着步数的增加,预计会偏离实际值,因为在每一步的预测中,拟合模型也会学习前一个预测步的误差
用
dynamic=False
预测从400到508将比预期的dynamic=True
有更好的预测结果,因为它是样本方法最好的办法可能是在笔记本或其他任何东西上单独绘制['Price''],然后根据真实数据及其外观选择True或False
相关问题 更多 >
编程相关推荐