使用三个月的数据进行多元时间序列预测

13

我有三个月的数据(每一行对应每一天),我想为此执行多元时间序列分析:

可用的列是 -

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

每个日期在数据集中有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]

我有一个验证集和预测集,但是预测结果比预期的要差得多。

数据集的图表如下:

  1. % 变异率 enter image description here
  2. 已预订容量 enter image description here
  3. 总预订量和搜索次数 enter image description here

我收到的输出如下:

预测数据框 -

enter image description here

验证数据框 -

enter image description here

正如您所看到的,预测结果偏离了预期。有人能建议一种改进精度的方法吗?此外,如果我在整个数据上拟合模型,然后打印预测结果,它不考虑新月份已经开始,因此需要进行相应的预测。该如何在这里实现呢?任何帮助都将不胜感激。

编辑

数据集链接 - 数据集

谢谢


你能发布类的标准吗? - Swarathesh Addanki
@SwaratheshAddanki 我在问题中添加了数据集的链接... 你可以看一下。 - dper
你可以尝试使用“自制”特征来使用经典的机器学习算法。例如,您可以尝试使用过去7天的数据(使用4*7个特征创建一行)来训练感知器、支持向量机或随机森林等算法。您还可以考虑上周同一天的数据(如果您要预测星期三,则考虑上周三的数据),以及上个月每个星期三的平均值。此外,为了获得更真实的性能评估,请使用交叉验证。 - politinsa
@politinsa,你能分享一个相同的例子吗? - dper
1
我认为你没有足够的数据来拟合一个好的模型:主要特征似乎是这些月末的下跳。在数据集中,我们只能看到两个这样的跳跃点,从仅有的两个观察结果中,我们无法了解典型跳跃的外观。同样,月份间的增长看起来足够规律,以至于模型可以尝试描述这些曲线的形状,但是关于值在典型月份内会增长多少的信息很少。鉴于此,“下个月等于上个月”可能是一个足够好的模型? - jochen
显示剩余3条评论
1个回答

1

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

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

对于特定滞后期,自相关值越大,该滞后期对过程的作用就越大。
另一个好主意是查看AIC标准和BIC标准来验证您的准确性(上面的链接中有使用示例)。较小的值表明您已找到真正的估计量的概率更大。
这样,您可以改变自回归模型的顺序,并查看提供最低AIC和BIC的模型。如果AIC指示最佳模型的滞后期为3,而BIC指示最佳模型的滞后期为5,则应分析3、4和5的值以查看哪个结果最佳。
最好的情况是有更多数据(3个月并不多),但您可以尝试这些方法来看看是否有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接