Previsioni di serie temporali multivariate con set di dati di 3 mesi


12

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% inserisci qui la descrizione dell'immagine

  1. Capacity_Booked inserisci qui la descrizione dell'immagine

  2. Totale prenotazioni e ricerche inserisci qui la descrizione dell'immagine

L'output che sto ricevendo sono:

Dataframe di previsione -

inserisci qui la descrizione dell'immagine

Validation Dataframe -

inserisci qui la descrizione dell'immagine

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


puoi pubblicare lo std of class
Swarathesh Addanki il

@SwaratheshAddanki Ho aggiunto il link al set di dati nella domanda ... puoi dare un'occhiata.
Dper

Potresti provare a utilizzare un algoritmo di apprendimento automatico classico utilizzando le funzionalità "fatte in casa". Ad esempio, potresti provare ad addestrare un percettrone o un SVM o una foresta casuale per un singolo giorno usando gli ultimi 7 giorni (crea una riga con le funzionalità 4 * 7). Potresti anche prendere in considerazione lo stesso giorno dell'ultima settimana (mercoledì se vuoi prevedere per mercoledì) e una media di ogni mercoledì dello scorso mese. Usa anche la validazione incrociata per avere una misurazione delle prestazioni più realistica
politinsa

@politinsa Potresti condividere un esempio per lo stesso?
Dper

1
Credo che tu non abbia abbastanza dati per adattarsi a un buon modello: la caratteristica principale sembra essere i salti al ribasso alla fine di questo mese. Possiamo vedere solo due di questi salti nel set di dati e da sole due osservazioni non sarà possibile imparare molto su come si presenta un salto tipico. Allo stesso modo, la crescita durante i mesi sembra abbastanza regolare da consentire al modello di descrivere la forma di queste curve, ma ci sono poche informazioni su quanto cresceranno i valori nel corso di un mese tipico. Dato questo, "il prossimo mese è uguale al mese precedente" potrebbe essere un modello abbastanza buono?
jochen

Risposte:


1

Un modo per migliorare la tua accuratezza è guardare all'autocorrelazione di ciascuna variabile, come suggerito nella pagina della documentazione VAR:

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

Maggiore è il valore di autocorrelazione per un ritardo specifico, più utile sarà questo ritardo nel processo.

Un'altra buona idea è quella di guardare al criterio AIC e al criterio BIC per verificare la precisione (lo stesso link sopra ha un esempio di utilizzo). Valori più piccoli indicano che esiste una maggiore probabilità che tu abbia trovato il vero stimatore.

In questo modo, puoi variare l'ordine del tuo modello autoregressivo e vedere quello che fornisce il più basso AIC e BIC, entrambi analizzati insieme. Se AIC indica che il modello migliore ha un ritardo di 3 e il BIC indica che il modello migliore ha un ritardo di 5, è necessario analizzare i valori di 3,4 e 5 per vedere quello con i risultati migliori.

Lo scenario migliore sarebbe avere più dati (dato che 3 mesi non sono molti), ma puoi provare questi approcci per vedere se aiuta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.