web-dev-qa-db-fra.com

Prévision de séries chronologiques multivariées avec un ensemble de données de 3 mois

J'ai généré 3 mois de données (chaque ligne correspondant à chaque jour) et je souhaite effectuer une analyse de séries chronologiques multivariées pour le même:

les colonnes disponibles sont -

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

Chaque date a 1 entrée dans l'ensemble de données et a 3 mois de données et je souhaite adapter un modèle de série temporelle multivariée pour prévoir également d'autres variables.

Jusqu'à présent, c'était ma tentative et j'ai essayé d'y parvenir en lisant des articles.

J'ai fait la même chose -

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]

J'ai un ensemble de validation et un ensemble de prédiction. Cependant, les prévisions sont bien pires que prévu.

Les tracés de l'ensemble de données sont de - 1.% de variation enter image description here

  1. Capacity_Booked enter image description here

  2. Total réservations et recherches enter image description here

Les sorties que je reçois sont -

Cadre de données de prédiction -

enter image description here

Cadre de données de validation -

enter image description here

Comme vous pouvez le voir, les prévisions sont loin de ce qui est attendu. Quelqu'un peut-il conseiller un moyen d'améliorer la précision. De plus, si j'adapte le modèle sur des données entières et que j'imprime ensuite les prévisions, il ne tient pas compte du fait que le nouveau mois a commencé et donc de prédire en tant que tel. Comment cela peut-il être intégré ici. toute aide est appréciée.

[~ # ~] modifier [~ # ~]

Lien vers l'ensemble de données - ensemble de données

Merci

12
dper

Une façon d'améliorer votre précision consiste à rechercher l'autocorrélation de chaque variable, comme suggéré dans la page de documentation VAR:

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

Plus la valeur d'autocorrélation est élevée pour un décalage spécifique, plus ce décalage sera utile au processus.

Une autre bonne idée est de regarder le critère AIC et le critère BIC pour vérifier votre précision (le même lien ci-dessus a un exemple d'utilisation). Des valeurs plus petites indiquent qu'il y a une plus grande probabilité que vous ayez trouvé le véritable estimateur.

De cette façon, vous pouvez faire varier l'ordre de votre modèle autorégressif et voir celui qui fournit les AIC et BIC les plus bas, tous deux analysés ensemble. Si AIC indique que le meilleur modèle est avec un décalage de 3 et que le BIC indique que le meilleur modèle a un décalage de 5, vous devez analyser les valeurs de 3,4 et 5 pour voir celui avec les meilleurs résultats.

Le meilleur scénario serait d'avoir plus de données (car 3 mois ce n'est pas beaucoup), mais vous pouvez essayer ces approches pour voir si cela aide.

1
Danilo Nunes