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
Les sorties que je reçois sont -
Cadre de données de prédiction -
Cadre de données de validation -
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
Réponses:
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.
la source