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


12

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 les mêmes:

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 entrez la description de l'image ici

  1. Capacity_Booked entrez la description de l'image ici

  2. Total réservations et recherches entrez la description de l'image ici

Les sorties que je reçois sont -

Cadre de données de prédiction -

entrez la description de l'image ici

Cadre de données de validation -

entrez la description de l'image ici

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, cela 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.

ÉDITER

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

Merci


pouvez-vous publier le std des cours
Swarathesh Addanki

@SwaratheshAddanki J'ai ajouté le lien vers le jeu de données dans la question ... vous pouvez jeter un oeil.
dper

Vous pouvez essayer d'utiliser un algorithme d'apprentissage automatique classique en utilisant des fonctionnalités «faites maison». Vous pouvez par exemple essayer de former un perceptron ou un SVM ou une forêt aléatoire pour une seule journée en utilisant les 7 derniers jours (faire une ligne avec les fonctionnalités 4 * 7). Vous pouvez également prendre en compte le même jour de la semaine dernière (mercredi si vous voulez prévoir pour mercredi) et une moyenne de chaque mercredi du mois dernier. Utilisez également la validation croisée afin d'avoir une mesure des performances plus réaliste
politinsa

@politinsa Pourriez-vous partager un exemple pour la même chose?
dper

1
Je pense que vous n'avez pas suffisamment de données pour vous adapter à un bon modèle: la principale caractéristique semble être les sauts vers le bas à la fin de ce mois. Nous ne pouvons voir que deux de ces sauts dans l'ensemble de données, et à partir de seulement deux observations, il ne sera pas possible d'en apprendre beaucoup sur ce à quoi ressemble un saut typique. De même, la croissance au cours des mois semble suffisamment régulière pour que le modèle puisse essayer de décrire la forme de ces courbes, mais il y a peu d'informations sur la croissance des valeurs au cours d'un mois typique. Compte tenu de cela, "le mois prochain est égal au mois précédent" pourrait être un assez bon modèle?
jochen

Réponses:


1

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 a 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 qui présente 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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.