Funzione ETS (), come evitare previsioni non in linea con i dati storici?


16

Sto lavorando ad un alogoritmo in R per automatizzare un calcolo mensile delle previsioni. Sto usando, tra gli altri, la funzione ets () dal pacchetto di previsione per calcolare la previsione. Funziona molto bene.

Sfortunatamente, per alcune serie storiche specifiche, il risultato che ottengo è strano.

Di seguito, trova il codice che sto utilizzando:

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

Di seguito, troverai il set di dati cronologici in questione:

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

Qui, sul grafico, vedrai i dati storici (nero), il valore adattato (verde) e la previsione (blu). La previsione non è assolutamente in linea con il valore adattato.

Hai idea di come "vincolare" il pronostico per essere "in linea" con le vendite storiche? inserisci qui la descrizione dell'immagine


Questa è una delle previsioni più strane che mi sono imbattuto usando ets. La media / livello dei dati storici è di circa 20 e la media / livello di previsione è di circa 50. Non sei sicuro del perché ciò accada? puoi eseguire un basic etse vedere se ottieni gli stessi risultati?
previsioni

Grazie mille per il tuo tempo e la tua risposta! Concordo con te sul fatto che l'ultimo punto può essere visto come "valori anomali" (21 vs 7 o 6 o 5 l'anno precedente). Può essere rilevato in quanto utilizza un intervallo di confidenza basato su dati passati e dovrebbe essere pulito prima di previsioni statistiche. Ma se assumiamo che si tratti di una vendita "normale", c'è un modo per evitare questo comportamento limitando la previsione, o almeno essere avvisati che la previsione è due volte più grande della storia? Limitare alfa, beta e gamma non è rilevante in quel caso. Ancora una volta, grazie mille per il tuo aiuto su questo punto!
MehdiK,

Ho votato a favore la tua risposta, ora presumo che tu possa lasciare commenti. In futuro, si prega di lasciare il commento direttamente sotto una risposta in modo che le persone che hanno risposto lo noteranno. Grazie
previsioni

ETS e tutti i modelli univariati di serie temporali presuppongono che il comportamento passato preveda il comportamento futuro. Se sono presenti punti dati anormali , è necessario informare il modello che si è verificata un'anomalia. Il modello non saprà che il valore è normale, è necessario specificare nel modello che il valore è anomalo.
previsioni

Risposte:


10

Come ha sottolineato @forecaster, ciò è causato da valori anomali alla fine della serie. Puoi vedere chiaramente il problema se traccia il componente del livello stimato sopra:

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

Si noti l'aumento del livello alla fine della serie.

Un modo per rendere il modello più robusto rispetto ai valori anomali è ridurre lo spazio dei parametri in modo che i parametri di livellamento debbano assumere valori più piccoli:

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

inserisci qui la descrizione dell'immagine


qual è l'equivalente di previsione :: auto.arima del secondo suggerimento per la gestione dei valori anomali?
Brash Equilibrium,

1
Con i modelli ARIMA, è possibile gestire valori anomali con variabili fittizie impostate su 1 nei momenti problematici. Basta usare l'argomento xreg in auto.arima o Arima.
Rob Hyndman,

6

Questo è il caso da manuale di avere degli outlier alla fine della serie e le sue conseguenze non intenzionali. Il problema con i tuoi dati è che gli ultimi due punti sono anomali , potresti voler identificare e trattare i valori anomali prima di eseguire gli algoritmi di previsione. Aggiornerò la mia risposta e analisi più avanti oggi su alcune strategie per identificare i valori anomali. Di seguito è riportato l'aggiornamento rapido.

Quando eseguo di nuovo il ripristino degli ultimi due punti dati rimossi, ottengo una previsione ragionevole. Vedi sotto:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

inserisci qui la descrizione dell'immagine


5

@meteorologohai ragione a dire che l'ultimo valore è un periodo anomalo MA il periodo 38 (il penultimo valore) non è un valore anomalo quando si tiene conto delle tendenze e dell'attività stagionale. Questo è un momento di definizione / insegnamento per testare / valutare approcci solidi alternativi. Se non si identificano e si rettificano le anomalie, la varianza viene gonfiata causando la ricerca di altri oggetti. Anche il periodo 32 è un valore anomalo. Anche i periodi 3,32 e 1 sono anomali. C'è una tendenza statisticamente significativa nella serie per i primi 17 valori, ma si abbassa successivamente a partire dal periodo 18. Quindi, ci sono davvero due tendenze nei dati. La lezione da apprendere qui è che i semplici approcci che non assumono una tendenza o una forma particolare di una tendenza e / o assumono tacitamente una forma specifica del processo auto-regressivo devono essere seriamente messi in discussione. Per il futuro, una buona previsione dovrebbe prendere in considerazione la possibile prosecuzione dell'attività eccezionale rilevata nel punto finale (periodo 39). È impossibile estrarlo dai dati.

Questo è forse un modello utile:

inserisci qui la descrizione dell'immagineLe statistiche del modello finale sono qui inserisci qui la descrizione dell'immagineIl grafico Attuale / Adatta e Previsione è interessante in quanto evidenzia l'attività eccezionale.inserisci qui la descrizione dell'immagine


+1 le tue risposte sono sempre educative e illuminanti. Capisco il polso e il tempo, gli effetti fissi sono un modello puramente deterministico?
previsioni

@forecaster Sì, gli effetti fissi / gli impulsi stagionali sono puramente dterministici ... proprio come gli impulsi / i cambiamenti di livello e le tendenze dell'ora locale. Inoltre, il mese di agosto (8) non era significativo e non era nell'elenco finale.
IrishStat,
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.