Corso
Diamo un'occhiata ad ARIMA, una delle tecniche di previsione per serie temporali più diffuse (se non la più diffusa). ARIMA è popolare perché modella in modo efficace i dati di serie temporali catturando sia le componenti autoregressiva (AR) sia di media mobile (MA), affrontando al contempo la non stazionarietà tramite la differenziazione (I). Questa combinazione rende i modelli ARIMA particolarmente flessibili, motivo per cui sono usati in settori molto diversi, come la finanza e le previsioni meteo.
I modelli ARIMA sono piuttosto tecnici, ma ne scomporrò le parti per aiutarti a sviluppare una solida comprensione. Prima di iniziare, è una buona idea familiarizzare con alcuni strumenti di base. DataCamp offre molte risorse valide, come i corsi ARIMA Models in Python o ARIMA Models in R. Puoi scegliere in base al linguaggio che preferisci.
Perché usare ARIMA per le previsioni?
In finanza, economia, scienze ambientali, ecc., ARIMA suscita grande interesse perché riesce a identificare molti pattern complessi dalle osservazioni passate per soddisfare esigenze future, il che lo rende una tecnica all'avanguardia. Dalla previsione del prezzo delle azioni al nowcasting dei modelli meteorologici fino a farsi un'idea della domanda dei consumatori, ARIMA è un ottimo modo per realizzare analisi predittive accurate e azionabili.
Con ARIMA possiamo analizzare e prevedere le serie temporali in modo sofisticato, tenendo conto di pattern, trend e stagionalità. Questo facilita una visione a 360 gradi delle dinamiche sottostanti per prendere decisioni informate.
Componenti chiave dei modelli ARIMA
Per capire davvero ARIMA, dobbiamo scomporne i mattoni. Una volta chiarite le componenti, sarà più semplice comprendere come funziona nel suo complesso questo metodo di previsione per serie temporali. Qui darò una spiegazione dettagliata di ogni componente.
Parte autoregressiva (AR)
La componente autoregressiva (AR) costruisce un trend a partire dai valori passati nel framework AR per i modelli predittivi. Per chiarire, il "framework autoregressivo" funziona come un modello di regressione in cui usi i ritardi (lag) dei valori passati della serie stessa come regressori.
Parte integrata (I)
La parte integrata (I) riguarda la differenziazione della serie tenendo presente che la nostra serie temporale dovrebbe essere stazionaria, il che significa che media e varianza dovrebbero rimanere costanti nel tempo. In pratica, sottraiamo un'osservazione dall'altra per eliminare trend e stagionalità. Con la differenziazione otteniamo la stazionarietà. Questo passaggio è necessario perché aiuta il modello a adattarsi ai dati e non al rumore.
Parte di media mobile (MA)
La componente di media mobile (MA) si concentra sulla relazione tra un'osservazione e un errore residuo. Osservando come l'osservazione attuale è legata agli errori passati, possiamo ricavare informazioni utili su eventuali trend nei nostri dati.
Possiamo considerare i residui tra questi errori e il concetto di modello di media mobile stima o tiene conto del loro impatto sulla nostra osservazione più recente. Questo è particolarmente utile per intercettare variazioni di breve periodo o shock casuali nei dati. Nella parte (MA) di una serie temporale, possiamo ottenere informazioni preziose sul suo comportamento che a loro volta consentono previsioni più accurate.
Come costruire un modello ARIMA in Python
Per costruire un modello ARIMA per la previsione, ad esempio dei prezzi dell'oro, puoi seguire questi passaggi. Vediamoli insieme.
Raccolta dei dati
Il primo passo è predisporre un dataset appropriato e preparare l'ambiente.
Trova un dataset
Raccogli o cerca un dataset su piattaforme di dati. Te ne serve uno che contenga dati storici nel tempo. Ecco un link al dataset Kaggle relativo ai prezzi dei future sull'oro.
Installa i pacchetti
Installiamo i pacchetti necessari, tra cui statsmodels e sklearn.
import pandas as pdimport matplotlib.pyplot as pltfrom statsmodels.tsa.stattools import adfullerfrom statsmodels.graphics.tsaplots import plot_acf, plot_pacffrom statsmodels.tsa.arima.model import ARIMAfrom sklearn.metrics import mean_squared_errorCarica i dati
Quindi leggiamo i dati nel nostro ambiente locale. Faccio un passaggio in più per assicurarci che le date siano riconosciute nell'ordine corretto.
# Define the path to your CSV file# You may have to make this path more specific to the location of your file.csv_path = "future-gc00-daily-prices.csv"# Read the CSV, parse 'Date' column as datetime, and set it as the indexdata = pd.read_csv( csv_path, parse_dates=["Date"], dayfirst=False, index_col="Date")# Sort the DataFrame by the Date index in ascending orderdata.sort_index(inplace=True)Preprocessing dei dati
Il nostro dataset è abbastanza pulito, ma in altri contesti dovremmo gestire problemi di indicizzazione, aspetto importante nelle previsioni per serie temporali. Ad esempio, se stiamo prevedendo il valore di chiusura di un titolo su una determinata borsa, dobbiamo considerare che il mercato azionario è chiuso nei weekend.
Prima di proseguire, faccio anche un rapido passaggio per rimuovere le virgole dalla variabile Close, che è quella che userò.
# Clean the "Close" columndata["Close"] = data["Close"].replace(',', '', regex=True)data["Close"] = pd.to_numeric(data["Close"], errors='coerce')data["Close"].replace([np.inf, -np.inf], np.nan, inplace=True)data.dropna(subset=["Close"], inplace=True)Gestisci i valori mancanti
Come parte del preprocessing, spesso dobbiamo anche considerare come gestire i valori mancanti usando un metodo di imputazione come il forward fill o la sostituzione con la media. Sappi che anche un solo valore NA, a seconda del linguaggio e della libreria utilizzati, può impedire l'esecuzione di un ARIMA.
Avevo accennato che i giorni del weekend potrebbero essere riconosciuti come NA. Può capitare e richiederebbe un passaggio aggiuntivo. Per fortuna, statsmodels tratta i dati come un indice sequenziale senza imporre rigidamente intervalli temporali regolari, consentendo al nostro modello di compilare anche con i buchi del weekend.
Crea un grafico temporale
Ora è un buon momento per creare un grafico nel tempo, così possiamo vedere la serie con cui stiamo lavorando:
# Plotting the original Close priceplt.figure(figsize=(14, 7))plt.plot(data.index, data["Close"], label='Close Price')plt.title('Close Price Over Time')plt.xlabel('Date')plt.ylabel('Close Price')plt.legend()plt.show()
Verifica la stazionarietà ed esegui la differenziazione se necessario
Sebbene i modelli ARIMA possano gestire in parte la non stazionarietà, non riescono a tener conto in modo efficace di varianze che variano nel tempo. In altre parole, perché un ARIMA funzioni davvero, i dati devono essere stazionari.
Osservando il grafico sopra, vediamo che i dati non sono stazionari perché c'è un trend evidente. Inoltre, sembra esserci varianza non costante in momenti diversi. Possiamo usare il test di Dickey-Fuller aumentato per verificare questa intuizione e vedere se i nostri dati hanno media e varianza costanti, dando dei numeri alla questione.
# Perform the Augmented Dickey-Fuller test on the original seriesresult_original = adfuller(data["Close"])print(f"ADF Statistic (Original): {result_original[0]:.4f}")print(f"p-value (Original): {result_original[1]:.4f}")if result_original[1] < 0.05: print("Interpretation: The original series is Stationary.\n")else: print("Interpretation: The original series is Non-Stationary.\n")# Apply first-order differencingdata['Close_Diff'] = data['Close'].diff()# Perform the Augmented Dickey-Fuller test on the differenced seriesresult_diff = adfuller(data["Close_Diff"].dropna())print(f"ADF Statistic (Differenced): {result_diff[0]:.4f}")print(f"p-value (Differenced): {result_diff[1]:.4f}")if result_diff[1] < 0.05: print("Interpretation: The differenced series is Stationary.")else: print("Interpretation: The differenced series is Non-Stationary.")ADF Statistic (Original): -1.4367p-value (Original): 0.5646Interpretation: The original series is Non-Stationary.ADF Statistic (Differenced): -19.1308p-value (Differenced): 0.0000Interpretation: The differenced series is Stationary.I risultati del nostro test di Dickey-Fuller aumentato indicano che la serie originale non è stazionaria, quindi usare un ARIMA out-of-the-box sui dati originali sarebbe un errore.
Il test ADF su una versione differenziata dei dati indica invece che la serie differenziata è stazionaria.
Una breve nota sulla differenziazione. Voglio prendermi il tempo di spiegarla, visto che sotto il cofano succedono parecchie cose. Per eseguire la differenziazione, sottraiamo ogni osservazione dalla precedente per ottenere una nuova serie temporale di prime differenze. (La nuova serie temporale ha ora un elemento in meno rispetto all'originale.) Se la serie differenziata non è ancora stazionaria, possiamo prendere una seconda differenza differenziando nuovamente la serie originale e possiamo continuare a differenziare finché non diventa stazionaria. L'ordine di differenziazione richiesto è il numero minimo di differenze necessario per ottenere una serie senza autocorrelazione.
Infine, non eseguire più differenziazioni del necessario, altrimenti potresti creare dinamiche spurie nei dati. Inoltre, se stessi facendo un modello ARIMA stagionale, cosa che non facciamo in questo tutorial, dovresti sempre considerare una differenziazione stagionale prima della prima differenza.
# Plotting the differenced Close priceplt.figure(figsize=(14, 7))plt.plot(data.index, data['Close_Diff'], label='Differenced Close Price', color='orange')plt.title('Differenced Close Price Over Time')plt.xlabel('Date')plt.ylabel('Differenced Close Price')plt.legend()plt.show()
Identificazione del modello
Quando costruiamo un modello ARIMA, dobbiamo considerare i termini p, d e q che entrano nel nostro modello ARIMA.
- Il primo parametro, p, è il numero di osservazioni ritardate. Considerando p, determiniamo di fatto quanto indietro nel tempo andiamo quando proviamo a prevedere l'osservazione corrente. Lo facciamo guardando le autocorrelazioni della nostra serie, cioè le correlazioni della serie ai lag precedenti.
- Il secondo parametro, d, si riferisce all'ordine di differenziazione, di cui abbiamo parlato. Di nuovo, differenziare significa semplicemente trovare le differenze tra passi temporali consecutivi. È un modo per rendere i dati stazionari, cioè rimuovere trend e cambiamenti di varianza nel tempo. d indica a quale ordine di differenziazione si ottiene un processo stazionario.
- Il terzo parametro, q, si riferisce all'ordine della parte di media mobile (MA) del modello. Rappresenta il numero di errori di previsione ritardati inclusi nel modello. Diversamente da una semplice media mobile, che leviga i dati, la media mobile in ARIMA cattura la relazione tra un'osservazione e gli errori residui di un modello di media mobile applicato alle osservazioni ritardate.
Trovare i termini ARIMA
Usiamo strumenti come ACF (Autocorrelation Function) e PACF (Partial Autocorrelation Function) per determinare i valori di p, d e q. Il numero di lag in cui l'ACF si tronca è q, e dove si tronca il PACF è p. Dobbiamo anche scegliere il valore appropriato per d creando una situazione in cui, dopo la differenziazione, i dati somiglino al rumore bianco. Per i nostri dati, scegliamo 1 sia per p che per q perché vediamo un picco significativo al primo lag per entrambi.
from statsmodels.graphics.tsaplots import plot_acf, plot_pacfimport matplotlib.pyplot as plt# Plot ACF and PACF for the differenced seriesfig, axes = plt.subplots(1, 2, figsize=(16, 4))# ACF plotplot_acf(data['Close_Diff'].dropna(), lags=40, ax=axes[0])axes[0].set_title('Autocorrelation Function (ACF)')# PACF plotplot_pacf(data['Close_Diff'].dropna(), lags=40, ax=axes[1])axes[1].set_title('Partial Autocorrelation Function (PACF)')plt.tight_layout()plt.show()
Stima dei parametri
Per chiarezza, i valori p, d e q in ARIMA rappresentano l'ordine del modello (lag per l'autoregressione, differenziazione e termini di media mobile), ma non sono i parametri effettivamente stimati. Una volta scelti i valori di p, d e q, il modello stima ulteriori parametri, come i coefficienti per i termini AR e MA, tramite massima verosimiglianza (MLE).
Previsione
Per fare previsioni con un modello ARIMA, inizia usando il modello addestrato per prevedere i valori futuri sulla base dei dati. Una volta ottenute le previsioni, è utile visualizzarle tracciando i valori previsti accanto ai valori reali. Questo si realizza perché usiamo un workflow train/test, in cui i dati sono suddivisi in set di training e di test. In questo modo possiamo vedere quanto bene il modello si comporta su dati mai visti. Se non ti è chiaro, segui il nostro corso Model Validation in Python, un'ottima risorsa per imparare nel dettaglio training e testing.
1. Usa un workflow train/test
Il primo passo è suddividere i dati in versioni di training e di test.
# Split data into train and testtrain_size = int(len(data) * 0.8)train, test = data.iloc[:train_size], data.iloc[train_size:]# Fit ARIMA modemodel = ARIMA(train["Close"], order=(1,1,1))model_fit = model.fit()2. Visualizza la nostra serie temporale
Il passo successivo è creare la previsione e ispezionarla visivamente. Possiamo vedere come si comporta rispetto alla versione di test dei nostri dati.
# Forecastforecast = model_fit.forecast(steps=len(test))# Plot the results with specified colorsplt.figure(figsize=(14,7))plt.plot(train.index, train["Close"], label='Train', color='#203147')plt.plot(test.index, test["Close"], label='Test', color='#01ef63')plt.plot(test.index, forecast, label='Forecast', color='orange')plt.title('Close Price Forecast')plt.xlabel('Date')plt.ylabel('Close Price')plt.legend()plt.show()
ARIMA: valori reali vs. previsti. Immagine dell'autore
3. Valuta le statistiche del modello
Esaminiamo le statistiche AIC e BIC del modello. Valori più bassi indicano un miglior fit, ma potremmo anche confrontare i risultati con quelli di modelli più semplici per evitare l'overfitting. Stampo i numeri qui, ma hanno più senso nel contesto del confronto con altri modelli ARIMA sugli stessi dati, per trovare quello che funziona meglio.
print(f"AIC: {model_fit.aic}")print(f"BIC: {model_fit.bic}")AIC: 24602.97426066606BIC: 24620.97128230579Possiamo anche valutare l'errore quadratico medio per giudicare il fit del modello. È una metrica pratica. Un RMSE più basso indica un modello ARIMA migliore, riflettendo differenze minori tra valori reali e previsti, ed è sulla stessa scala dei dati. Ovvero, l'RMSE di 118,5339 significa che, in media, le previsioni del modello si discostano dai prezzi di Close reali di circa 118,53 $.
forecast = forecast[:len(test)]test_close = test["Close"][:len(forecast)]# Calculate RMSErmse = np.sqrt(mean_squared_error(test_close, forecast))print(f"RMSE: {rmse:.4f}")RMSE: 118.5339Usi comuni di ARIMA per le previsioni
Parliamo ora delle applicazioni di ARIMA in diversi settori. Una varietà di ambiti — dall'economia e finanza alla meteorologia e alla salute — utilizza i modelli ARIMA per ricavare insight dai dati e perseguire la massima accuratezza predittiva. Alcuni grandi esempi sono i seguenti:
Economia e finanza
La forza di ARIMA risiede nella sua capacità di gestire serie temporali finanziarie che spesso contengono autocorrelazioni complesse e interazioni tra molteplici indicatori economici. La capacità di modellare effetti di lag e incorporare la differenziazione lo rende ideale per prevedere metriche volatili come i prezzi azionari o i tassi di cambio.
- Previsioni finanziarie: Prevedendo prezzi azionari, tassi di cambio e altri strumenti finanziari, ARIMA può supportare le strategie di investimento.
- Modellizzazione economica: I modelli ARIMA aiutano a prevedere il futuro di un'economia nazionale o globale, informando le decisioni di politica economica.
- Pianificazione della domanda: ARIMA prevede la domanda di beni e servizi di consumo, aiutando a ottimizzare la pianificazione della produzione e a controllare l'inventario.
Previsioni meteo
I modelli ARIMA sfruttano i pattern meteorologici storici per fornire previsioni a breve e lungo termine, risultando abbastanza flessibili da prevedere condizioni sia tipiche sia estreme.
- Previsione di temperatura e precipitazioni: I modelli ARIMA sono usati in previsioni meteo sia a breve sia a lungo termine, incorporando interazioni aria-mare e molti altri fattori.
- Modellizzazione dei cambiamenti climatici: I modelli ARIMA utilizzano dati meteo storici per comprendere meglio i trend climatici e prevedere come saranno i climi futuri.
Gestione della supply chain
La capacità di ARIMA di modellare effetti di lag aiuta i responsabili della supply chain a gestire l'inventario o anticipare le interruzioni sulla base di pattern storici e lead time.
- Previsione della domanda: ARIMA è in grado di prevedere la domanda futura dei prodotti e pianificare programmi di produzione o livelli di scorte.
- Gestione dell'inventario: ARIMA assicura che siano mantenuti i giusti livelli di scorte sugli articoli, così da non avere troppo capitale immobilizzato in magazzino e ridurre i costi legati a sovra- o sottoscorte.
- Ottimizzazione della supply chain: ARIMA può prevedere interruzioni nella catena di fornitura analizzando le interazioni tra più variabili tra cui, ad esempio, ritardi nei trasporti o fluttuazioni della domanda.
Sanità
In ambito sanitario, i modelli ARIMA sono particolarmente preziosi perché possono prevedere i ricoveri e altri trend importanti.
- Previsione dei focolai di malattie: I modelli ARIMA si rivelano utili prevedendo la propagazione delle malattie infettive, aprendo la strada a interventi di sanità pubblica preventivi.
- Previsione dei ricoveri ospedalieri: ARIMA prevede i tassi di ricovero e aiuta a ottimizzare risorse e turni del personale.
- Monitoraggio dei pazienti: ARIMA è uno strumento utile per i professionisti che vogliono esaminare dati clinici per segnalare precocemente problemi di salute e personalizzare le strategie terapeutiche.
Cose da considerare per migliori previsioni ARIMA
Ecco alcuni errori comuni da evitare mentre lavori alla costruzione di modelli ARIMA:
Overfitting e underfitting
Se scegliamo valori errati di p, d e q, ciò può portare a overfitting o underfitting. Facciamo overfitting quando il modello è troppo complesso e si attacca al rumore dei dati, così da non generalizzare bene a nuove osservazioni. All'estremo opposto, l'underfitting significa semplicemente che il modello è meno complesso e non riesce a catturare tutti i pattern sottostanti.
Per prevenire l'overfitting, un approccio può essere usare meno termini di lag e anche, possibilmente, meno termini di differenziazione. L'underfitting può essere corretto aumentando il numero di termini autoregressivi, se appropriato. Bisogna trovare un equilibrio tra complessità e semplicità. Tecniche come la validazione/cross-validation possono aiutare.
Stazionarietà
La stazionarietà è un'assunzione statistica che riguarda le dipendenze temporali dei dati. Dati non stazionari possono portare a previsioni inaffidabili e relazioni spurie. Differenziazioni o trasformazioni come il logaritmo o gli aggiustamenti stagionali possono essere usati per rendere stazionari i dati non stazionari.
Stagionalità
La presenza di stagionalità è un altro elemento fondamentale da considerare nell'analisi di serie temporali. Molti dataset reali mostrano pattern ripetuti a intervalli fissi come giornalieri, settimanali e annuali. Ignorare questi pattern stagionali può portare a previsioni scorrette. In presenza di stagionalità, servono differenze stagionali e termini AR e MA stagionali oltre ai valori di p e q. Ricorda che una serie può avere più di un tipo di stagionalità.
Analisi dei residui
Uno dei passaggi più importanti nella modellizzazione ARIMA è verificare che la serie dei residui generata sia stazionaria. I residui sono la differenza tra i valori osservati e quelli prodotti da un modello. Osservando i residui, possiamo controllare se il nostro modello riesce a trovare e gestire le dinamiche nei dati. I residui dovrebbero mostrare una dispersione casuale senza indicare trend o correlazioni.
Quando i residui mostrano pattern o correlazioni, significa che c'è informazione che il modello non ha completamente catturato. Test statistici e diagnostiche visive, incluso il test di Ljung-Box, oltre a istogrammi e altri grafici diagnostici, possono essere usati per verificare l'adeguatezza del modello.
Prossimi passi con ARIMA e modelli correlati
In molti casi, ARIMA non è il punto di arrivo. Così come ARIMA è un'evoluzione dei modelli autoregressivi o di media mobile, sono state sviluppate anche idee più recenti. Per cominciare, i modelli ARIMA possono gestire sia pattern lineari sia non lineari in una serie temporale. Se vuoi una previsione stagionale, prendi in considerazione i modelli SARIMA, che possono gestire pattern multi-periodici/periodici nella serie. I modelli SARIMA sono particolarmente utili in aree in cui i dati hanno un pattern ricorrente o un comportamento ciclico, come le previsioni di vendita e il meteo. ARIMAX è un'altra opzione popolare: sono modelli ARIMA che includono una variabile esterna o regressore esogeno. Possono aiutare molto a migliorare le prestazioni e l'accuratezza delle previsioni.
Inoltre, entrando nel mondo del machine learning, possiamo pensare di approfondire l'analisi delle serie temporali usando strumenti come le recurrent neural networks (RNN) e le LSTM per prevedere dipendenze temporali complesse. Come riflessione finale, vale la pena esplorare il campo dell'analisi bayesiana delle serie temporali e capire come un simile approccio possa offrire vantaggi in termini di previsione e decision-making.
Conclusioni / Considerazioni finali
Come abbiamo visto, ARIMA è un modello statistico comune che analizza le serie temporali e prevede i valori futuri tenendo conto sia degli elementi autoregressivi sia di quelli a media mobile. Consente di generare previsioni sui dati storici anche quando le caratteristiche di un dataset possono essere molto diverse da quelle di un altro. La sua adattabilità è ciò che lo rende un metodo di previsione diffuso e ampiamente utilizzato.
L'esperienza pratica è importante per padroneggiare le basi di ARIMA. DataCamp offre corsi completi in base alle tue esigenze di apprendimento per migliorare e padroneggiare la modellizzazione ARIMA. In questi migliori tutorial online, imparerai i fondamenti della modellizzazione ARIMA e gli strumenti e le tecniche più pratiche per implementare soluzioni analitiche che risolvono problemi complessi del mondo reale con molto meno sforzo (e in meno tempo) di quanto pensassi possibile. Alla fine, dovresti sentirti a tuo agio nell'applicare la modellizzazione ARIMA nel tuo futuro lavoro di data science. Scopri i corsi di modellizzazione ARIMA disponibili su DataCamp e raggiungi il tuo massimo potenziale nell'analisi delle serie temporali: Forecasting in R, Time Series with R, ARIMA Models in Python, ARIMA Models in R.
Sono docente part-time nel programma di apprendistato del Dipartimento di Informatica presso l’Università Nazionale An-Najah, con 5 anni di esperienza in Ingegneria del Software e oltre 5 anni nei campi della Data Science. La mia ricerca attuale è incentrata su Education EdTech e (FATE) nell’IA • Data science for Social Good/Impact. Oltre al ruolo di docente, sono un educatore di coding nel doposcuola, insegno programmazione Python e sono un mentore tecnico: condivido conoscenze con gli altri e offro spunti sulle tendenze e le tecniche più recenti. Sono anche formatore professionista per studenti universitari sulle competenze di ricerca del lavoro (colloqui, stesura del CV, scelta delle offerte, portfolio, career coaching) nel mondo tech.
Domande frequenti sulle previsioni di serie temporali
Che cos'è un modello ARIMA?
Un modello ARIMA (Autoregressive Integrated Moving Average) è un metodo statistico molto usato per la previsione di serie temporali che predice i valori futuri combinando le osservazioni passate (AR), la differenziazione per ottenere la stazionarietà (I) e gli errori passati per affinare le previsioni (MA).
Qual è la differenza tra ARIMA e exponential smoothing?
Si può dire che i modelli ARIMA descrivono una serie tramite le sue autocorrelazioni. È una tecnica più potente e flessibile che tende a essere usata per fornire previsioni stabili di lungo periodo. L'exponential smoothing guarda più al trend e alla stagionalità ed è in genere considerato più performante per serie brevi e volatili.
In che modo la previsione ARIMA è correlata alla modellizzazione di regressione?
La previsione con ARIMA è correlata alla modellizzazione di regressione perché usa valori ed errori passati per prevedere punti dati futuri, in modo simile a come i modelli di regressione prevedono le variabili dipendenti usando quelle indipendenti. ARIMA gestisce anche serie temporali non stazionarie tramite differenziazione, cosa in linea con le tecniche di regressione applicate a dati stazionari. A differenza dei modelli di regressione tradizionali, ARIMA tiene conto esplicito degli effetti dipendenti dal tempo, risultando più adatto alla previsione di serie temporali.


