È possibile automatizzare la previsione delle serie storiche?


17

Vorrei costruire un algoritmo in grado di analizzare qualsiasi serie temporale e "automaticamente" scegliere il miglior metodo di previsione tradizionale / statiscale (e i suoi parametri) per i dati delle serie temporali analizzate.

Sarebbe possibile fare qualcosa del genere? Se sì, puoi darmi alcuni consigli su come affrontare questo problema?


3
No, questo non può essere ragionevolmente raggiunto. Spesso, non ci sono dati sufficienti per distinguere tra due modelli ragionevoli, non importa tutti i possibili modelli. Il raggiungimento di un modello migliore richiederebbe che la fisica sia conosciuta in termini assoluti e molto frequentemente le ipotesi di modellazione non sono nemmeno conosciute e / o non testate / non verificabili.
Carl,

3
No. Non è possibile determinare quale sia il modello migliore. Python non è rilevante in questa discussione. Tuttavia ci sono tentativi con buoni risultati. Ad esempio progetto github.com/facebook/prophet . Ha anche l'associazione Python.
Cagdas Ozgenc,

3
Sto votando a lasciare aperto perché penso che sia una domanda ragionevole, anche se la risposta è "no". Suggerirei di rimuovere Python dal titolo, perché non è rilevante o specialmente sull'argomento qui.
mkt - Ripristina Monica il

1
Ho rimosso Python dal titolo come suggerito. Grazie per le tue risposte.
StatsNewbie123,

2
Vedi il teorema "nessun pranzo libero".
AdamO,

Risposte:


19

Innanzitutto è necessario notare che l'approccio delineato da IrishStat è specifico per i modelli ARIMA, non per qualsiasi set generico di modelli.

Per rispondere alla domanda principale "È possibile automatizzare la previsione delle serie storiche?":

Sì. Nel mio campo di previsione della domanda, la maggior parte dei pacchetti di previsioni commerciali lo fanno. Lo fanno anche diversi pacchetti open source, in particolare le funzioni auto.arima () (previsione automatizzata ARIMA) e ETS () (previsione automatizzata del livellamento esponenziale automatizzato) di Rob Hyndman dal pacchetto Previsione open source in R, vedere qui per i dettagli su queste due funzioni . C'è anche un'implementazione Python di auto.arima chiamata Pyramid , anche se nella mia esperienza non è matura come i pacchetti R.

Sia i prodotti commerciali che ho citato sia i pacchetti open source che ho citato funzionano in base all'idea di utilizzare criteri di informazione per scegliere la migliore previsione: si adatta un gruppo di modelli e quindi si seleziona il modello con AIC, BIC, AICc più bassi, ecc .... (in genere questo viene fatto al posto della convalida fuori campione).

Vi è tuttavia un avvertimento importante: tutti questi metodi funzionano all'interno di un'unica famiglia di modelli. Scelgono il miglior modello possibile tra una serie di modelli ARIMA o il miglior modello possibile tra una serie di modelli di livellamento esponenziale.

È molto più difficile farlo se si desidera scegliere tra diverse famiglie di modelli, ad esempio se si desidera scegliere il modello migliore tra ARIMA, Smoothing esponenziale e metodo Theta. In teoria, è possibile farlo nello stesso modo in cui si fa all'interno di una singola famiglia di modelli, ovvero utilizzando criteri di informazione. Tuttavia, in pratica, è necessario calcolare l'AIC o BIC esattamente allo stesso modo per tutti i modelli considerati, e questa è una sfida significativa. Potrebbe essere meglio utilizzare la convalida incrociata delle serie temporali o la convalida fuori campione anziché i criteri di informazione, ma sarà molto più intensivo dal punto di vista computazionale (e noioso da codificare).

Il pacchetto Prophet di Facebook automatizza anche la generazione di previsioni sulla base di modelli di additivi generali Vedi qui per i dettagli . Tuttavia Prophet si adatta a un solo modello, anche se un modello molto flessibile con molti parametri. L'ipotesi implicita del profeta è che un GAM sia "l'unico modello per dominarli tutti", che potrebbe non essere teoricamente giustificato, ma è molto pragmatico e utile per gli scenari del mondo reale.

Un altro avvertimento che si applica a tutti i metodi sopra menzionati: presumibilmente vuoi fare previsioni automatiche sulle serie temporali perché vuoi prevedere più serie temporali, troppe per analizzarle manualmente. Altrimenti potresti semplicemente fare i tuoi esperimenti e trovare il modello migliore da solo. È necessario tenere presente che un approccio di previsione automatizzato non troverà mai il modello migliore per ogni serie temporale - fornirà un modello ragionevolmente buono in media in tutte le serie temporali, ma è ancora possibile che alcuni di quelle serie storiche avranno modelli migliori di quelli selezionati dal metodo automatizzato. Vedi questo postper un esempio di questo. Per dirla semplicemente, se hai intenzione di seguire le previsioni automatizzate, dovrai tollerare le previsioni "abbastanza buone" invece delle migliori previsioni possibili per ogni serie temporale.


Grazie per una risposta così perspicace. Onestamente la mia idea iniziale quando ho posto questa domanda era quella di poter scegliere tra diverse famiglie di modelli.
StatsNewbie123,

Cosa accadrebbe se l'algoritmo dovesse essere applicato a un dominio più specifico, come la previsione aziendale (ad esempio per la pianificazione della produzione e la gestione dell'inventario)? Pensi che potrebbe ottenere risultati migliori?
StatsNewbie123,

2
@JoanaClaudino, sì, sarebbe più semplice - questo è l'essenza di ciò che fanno i pacchetti di previsione della domanda commerciale. Ma è più facile perché in genere quando ti limiti a uno specifico dominio aziendale puoi limitarti a una specifica famiglia di modelli (le serie temporali provenienti dallo stesso dominio aziendale avranno caratteristiche simili in termini di stagionalità, densità dei dati, ecc ... . quindi è lecito ritenere che una famiglia sarà adatta a tutti loro)
Skander H. - Ripristina Monica il

Ok, ho capito adesso. Grazie ancora per un così grande aiuto.
StatsNewbie123,

10

Il mio approccio suggerito comprende modelli molto più generali di ARIMA in quanto includono il potenziale per i manichini stagionali che possono cambiare nel tempo, livelli multipli, tendenze multiple, parametri che possono cambiare nel tempo e persino varianze di errore che possono cambiare nel tempo. Questa famiglia è più precisamente chiamata modelli ARMAX ma per la completa trasparenza esclude una (rara) variante con struttura moltiplicativa.

Hai chiesto consigli e credo che questo potrebbe essere un buon punto di partenza.

Suggerirei di scrivere il codice per seguire / emulare questo diagramma di flusso / flusso di lavoro. Il "miglior modello" può essere trovato valutando il criterio che specifichi ... potrebbe essere il MSE / AIC dei dati adattati o potrebbe essere il MAPE / SMAPE dei dati trattenuti o qualsiasi criterio di tua scelta.

Tieni presente che i dettagli di ciascuno di questi passaggi possono essere abbastanza semplici se non sei a conoscenza di alcuni requisiti / obiettivi / vincoli specifici dell'analisi delle serie temporali MA può essere (dovrebbe essere!) Più complesso se hai una comprensione più profonda / apprendimento / apprezzamento delle complessità / opportunità presenti nell'analisi approfondita delle serie storiche.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Mi è stato chiesto di fornire ulteriori indicazioni su come si dovrebbe procedere per automatizzare la modellazione di serie storiche (o la modellazione in generale) /stats//search?q=peeling+an+onion contiene alcune delle mie indicazioni su "peeling onions" e attività correlate.

AUTOBOX in realtà dettaglia e mostra i passaggi intermedi in quanto costituisce un modello utile e potrebbe essere un insegnante utile in questo senso. L'intera idea scientifica è quella di "aggiungere ciò che sembra essere necessario" ed "eliminare ciò che sembra essere meno utile". Questo è il processo iterativo suggerito da Box e Bacon in epoche precedenti.

I modelli devono essere abbastanza complessi (abbastanza elaborati) ma non troppo complessi (elaborati). Supponendo che metodi semplici funzionino con problemi complessi non è coerente con il metodo scientifico che segue Roger Bacon e tonnellate di seguaci di Bacon. Come ha detto una volta Roger Bacon e ho spesso parafrasato: fare scienza è cercare schemi ripetuti. Rilevare anomalie significa identificare valori che non seguono schemi ripetuti. Perché chi conosce le vie della natura noterà più facilmente le sue deviazioni e, d'altra parte, chiunque conoscerà le sue deviazioni descriverà più accuratamente le sue vie. Si imparano le regole osservando quando le regole attuali falliscono. Nello spirt di Bacon identificando quando il "miglior modello / teoria" attualmente identificato è inadeguato, si può quindi passare a "una rappresentazione migliore"

Nelle mie parole "Tukey ha proposto l'analisi esplorativa dei dati (EDA) che ha suggerito schemi di perfezionamento del modello basati sull'evidente carenza del modello suggerita dai dati". Questo è il cuore di AUTOBOX e della scienza. L'EDA serve a vedere ciò che i dati possono dirci oltre l'attività di modellazione formale o verifica delle ipotesi.

La cartina di tornasole di un programma di modellazione automatica è abbastanza semplice. Separa il segnale e il rumore senza un adattamento eccessivo? L'evidenza empirica suggerisce che questo può ed è stato fatto. Le accuratezze delle previsioni sono spesso fuorvianti perché il futuro non è responsabile per il passato e, a seconda dell'origine scelta, i risultati possono variare.


Grazie mille. La tua risposta è estremamente utile!
StatsNewbie123,

Grazie, IrishStat. Questo è perspicace. Siamo mai giustificati a mantenere un parametro invece di "elimina parametro", nonostante il parametro non sia statisticamente significativo?
ColorStatistics

1
Sì. se ti dà una "risposta più piacevole". Un coefficiente di pendenza che non è diverso da 0,0 può fornire una previsione più realistica (se non statisticamente significativa). Altrimenti il ​​trasporto di coefficienti in eccesso è illogico e causa una maggiore incertezza nella previsione della varianza. Alcuni autori che non sono in grado di affrontare i test di necessità e sufficienza suppongono ciecamente / ingenuamente che l'identificazione del modello sia un processo in una fase mentre Box e Jenkins (e tutti gli altri!) Si preoccupano di rendere il modello complesso quanto necessario ma non eccessivamente complesso. Albert E., JW Tukey e altri per ulteriori informazioni al riguardo.
IrishStat

3
"Questo approccio di previsione automatizzata suggerito troverà il modello migliore per ogni serie storica adattando la forma del modello, ovvero personalizzandolo in modo molto simile a un abito personalizzato." È un'affermazione abbastanza forte: se accurata, significa che questo approccio vincerebbe le competizioni M3, M4 a mani basse. Vero?
Skander H. - Reinstalla Monica il

1
@ joana-claudino Sono particolarmente interessato al tuo progetto ISEG in quanto sono anche interessato a sviluppare una versione Python delle mie procedure suggerite. Questo ovviamente sarebbe fuori sede da SE.
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.