Componenti e stazionarietà delle serie temporali
Trend, stagionalità, rumore, test ADF per la stazionarietà, differenziazione per ottenere la stazionarietà
Componenti e stazionarietà delle serie temporali è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è una serie temporale?
Una serie temporale è un insieme di dati indicizzato in ordine cronologico, ad esempio vendite giornaliere o temperatura oraria. Poiché le osservazioni sono ordinate e spesso correlate, sono necessarie tecniche specifiche: non è possibile mescolare semplicemente le righe come si farebbe con i normali dati tabellari.
Le tre componenti
La scomposizione classica divide una serie in:
- Trend: andamento a lungo termine verso l'alto o verso il basso.
- Stagionalità: schemi che si ripetono a intervalli fissi, ad esempio settimanali o annuali.
- Residuo: il rumore casuale rimanente dopo aver rimosso trend e stagionalità.
Additivo e moltiplicativo
In un modello additivo: y = trend + seasonality + residual, usato quando le oscillazioni stagionali hanno ampiezza costante.
In un modello moltiplicativo: y = trend * seasonality * residual, usato quando le oscillazioni stagionali crescono insieme al trend.
seasonal_decompose
statsmodels può scomporre automaticamente una serie nelle sue componenti.
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(series, model="additive", period=12)
result.trend
result.seasonal
result.residVisualizzare la scomposizione
Il grafico del risultato mostra ogni componente in un pannello separato, rendendo più facili da individuare trend e stagionalità e aiutando a scegliere un approccio di previsione.
import matplotlib.pyplot as plt
result.plot()
plt.tight_layout()
plt.show()Che cos'è la stazionarietà?
Una serie è stazionaria quando le sue proprietà statistiche, come media, varianza e autocorrelazione, rimangono costanti nel tempo. Molti modelli classici, come ARIMA, presuppongono la stazionarietà; verificarla e ottenerla è quindi un primo passaggio fondamentale.
Perché la stazionarietà è importante
Se la media varia nel tempo o la varianza cresce senza controllo, un modello adattato ai dati iniziali non generalizzerà ai dati successivi. Rimuovere il trend e stabilizzare la varianza rende la serie prevedibile in modo coerente.
Il test ADF
Il test Augmented Dickey-Fuller (ADF) verifica la stazionarietà. L'ipotesi nulla è "non stazionaria (ha una radice unitaria)". Un p-value inferiore a 0.05 consente di rifiutare l'ipotesi nulla e considerare la serie stazionaria.
from statsmodels.tsa.stattools import adfuller
stat, pvalue, *_ = adfuller(series)
print("p-value:", pvalue)
# pvalue < 0.05 -> stationaryOttenere la stazionarietà tramite differenziazione
La differenziazione sottrae il valore precedente da ciascun valore, rimuovendo il trend. La differenziazione del primo ordine gestisce solitamente un trend lineare; la si applichi nuovamente se necessario.
diff1 = series.diff().dropna() # first difference
diff2 = series.diff().diff().dropna() # second differenceConfermare dopo la differenziazione
Esegua nuovamente il test ADF sulla serie differenziata. Quando il p-value scende sotto 0.05, ha ottenuto la stazionarietà e annotato l'ordine di differenziazione d, che viene usato direttamente da ARIMA.
stat, pvalue, *_ = adfuller(series.diff().dropna())
print("p-value after differencing:", pvalue)Altre trasformazioni stabilizzanti
Se la varianza cresce nel tempo, una trasformazione logaritmica o Box-Cox la stabilizza prima della differenziazione. La combinazione di una trasformazione logaritmica e della differenziazione gestisce molte serie reali con crescita moltiplicativa.
import numpy as np
log_series = np.log(series)
stationary = log_series.diff().dropna()Verifica rapida
Verifichi la Sua comprensione della stazionarietà.
Riepilogo
Ha scomposto le serie in trend, stagionalità e residuo con seasonal_decompose, ha imparato a distinguere i modelli additivi da quelli moltiplicativi, ha verificato la stazionarietà con il test ADF e ha usato la differenziazione (ordine d) per rendere stazionaria una serie. Prossimo argomento: ARIMA e SARIMA.
Domande Frequenti
La lezione «Componenti e stazionarietà delle serie temporali» è gratuita?
Sì — il testo completo di «Componenti e stazionarietà delle serie temporali» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Componenti e stazionarietà delle serie temporali»?
Trend, stagionalità, rumore, test ADF per la stazionarietà, differenziazione per ottenere la stazionarietà Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Componenti e stazionarietà delle serie temporali»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Componenti e stazionarietà delle serie temporali
- Modelli ARIMA e SARIMA
- Prophet per il forecasting automatizzato
- LSTM per il forecasting delle serie temporali