Ich habe 3 Monate Daten (jede Zeile entspricht jedem Tag) generiert und möchte eine multivariate Zeitreihenanalyse für dieselbe durchführen:
Die verfügbaren Spalten sind -
Date Capacity_booked Total_Bookings Total_Searches %Variation
Jedes Datum hat 1 Eintrag im Datensatz und Daten für 3 Monate. Ich möchte ein multivariates Zeitreihenmodell anpassen, um auch andere Variablen vorherzusagen.
Bisher war dies mein Versuch und ich habe versucht, dasselbe durch das Lesen von Artikeln zu erreichen.
Ich tat das gleiche -
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]
Ich habe einen Validierungssatz und einen Vorhersagesatz. Die Vorhersagen sind jedoch viel schlechter als erwartet.
Die Diagramme des Datensatzes sind - 1.% Variation
Die Ausgabe, die ich erhalte, ist -
Vorhersage-Datenrahmen -
Validierungsdatenrahmen -
Wie Sie sehen können, sind die Vorhersagen weit von den Erwartungen entfernt. Kann mir jemand einen Weg empfehlen, um die Genauigkeit zu verbessern. Wenn ich das Modell auf ganze Daten anpasse und dann die Prognosen drucke, wird auch nicht berücksichtigt, dass der neue Monat begonnen hat, und daher als solcher vorherzusagen. Wie kann das hier aufgenommen werden? Jede Hilfe wird geschätzt.
BEARBEITEN
Link zu dem Datensatz - Datensatz
Vielen Dank
Antworten:
Eine Möglichkeit, Ihre Genauigkeit zu verbessern, besteht darin, die Autokorrelation jeder Variablen zu überprüfen, wie auf der VAR-Dokumentationsseite vorgeschlagen:
https://www.statsmodels.org/dev/vector_ar.html
Je größer der Autokorrelationswert für eine bestimmte Verzögerung ist, desto nützlicher ist diese Verzögerung für den Prozess.
Eine weitere gute Idee ist es, das AIC-Kriterium und das BIC-Kriterium zu überprüfen, um Ihre Genauigkeit zu überprüfen (der gleiche Link oben enthält ein Anwendungsbeispiel). Kleinere Werte zeigen an, dass die Wahrscheinlichkeit größer ist, dass Sie den wahren Schätzer gefunden haben.
Auf diese Weise können Sie die Reihenfolge Ihres autoregressiven Modells variieren und das Modell anzeigen, das den niedrigsten AIC und den niedrigsten BIC liefert, die beide zusammen analysiert werden. Wenn AIC angibt, dass das beste Modell eine Verzögerung von 3 aufweist und der BIC angibt, dass das beste Modell eine Verzögerung von 5 aufweist, sollten Sie die Werte 3,4 und 5 analysieren, um das Modell mit den besten Ergebnissen zu erhalten.
Das beste Szenario wäre, mehr Daten zu haben (da 3 Monate nicht viel sind), aber Sie können diese Ansätze ausprobieren, um zu sehen, ob es hilft.
quelle