| Oratore |
Trascrizione |
| |
Ciao, grazie per aver dedicato del tempo a leggere questo articolo. Mi chiamo Jacob Rhyne e sono un tester software per JMP. Oggi condividerò con voi un componente aggiuntivo che ho scritto per aiutarvi a scegliere tra un modello ARIMA o un modello State Space Smoothing nella piattaforma Time Series di JMP. |
| |
Quindi inizio con una breve panoramica sull'adattamento dei modelli ARIMA e State Space Smoothing nella piattaforma Time Series. |
| |
Introdurrò la necessità di un componente aggiuntivo per facilitare la scelta tra queste due classi di modelli. Fornirò anche una panoramica della convalida incrociata delle serie temporali, che è lo strumento principale del componente aggiuntivo. Infine, concluderò con una demo del componente aggiuntivo utilizzando JMP 16.1. |
| |
La piattaforma Time Series di JMP consente agli utenti di adattare diversi modelli di serie temporali. Questa presentazione si concentrerà sui modelli ARIMA e State Space Smoothing e mostrerò come adattarli entrambi utilizzando i dati di esempio di Steel Shipments. |
| |
I dati campione delle spedizioni di acciaio contengono i totali mensili delle spedizioni di acciaio negli Stati Uniti dal 1984 al 1991. E li analizzerò con la piattaforma Time Series nel menu Specialized Modeling. |
| |
La colonna "Spedizioni di acciaio" è la mia serie temporale. La colonna "Data" è il mio ID temporale. Supponiamo che io voglia prevedere le spedizioni di acciaio per i prossimi due anni. Quindi, poiché si tratta di dati mensili, ho bisogno di 24 periodi di previsione. Farò clic su "OK" per avviare il mio report sulle serie temporali. |
| |
Come puoi vedere, ho un grafico delle serie temporali con alcune statistiche di base della serie, nonché alcune diagnosi di base delle serie temporali. |
| |
Vorrei adattare un modello ARIMA a questa serie e, quando lo faccio, devo decidere se devo applicare trasformazioni o differenziazioni. Quindi userò l'opzione Differenza nel menu Serie Temporali per esplorare questa possibilità. |
| |
Inizierò con una differenziazione non stagionale dell'ordine uno e cliccherò su stima. |
| |
Ora ho un grafico della serie differenziale. Sembra migliore in termini di maggiore stazionarietà, ma ho ancora una certa stagionalità. E posso capirlo osservando la diagnostica. Scendo al ritardo numero 12. |
| |
Vedo che il valore di autocorrelazione è alto e anche l'autocorrelazione parziale è un po' alta per il ritardo 12. Quindi, questo suggerisce che dovrei adattare un modello ARIMA stagionale con differenziazione stagionale e non stagionale. |
| |
Chiuderò questo report sulle differenze solo per mantenerlo pulito. E proverò a provare ad adattare diversi modelli ARIMA, con l'opzione "gruppo di modelli ARIMA". |
| |
Quindi ho deciso di adattare un modello ARIMA stagionale con ordine di differenziazione non stagionale pari a uno e ordine di differenziazione stagionale pari a uno. Tuttavia, per gli ordini autoregressivi e di media mobile, li lascerò pari a zero o a uno. |
| |
Quindi, quando clicco su "Stima", JMP adatterà questi 16 diversi modelli ARIMA stagionali. Posso scorrere verso il basso fino alla finestra di confronto dei modelli e visualizzarli. I modelli sono ordinati in ordine decrescente per AIC, quindi selezionerò il modello che minimizza l'AIC. |
| |
Posso scorrere verso il basso e dare un'occhiata al modello e al report. Vedo che è stabile e invertibile. Potrei dare un'occhiata alla tabella delle stime dei parametri. Dare un'occhiata alla previsione e agli intervalli di previsione. |
| |
Supponiamo che io abbia esaminato tutte queste diagnosi e che sia soddisfatto di questo modello ARIMA stagionale come candidato da prendere in considerazione per le previsioni. |
| |
Quindi rimuoverò questi altri modelli ARIMA stagionali dal rapporto. |
| |
E diciamo che voglio anche prendere in considerazione l'utilizzo di un modello di smoothing dello spazio di stato per creare una previsione. Posso farlo utilizzando l'opzione di smoothing dello spazio di stato dal menu delle serie temporali. |
| |
Devo dire che il periodo è 12 perché si tratta di dati mensili e adatterò tutti i modelli di smoothing dello spazio di stato consigliati per questa serie temporale. |
| |
Quindi clicco su OK per eseguirlo. Scorrendo verso il basso fino al report di confronto dei modelli, vedo che JMP ha adattato tutti i modelli di smoothing dello spazio di stato consigliati. Sono ancora una volta ordinati in ordine decrescente per AIC. |
| |
Quindi il modello che ha minimizzato l'AIC era un modello di errore moltiplicativo senza trend e stagionalità moltiplicativa. Quindi, selezionerò questo modello. |
| |
nella panoramica del confronto dei modelli e scorri verso il basso per dare un'occhiata all'adattamento del modello. |
| |
Quindi posso esaminare il riepilogo del modello e la tabella delle stime dei parametri. |
| |
È possibile visualizzare la previsione e gli intervalli di previsione. Supponiamo di aver esaminato tutte queste diagnosi e di essere soddisfatto di questo modello di smoothing dello spazio di stato come candidato da considerare per le previsioni. |
| |
Quindi rimuoverò l'altro modello State Space Smothing dai miei modelli e dalla finestra di confronto dei modelli. |
| |
Quindi ora la domanda è: come faccio a scegliere tra questo modello ARIMA che sto prendendo in considerazione e il modello State Space Smoothing che sto prendendo in considerazione per le previsioni? |
| |
Come puoi vedere, ho questo avviso di testo letto che mi informa che i criteri basati sulla verosimiglianza non sono confrontabili tra le diverse classi di modelli. |
| |
Ciò significa che non posso semplicemente scorrere e visualizzare l'AIC e dire che, poiché l'AIC è inferiore, per il modello ARIMA lo utilizzerò per le previsioni. |
| |
Questa non è una decisione valida. Quindi, cosa faccio? Beh, JMP offre già un'opzione, se i dati sono sufficientemente lunghi. |
| |
per impostare un holdback, è possibile utilizzare l'opzione di previsione su holdback quando si avvia la piattaforma Time Series. |
| |
Ciò consentirebbe di adattare tutti i modelli di serie temporali utilizzati al set di addestramento. E, nella finestra di confronto dei modelli, invece di ordinare i modelli in base all'AIC, |
| |
elaborerà modelli in base all'errore quadratico medio o RMSE del set di holdback e potrai scegliere il modello che minimizza l'RMSE del set di holdback. |
| |
Tuttavia, se i dati non sono sufficientemente lunghi per utilizzare un set di holdback, non possiamo utilizzare l'opzione di previsione su holdback e abbiamo bisogno di un altro metodo che ci aiuti a scegliere tra un modello ARIMA o un modello State Space Smoothing. |
| |
E per fare questo. |
| |
Ecco perché ho creato il componente aggiuntivo. Il componente aggiuntivo ti aiuta a scegliere utilizzando una funzione chiamata convalida incrociata delle serie temporali. |
| |
La convalida incrociata delle serie temporali sostanzialmente suddivide le serie temporali in più set di addestramento e test, dove per ogni gruppo successivo si espande il set di addestramento di una riga. |
| |
Tra poco fornirò un esempio dettagliato di convalida incrociata di serie temporali, ma vorrei sottolineare che non ho inventato questo metodo. Se desiderate saperne di più, |
| |
Dopo aver visto questo intervento, mi sento di consigliare questa risorsa: principi e pratiche di previsione del dott. Rob Hyndman. |
| |
Ma diamo un'occhiata a un esempio di convalida incrociata di serie temporali. |
| |
Supponiamo di avere i dati sugli incassi del botteghino nordamericano da gennaio a luglio 2021 perché sono un appassionato di cinema. |
| |
Vorrei prevedere le prossime sei settimane di incassi al botteghino utilizzando un modello ARIMA o un modello State Space Smoothing. E per decidere quale previsione utilizzare, vorrei usare la convalida incrociata delle serie temporali. |
| |
Come ho già detto, la convalida incrociata delle serie temporali suddividerà i dati in gruppi di set di addestramento e di test, espandendo il set di addestramento di una riga e di ogni gruppo successivo. |
| |
Quindi devo decidere quante righe voglio nel mio set di addestramento iniziale. |
| |
Per impostazione predefinita, il mio componente aggiuntivo ti fornirà sei gruppi di convalida incrociata per serie temporali. Questo ti fornirà un numero suggerito di righe predefinite da utilizzare nel tuo set di training iniziale, ma puoi modificarlo se lo desideri. |
| |
Per questo esempio manterrò il valore predefinito di 17 righe iniziali nel set di addestramento. |
| |
Quando avvii il componente aggiuntivo per la convalida incrociata delle serie temporali, otterrai un report standard sulle serie temporali. Tuttavia, aggiungerà anche un riquadro per i controlli di convalida incrociata delle serie temporali in fondo al report. |
| |
Quindi qui devi specificare il numero di righe iniziali, che è il numero di righe nel tuo primo set di addestramento, la lunghezza della previsione a cui sei interessato e il periodo se intendi adattare i modelli stagionali. |
| |
Quindi manterrò il valore predefinito di 17 righe nel set di addestramento, il che mi consentirà di avere sei diversi gruppi di convalida incrociata delle serie temporali. |
| |
Imposterò una lunghezza di previsione di sei perché voglio prevedere le prossime sei settimane di incassi al botteghino. E qui manterrò il periodo pari a quello mancante perché non ho intenzione di adattare i modelli stagionali a questi dati specifici. |
| |
Esploriamo quindi il primo gruppo di convalida incrociata delle serie temporali. |
| |
Come puoi vedere, ho 17 righe nel mio primo set di addestramento e le sei righe successive sono il mio set di test. |
| |
Il mio componente aggiuntivo adatterà al training set tutti i modelli ARIMA che gli ho chiesto, e adatterà al training set anche i modelli di smoothing dello spazio di stato consigliati. |
| |
Selezionerà il miglior modello di ogni classe tramite AIC e inserirà le previsioni dei modelli selezionati nel set di test, valutando l'errore di previsione. |
| |
Il secondo gruppo di convalida incrociata delle serie temporali espanderà il set di addestramento di una riga, quindi ora il mio set di addestramento è |
| |
composto dalle righe da uno a 18, mentre le sei righe successive costituiscono il mio set di test. Quindi ripeto il processo che ho eseguito nel primo gruppo di convalida incrociata delle serie temporali. |
| |
Applica tutti i modelli ARIMA richiesti dall'utente e adatta i modelli di State Space Smoothing consigliati. Seleziono il modello migliore in base alla previsione AIC nel set di test e memorizzo l'errore di previsione. |
| |
E continuo così finché non ho utilizzato tutti i miei dati. Quindi, il gruppo di convalida incrociata finale delle serie temporali per questo esempio utilizzerebbe le righe da uno a 22 per il set di addestramento, e poi userebbe il resto dei dati, le ultime sei righe, come set di test. |
| |
Quindi ho detto che sto memorizzando l'errore di previsione per ogni gruppo di convalida incrociata delle serie temporali. |
| |
Ciò che fa il componente aggiuntivo è segnalare RMSE, MAE e MAPE complessivi per le due classi di modelli e fornire un grafico dell'RMSE per ogni gruppo di convalida incrociata delle serie temporali. |
| |
Puoi usare questa tabella e questo grafico per decidere se adattare ogni modello per la previsione o per la previsione del modello di smoothing dello spazio di stato. |
| |
Diamo un'occhiata al componente aggiuntivo in azione con questi dati. |
| |
Quindi aprirò i dati del botteghino che ho ottenuto da box office mojo ed eseguirò questo script che avvia la piattaforma Time Series per questi dati, perché voglio solo dare un'occhiata alle serie temporali. |
| |
Sto prevedendo l'incasso medio al botteghino per settimana e posso vedere che con il passare delle settimane la varianza e l'incasso medio aumentano, quindi vorrei fare una trasformazione logaritmica |
| |
al lordo medio. Posso farlo creando una colonna con formula logaritmica per il lordo medio, ma |
| |
Non è necessario, il componente aggiuntivo offre la possibilità di effettuare una trasformazione Box Cox, proprio come la piattaforma Time Series standard. Quindi, avvio il mio componente aggiuntivo, clicco oltre il disclaimer. Voglio prevedere la chiusura media al botteghino per settimana per le prossime sei settimane. |
| |
e voglio effettuare una trasformazione logaritmica nel lordo medio, quindi userò una trasformazione Box Cox con Lambda uguale a zero. |
| |
E cliccherò su OK. |
| |
Questo avvia il report standard delle serie temporali per la risposta trasformata di Box Cox. Potevo adattare qualsiasi tipo di modello di serie temporali, che volevo fosse disponibile in JMP tramite questo menu a forma di triangolo rosso. |
| |
Ma invece andrò in fondo al report e utilizzerò la convalida incrociata delle serie temporali per ottenere un consiglio su come adattare un modello ARIMA o un modello di smoothing dello spazio di stato. |
| |
Manterrò le righe iniziali a 17, perché così otterrò i sei gruppi di convalida incrociata delle serie temporali che ho appena mostrato nell'esempio precedente. |
| |
Manterrò una durata prevista di sei perché voglio prevedere le prossime sei settimane al botteghino e manterrò il periodo pari a quello mancante per questo esempio. |
| |
Quindi clicco su "Esegui" e ora devo indicare quali modelli ARIMA vorrei inserire in ogni gruppo di convalida incrociata delle serie temporali. Decido quindi di utilizzare una differenziazione non stagionale pari a uno, ma lascerò che gli ordini autoregressivi e di media mobile siano pari a zero o uno. |
| |
Quindi quando clicco su "Stima", ciò che accadrà è che ogni gruppo di convalida incrociata delle serie temporali si adatterà a questi quattro modelli ARIMA e ai modelli di smoothing dello spazio di stato consigliati. |
| |
Quindi clicco su stima, ciò che fa il componente aggiuntivo è espandere questo set di dati nei miei sei gruppi di convalida incrociata delle serie temporali, adattando i modelli richiesti al set di addestramento, prevedendo nel set di test e memorizzando l'errore di previsione. |
| |
Scorro verso il basso e vedo i risultati. Dalla tabella si può vedere che, nel complesso, i modelli ARIMA hanno prodotto valori RMSE, MAE e MAPE inferiori rispetto ai modelli State Space Smoothing. E, se guardo il grafico, |
| |
Posso vedere che i modelli ARIMA hanno prodotto un RMSE inferiore per ogni gruppo di convalida incrociata delle serie temporali. |
| |
Quindi questo componente aggiuntivo consiglierebbe di utilizzare un modello ARIMA per creare previsioni per questi dati, invece di un modello di smothing dello spazio di stato. Quindi posso andare al menu del triangolo rosso e procedere con l'adattamento di un modello ARIMA con l'opzione "gruppo di modelli ARIMA". |
| |
Vediamo un altro esempio del componente aggiuntivo. Per farlo, utilizzerò un sottoinsieme dei dati campione di MC3 Quarterly. |
| |
I dati campione trimestrali di MC3 contengono dati per poco più di 100 diverse serie temporali provenienti dal concorso di modellazione MC3. Le serie sono tutte trimestrali. |
| |
Penso che questo sia un set di dati interessante semplicemente perché contiene così tante serie temporali diverse. Tuttavia, per motivi di tempo, in questa presentazione ho preso un sottoinsieme casuale di tre serie dalla tabella. |
| |
Quindi lancerò il mio componente aggiuntivo. |
| |
E configuro il launcher: la mia colonna Y è la mia serie temporale, time è l'ID temporale. E, poiché ho dati per più serie, devo usare l'opzione per per la colonna della serie. Supponiamo di nuovo di voler fare una previsione per i prossimi due anni, quindi inserisco otto periodi di previsione e clicco su OK. |
| |
Come ci si aspetterebbe, questo ha portato alla visualizzazione del report delle serie temporali per ogni serie nella mia tabella. Ho anche dei controlli di convalida incrociata delle serie temporali per ogni serie nella tabella. |
| |
Potrei quindi utilizzare la convalida incrociata delle serie temporali per ciascuna di queste serie per ottenere una raccomandazione sull'utilizzo di un modello ARIMA o di un modello di smoothing dello spazio di stato per le previsioni. |
| |
Per questioni di tempo, lo farò solo per la prima serie. Userò un periodo di quattro perché vorrei adattare i modelli stagionali a questa serie. Cliccherò su "Esegui". |
| |
Quindi userò un ordine di differenziazione non stagionale pari a uno, ma lascerò che tutti gli altri ordini di media mobile autoregressiva e l'ordine di differenziazione stagionale siano compresi tra zero e uno. |
| |
Imposto il periodo di osservazione a quattro perché, ripeto, si tratta di dati trimestrali. Quindi, quando clicco su "Stima", i dati si adatteranno a questi 32 modelli ARIMA. |
| |
in ciascuno dei gruppi di convalida incrociata delle serie temporali. Quindi il componente aggiuntivo andrà dove la serie è N 691. |
| |
Lo sta espandendo in sei diversi gruppi di convalida incrociata di serie temporali. Sta adattando i modelli ARIMA richiesti al training set. I modelli di smoothing dello spazio di stato consigliati al training set. |
| |
Selezione del modello migliore tramite AIC. Previsione nel set di test e memorizzazione dell'errore di previsione. |
| |
Gli darò un secondo per finire. |
| |
Eccoci qui. |
| |
E posso scorrere e visualizzare i risultati. Quindi, come potete vedere dalla tabella, i modelli ARIMA hanno prodotto RMSE, MAE e MAPE inferiori rispetto ai modelli di smoothing dello spazio di stato. |
| |
E dal grafico, posso vedere che in tutti i gruppi di convalida incrociata delle serie temporali, tranne l'ultimo, i modelli ARIMA avevano un RMSE inferiore |
| |
rispetto a un modello di smoothing dello spazio di stato, ed era più o meno lo stesso nell'ultimo gruppo. |
| |
Quindi, ancora una volta, si tratta di convalida incrociata di serie temporali e consiglierei di utilizzare un modello ARIMA per creare previsioni per la serie N 691. Inoltre, è possibile passare ad altre serie diverse e ripetere il processo; per queste potrebbe essere consigliabile un modello di smoothing dello spazio di stato. |
| |
Quindi concluderò la demo mostrando un'altra funzionalità del componente aggiuntivo che in realtà non è correlata alla convalida incrociata delle serie temporali. |
| |
Vi ho anche dato la possibilità di utilizzare un set di test per valutare le previsioni con il componente aggiuntivo, e lo mostrerò utilizzando nuovamente i dati di esempio delle spedizioni di acciaio. Quindi, avvierò il mio componente aggiuntivo. Bene, voglio prevedere le spedizioni di acciaio per data. |
| |
Supponiamo che io voglia prevedere i prossimi due anni, quindi prendi 24 periodi di previsione e, come ho detto prima, se la tua serie è abbastanza lunga, per un set di holdback puoi usare l'opzione di previsione su holdback |
| |
per selezionare i modelli. Quindi, dato che lo faccio, non ho realmente bisogno di usare la convalida incrociata delle serie temporali. Quindi, posso usare l'opzione del set di test di addestramento. |
| |
per avere un set di test indipendente per valutare il modello che scelgo. Deciderò che la lunghezza del mio set di test sarà 12. |
| |
Ciò significa che prenderà le ultime 12 righe dei miei dati e le escluderà completamente dalla mia analisi, in modo che io possa usarle per valutare l'efficacia delle mie previsioni. Quindi cliccherò su OK. |
| |
Come potete vedere, ho aggiunto un'altra colonna alla tabella. È solo una colonna indicatrice per il set di test, dove il suo valore è uguale a uno se la riga è inclusa nel set di test e zero in caso contrario. |
| |
E adatterà questi modelli di serie temporali solo alle righe in cui il set di test è uguale a zero. Questo mi consente di preservare l'indipendenza del set di test. |
| |
Quindi, adattiamo alcuni modelli ARIMA a questi dati. Utilizzo gli stessi controlli che ho usato all'inizio di questo intervento, con un ordine di differenziazione stagionale e non stagionale pari a uno, ma lascio che ogni altro ordine vari da zero a uno. |
| |
Quindi, clicco su "Stima" per eseguire questi 16 diversi modelli ARIMA stagionali e adatterò anche i modelli di smoothing spaziale degli stati consigliati. |
| |
Quindi, scorro verso il basso fino alla finestra di confronto dei modelli e vedo che il modello che riduce al minimo l'errore quadratico medio nel set di holdback è il modello State Space Smoothing con errore additivo, nessuna tendenza e stagionalità additiva. |
| |
Supponiamo che mi interessi anche solo sapere come si comporterebbe il modello ARIMA più performante nel set di test. Posso selezionarlo anch'io. |
| |
E rimuoverò gli altri modelli che non prendo più in considerazione per le previsioni. |
| |
Quindi, ho utilizzato nuovamente l'opzione di previsione in holdback, quindi sceglierei questo modello di smoothing dello spazio di stato da utilizzare per la previsione, ma sono semplicemente curioso di sapere come si comporterebbe il modello ARIMA nel set di test. |
| |
Posso quindi scorrere verso il basso fino alla casella di analisi del mio set di test. E, poiché ho utilizzato l'opzione di previsione con holdback, questo riadatterà entrambi i modelli selezionati ai dati combinati di training e holdback per ottenere i parametri aggiornati. |
| |
Quindi effettuerà una previsione nel set di test e valuterà il rendimento della previsione rispetto ai dati effettivi del set di test. |
| |
Quindi clicco su "Esegui" per eseguire l'analisi. Vedo che ho una tabella con i valori RMSE, MAE e MAPE del set di test e un grafico del set di test rispetto alla previsione. |
| |
Posso notare che il modello di smoothing dello spazio di stato non solo ha funzionato meglio nel set di holdback, ma anche nel set di test. Quindi, questa opzione di analisi del set di test fornisce semplicemente uno strumento per valutare l'adattamento del modello. |
| |
Quindi, per riassumere: il componente aggiuntivo consente di eseguire la convalida incrociata delle serie temporali. |
| |
Penso che questo componente aggiuntivo potrebbe esserti utile se hai dati di serie temporali non abbastanza lunghi da utilizzare l'opzione di previsione in attesa presente in JMP, ma vuoi comunque prendere in considerazione l'utilizzo di classi di modelli diverse. |
| |
Il componente aggiuntivo offre anche la possibilità di utilizzare un set di test per valutare le previsioni. A titolo di premessa, come per tutte le misure di selezione dei modelli per i dati di serie temporali, il componente aggiuntivo non garantisce previsioni più accurate. |
| |
Grazie mille per il tuo tempo. Spero che tu provi il componente aggiuntivo e che ti piaccia il resto di Discovery. Grazie mille. |