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
提高准确性的一种方法是查看每个变量的自相关性,如 VAR 文档页面中建议的那样:
https://www.statsmodels.org/dev/vector_ar.html
特定滞后的自相关值越大,该滞后对过程就越有用。
另一个好主意是查看 AIC 标准和 BIC 标准来验证您的准确性(上面的同一链接有一个使用示例)。值越小表明您找到真实估计量的概率越大。
通过这种方式,您可以改变自回归模型的顺序,并查看提供最低 AIC 和 BIC 的模型,两者一起进行分析。如果 AIC 指示最佳模型的滞后为 3,而 BIC 指示最佳模型的滞后为 5,则您应该分析 3,4 和 5 的值以查看具有最佳结果的模型。
最好的情况是拥有更多数据(因为 3 个月并不多),但您可以尝试这些方法看看是否有帮助。
归档时间: |
|
查看次数: |
1094 次 |
最近记录: |