我产生了3个月的数据(每一行对应于每一天),并且我想对同一数据执行多元时间序列分析:
可用的列是-
Date Capacity_booked Total_Bookings Total_Searches %Variation
每个Date在数据集中都有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]
我有一个验证集和预测集。但是,这些预测比预期的要差得多。
我收到的输出是-
预测数据框-
验证数据框-
如您所见,预测与预期的相去甚远。任何人都可以建议提高准确性的方法。另外,如果我将模型拟合到整个数据上然后打印预测,则不会考虑新月份已经开始,因此也就不会进行预测。如何将其合并到此处。任何帮助表示赞赏。
编辑
链接到数据集- 数据集
谢谢
您可以张贴类的性病
—
Swarathesh Addanki
@SwaratheshAddanki我将链接添加到问题中的数据集...您可以看一下。
—
dper
您可以尝试使用具有“自制”功能的经典机器学习算法。例如,您可以尝试在过去的7天中训练一天的感知器,SVM或随机森林(使用4 * 7功能排成一行)。您还可以考虑上周的同一天(如果要预测星期三,则为星期三)和上个月每个星期三的平均值。也可以使用交叉验证来进行更真实的性能评估
—
politinsa
@politinsa可以分享一个例子吗?
—
dper
我认为您没有足够的数据来拟合一个好的模型:主要特征似乎是本月底的向下跳跃。我们只能在数据集中看到其中两个跳跃,而仅从两个观察中就不可能了解很多典型跳跃的样子。同样,这几个月的增长看起来足够规律,以至于该模型可以尝试描述这些曲线的形状,但是很少有关于典型月份中这些值将增长多少的信息。鉴于此,“下个月等于上个月”可能是一个很好的模型吗?
—
jochen