Ho 3 mesi di dati (ogni riga corrispondente a ogni giorno) generati e voglio eseguire un'analisi multivariata delle serie temporali per lo stesso:
le colonne disponibili sono -
Date Capacity_booked Total_Bookings Total_Searches %Variation
Ogni data ha 1 voce nel set di dati e ha 3 mesi di dati e voglio adattare un modello multivariato di serie temporali per prevedere anche altre variabili.
Finora, questo è stato il mio tentativo e ho cercato di ottenere lo stesso leggendo articoli.
Ho fatto lo stesso -
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]
Ho un set di convalida e un set di previsioni. Tuttavia, le previsioni sono peggiori del previsto.
I grafici del set di dati sono: 1. Variazione%
L'output che sto ricevendo sono:
Dataframe di previsione -
Validation Dataframe -
Come puoi vedere, le previsioni sono lontane da ciò che ci si aspetta. Qualcuno può consigliare un modo per migliorare la precisione. Inoltre, se inserisco il modello su dati interi e quindi stampo le previsioni, non tiene conto dell'inizio del nuovo mese e quindi della previsione in quanto tale. Come può essere incorporato qui. ogni aiuto è apprezzato.
MODIFICARE
Collegamento al set di dati - Set di dati
Grazie