我目前正在做一个项目,我不太确定如何最好地实现下一步,所以我希望得到建议和反馈。
在我的数据中,某个日期可能会发生几次,因为我通过邮政编码预测销售额。数据结构示例的背景是,我想要添加天气到邮政编码。检验不同的天气参数是否能更好地预测my模型(SARIMA/SARIMAX)。之后,我希望在表中有一个输出,在该表中存储预测的RMSE。如果auto_arima为此选择了参数,那也是很好的。
然后,我会比较SARIMA和SARIMAX之间的数据,这样我就可以通过外部数据检查预测中有多少%变得更好了。
目前,数据在一个有60多个邮政编码的表格中。有没有人有一个想法或函数,我可以用来创建多个模型(每个压缩代码与选定的参数)和表?
我现在读到了一些关于金字塔的东西,但我不太确定这是否是正确的包,无论如何我也找不到类似的例子。
发布于 2022-01-20 00:41:11
每个邮政编码都有自己的时间序列。如果您有60个邮政编码,那么您可能需要创建60个模型,每个时间序列一个。这是很大的努力。最简单的方法是这样做:
你可以用金字塔实现自动化。有一个函数auto_arima()
试图为ARIMA找到最好的参数集。你可以用邮政编码来分割你的数据。然后,您可以在所有数据文件上创建一个循环。在循环中,首先运行auto_arima()
以找到最佳的参数:
from pmdarima.arima import auto_arima
auto_arima_model = auto_arima(y=endogenous_variable,
x=exogenous_variable, #only required if exog data is used
seasonal=True,
m=7, #seasonality
information_criterion="aic",
trace=True)
auto_arima
无法检测您的数据是否是固定的,所以您需要自己找到它。查看文件:
然后创建一个模型(例如,在statsmodel中,auto_arima()也返回一个模型,但它的功能不像状态模型那样多):
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(endog=endogenous_variable,
exog=exogenous_variable, #only required if exog data is used
order=auto_arima_model.order,
seasonal_order=auto_arima_model.seasonal_order).fit()
https://www.statsmodels.org/dev/generated/statsmodels.tsa.statespace.sarimax.SARIMAX.html
然后,您可以做出预测,并将它们添加到表中或任何您想要做的事情中。您还可以在管道中实现这一点。您应该记住,auto_arima()
是一个很好的函数,但并不完美,模型可能不是最好的。
https://stackoverflow.com/questions/70778610
复制