使用 3 个月数据集进行多变量时间序列预测

dpe*_*per 13 python machine-learning time-series prediction

我生成了 3 个月的数据(每一行对应每一天),我想对相同的数据执行多变量时间序列分析:

可用的列是 -

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation
Run Code Online (Sandbox Code Playgroud)

每个日期在数据集中有 1 个条目并且有 3 个月的数据,我想拟合一个多元时间序列模型来预测其他变量。

到目前为止,这是我的尝试,我试图通过阅读文章来实现相同的目标。

我做了同样的 -

df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y')

data = df.drop(['Date'], axis=1)

data.index = df.Date

from statsmodels.tsa.vector_ar.vecm import coint_johansen
johan_test_temp = data
coint_johansen(johan_test_temp,-1,1).eig



#creating the train and validation set
train = data[:int(0.8*(len(data)))]
valid = data[int(0.8*(len(data))):]

freq=train.index.inferred_freq

from statsmodels.tsa.vector_ar.var_model import VAR

model = VAR(endog=train,freq=train.index.inferred_freq)
model_fit = model.fit()


# make prediction on validation
prediction = model_fit.forecast(model_fit.data, steps=len(valid))

cols = data.columns

pred = pd.DataFrame(index=range(0,len(prediction)),columns=[cols])
    for j in range(0,4):
        for i in range(0, len(prediction)):
           pred.iloc[i][j] = prediction[i][j]
Run Code Online (Sandbox Code Playgroud)

我有一个验证集和预测集。然而,预测远比预期的要糟糕。

数据集的图是 - 1. % Variation 在此处输入图片说明

  1. 容量_已预订 在此处输入图片说明

  2. 总预订和搜索 在此处输入图片说明

我收到的输出是 -

预测数据框 -

在此处输入图片说明

验证数据框 -

在此处输入图片说明

如您所见,预测与预期相差甚远。任何人都可以提出一种提高准确性的方法。此外,如果我在整个数据上拟合模型然后打印预测,它不会考虑新的月份已经开始,因此不会进行预测。这怎么能被纳入这里。任何帮助表示赞赏。

编辑

链接到数据集 -数据集

谢谢

小智 1

提高准确性的一种方法是查看每个变量的自相关性,如 VAR 文档页面中建议的那样:

https://www.statsmodels.org/dev/vector_ar.html

特定滞后的自相关值越大,该滞后对过程就越有用。

另一个好主意是查看 AIC 标准和 BIC 标准来验证您的准确性(上面的同一链接有一个使用示例)。值越小表明您找到真实估计量的概率越大。

通过这种方式,您可以改变自回归模型的顺序,并查看提供最低 AIC 和 BIC 的模型,两者一起进行分析。如果 AIC 指示最佳模型的滞后为 3,而 BIC 指示最佳模型的滞后为 5,则您应该分析 3,4 和 5 的值以查看具有最佳结果的模型。

最好的情况是拥有更多数据(因为 3 个月并不多),但您可以尝试这些方法看看是否有帮助。