每个邮政编码都有自己的时间序列。如果您有 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
无法检测您的数据是否静止,因此您需要自己找出来。检查文档:
https://alkaline-ml.com/pmdarima/modules/generated/pmdarima.arima.auto_arima.html
然后创建一个模型(例如,在 statsmodels 中,auto_arima() 也返回一个模型,但它没有 statsmodels 那么多的功能):
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()
是一个很好的功能,但并不完美,模型可能不是最好的。