开始时的时间序列预测

2024-10-01 09:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个系列hospitalization_diff,其中.head()

date
2020-10-16    347.0
2020-10-15    149.0
2020-10-14    530.0
2020-10-13   -489.0
2020-10-12   -859.0
Name: hospitalizedIncrease, dtype: float64

我想使用ARIMA模型(已经测试了平稳性、差异性和优化参数)预测时间序列。我从here得到了代码位

# split into train-test set
size = int(len(X) * 0.75)
train, test = hospitalization_diff[:size], hospitalization_diff[size:]

# Build Model
model = ARIMA(train, order=(0, 0, 1))  
fitted = model.fit(disp=-1)  

# Forecast
fc, se, conf = fitted.forecast(len(test), alpha=0.05)  # 95% conf

# Make as pandas series
fc_series = pd.Series(fc, index=test.index)
lower_series = pd.Series(conf[:, 0], index=test.index)
upper_series = pd.Series(conf[:, 1], index=test.index)

# Plot
plt.figure(figsize=(12,5), dpi=100)
plt.plot(train, label='training')
plt.plot(test, label='actual')
plt.plot(fc_series, label='forecast')
plt.fill_between(lower_series.index, lower_series, upper_series, 
                 color='k', alpha=.15)
plt.title('Forecast vs Actuals')
plt.legend(loc='upper left', fontsize=8)
plt.show()

但是,作为输出,我得到forecast vs actual

我不明白为什么它会预测这个系列的开始,我做错了什么


Tags: testsizeindexplotconfdifftrainplt
1条回答
网友
1楼 · 发布于 2024-10-01 09:32:42

因为您的数据集(包括traintest)是按相反的时间顺序排列的,必须在一开始就进行更正

# apply at the beginning of your code
hospitalization_diff.sort_index(inplace=True)

相关问题 更多 >