【发布时间】:2020-11-30 17:11:58
【问题描述】:
我正在开展一个项目来分析 covid 19 如何影响发货量,并且我正在使用 SARIMAX 预测未来几个月的发货量。但是,我不断得到如下所示的结果:
# Shipment volume data (monthly basis)
df_monthly = df.loc[:'2020-06-30'].resample('MS').sum()
df_monthly
# covid 19 data (monthly basis)
df_covid_monthly = df_covid.loc[:'2020-06-30']
df_covid_monthly = df_covid.resample('MS').sum()
df_covid_monthly
# SARIMAX model
model= SARIMAX(df_monthly, exog=df_covid_new, order=(2,1,1), enforce_invertibility=False,
enforce_stationarity=False)
results= model.fit()
# Prediction
pred = results.get_prediction(start='2020-06-01',end='2020-12-01',dynamic=False, index=None,
exog=df_covid_monthly['2020-02-01':],
extend_model=None, extend_kwargs=None)
pred
输出:
<statsmodels.tsa.statespace.mlemodel.PredictionResultsWrapper at 0x27b64b4a608>
【问题讨论】:
-
我不知道这是否是原因,但我注意到最后第三行的日期不在指定的范围内。这有什么具体原因吗?
-
我所拥有的 covid 19 数据仅从 1/2/2020-1/6/2020 开始。我注意到,当我没有指定数据范围时,我会得到 ValueError: 提供的外生值不是适当的形状。需要 (6, 1),得到 (42, 1)。
-
那么为什么要指定一个不在数据范围内的日期范围?将您的开始更改为 2020-02-01 并将结束更改为 2020-06-01 不是更正确吗? (请注意,我假设您的日期格式为 dd/mm/yyyy)
-
我想预测未来几个月的出货量。我应该怎么做,因为我对此有点陌生?
标签: python time-series statsmodels forecasting arima