[英]Multivariate time series forecasting with 3 months dataset
我生成了 3 個月的數據(每一行對應於每一天),我想對其進行多變量時間序列分析:
可用的列是 -
Date Capacity_booked Total_Bookings Total_Searches %Variation
每個日期在數據集中有 1 個條目,有 3 個月的數據,我想擬合一個多元時間序列 model 來預測其他變量。
到目前為止,這是我的嘗試,我試圖通過閱讀文章來達到同樣的目的。
我也這樣做了-
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]
我有一個驗證集和預測集。 然而,預測比預期的要糟糕得多。
我收到的 output 是 -
預測 dataframe -
驗證 Dataframe -
如您所見,預測與預期相差甚遠。 任何人都可以提出一種提高准確性的方法。 此外,如果我在整個數據上擬合 model 然后打印預測,則沒有考慮到新月份已經開始並因此進行預測。 怎么可能被納入這里。 任何幫助表示贊賞。
編輯
鏈接到數據集 - 數據集
謝謝
提高准確性的一種方法是查看每個變量的自相關性,如 VAR 文檔頁面中所建議的那樣:
https://www.statsmodels.org/dev/vector_ar.html
特定滯后的自相關值越大,該滯后對過程的用處就越大。
另一個好主意是查看 AIC 標准和 BIC 標准來驗證您的准確性(上面的相同鏈接有一個使用示例)。 較小的值表明您找到真實估計量的可能性更大。
這樣,您可以改變自回歸 model 的順序,並查看提供最低 AIC 和 BIC 的順序,兩者一起分析。 如果 AIC 指示最佳 model 的滯后為 3,而 BIC 指示最佳 model 的滯后為 5,則應分析 3,4 和 5 的值以查看具有最佳結果的值。
最好的情況是擁有更多數據(因為 3 個月並不多),但您可以嘗試這些方法,看看是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.