Scomposizione delle serie temporali: capisci trend, stagionalità e rumore
Impara a scomporre i dati di serie temporali in componenti significative come trend, stagionalità e residui con modelli additivi e moltiplicativi. Scopri i metodi classici e STL. Esplora gli aggiustamenti stagionali ed esercitati nel forecasting con i modelli di scomposizione.
La scomposizione è una delle cose più interessanti nella data science. In sostanza, scomporre significa dividere qualcosa di complesso in parti più semplici e interpretabili. Questo può riguardare una matrice, un modello o un segnale.
Qui rivedremo una delle nostre preferite: la scomposizione delle serie temporali. Se alla fine avremo stuzzicato la tua curiosità, segui il nostro corso Forecasting in R con il professor Rob Hyndman.
Cos’è la scomposizione delle serie temporali?
La scomposizione delle serie temporali è un metodo che suddivide una serie temporale in componenti distinte chiamate trend o trend-ciclo, stagionalità e residui. Lo scopo della scomposizione è comprendere meglio gli schemi sottostanti e migliorare l’accuratezza delle previsioni.
Quali sono le componenti di una serie temporale?
Diamo un’occhiata alle componenti di una serie temporale. È probabilmente il modo migliore per capire l’idea.
Componente di trend
Il trend di una serie temporale (come suggerisce il nome) è il movimento di lungo periodo. Dovremmo dire che la componente di trend è spesso considerata in realtà come trend-ciclo, dove i cicli sono intesi come schemi lunghi e irregolari. Le vendite di auto erano storicamente considerate in cicli di sette anni (per qualunque motivo), anche se probabilmente, con il passaggio alle auto elettriche, non più.
La cosa principale che si ricava dal trend di solito è: i dati aumentano, diminuiscono o restano stabili nel lungo periodo? Un aumento globale delle temperature oceaniche negli ultimi decenni è un chiaro (leggi: negativo) trend.
Componente stagionale
La componente stagionale richiede un po’ più di tempo per essere spiegata perché è un po’ più complicata. La componente stagionale di una serie temporale sono i cicli a breve termine che si ripetono a intervalli regolari. Pensa a intervalli giornalieri, mensili, settimanali, trimestrali. La chiave qui è che gli intervalli devono essere abbastanza regolari. Potresti vedere, per esempio, che gli ordini in una caffetteria seguono una stagionalità settimanale se la domenica le persone preferiscono farsi il caffè a casa. (Esploreremo questa domanda sugli ordini delle caffetterie nella prossima sezione.)
La stagionalità può essere più complicata di quanto sembri. Pensa a come il numero di settimane in un anno non è un intero (~52,18). O a come i mesi non sono equidistanti: febbraio ha 28 (o 29) giorni, ma luglio ne ha sempre 31.
Inoltre, dato che ogni anno ha poco più di 52 settimane e che i mesi variano, non puoi suddividere la maggior parte dei mesi in settimane intere. Questo è ovvio quando guardi un calendario. Meno ovvio, per un analista, è che quando guardi i dati a livello settimanale e poi li aggreghi a livello mensile potresti vedere cose incoerenti, come un gennaio con quattro lunedì e il successivo con cinque.
La componente residua / irregolare / rimanente
Tutto ciò che rimane dopo aver rimosso trend-ciclo e componente stagionale lo chiamiamo, appropriatamente, componente residua, che include elementi anomali nei dati, come un grande evento, e il rumore casuale. Contrariamente a quanto si potrebbe pensare dal nome, la componente residua non è un artefatto inutile. Tutti i dati hanno variabilità inspiegata e quantificarne l’entità è importante. Interessantemente, i residui spesso assumono la forma di una distribuzione gaussiana in una serie ben comportata, nel qual caso potremmo valutare eventi cigno nero con test d’ipotesi.
Modelli di scomposizione delle serie temporali
Ora che abbiamo coperto le parti costitutive di una serie temporale, dobbiamo menzionare che esistono due tipi generali di scomposizione. Partiremo dal modello additivo.
Scomposizione additiva
Ecco la formula per la scomposizione additiva:
Nota i segni più. Questa formula dice che se prendi il trend e lo sommi alla componente stagionale, e poi sommi i residui, ottieni la serie temporale originale. In generale, usiamo una scomposizione additiva quando la variazione stagionale è costante nel tempo.
Scomposizione moltiplicativa
Ecco la formula per la scomposizione moltiplicativa. Nota i segni di moltiplicazione in questa versione.
Usiamo un modello moltiplicativo quando la variazione stagionale si scala con il trend. Cioè, quando vedi che l’ampiezza degli effetti stagionali aumenta man mano che la serie complessiva sale o scende. Quello che stiamo descrivendo è in realtà una forma di eteroschedasticità.
Tecniche di scomposizione delle serie temporali
Finora abbiamo visto cosa entra in una scomposizione e i due principali tipi generali. Andando avanti, dobbiamo parlare dei due metodi più comuni. Ognuno di questi può essere applicato sia come modello additivo sia moltiplicativo.
Scomposizione classica
La scomposizione classica è la più semplice da capire. Risale agli anni Venti, ma è ancora attuale. Per mostrare la scomposizione classica, usiamo Excel. La scomposizione classica, come la STL che vedremo dopo, può essere fatta con un modello additivo o moltiplicativo. In questo esempio, creeremo una versione additiva.
Se vuoi provare tu stesso, usa il CSV index_1 in questo interessantissimo dataset di vendite di caffè che trovi su Kaggle. Per riferimento, abbiamo aggregato e riassunto le vendite per giorno.
Per prima cosa calcoliamo il trend-ciclo. Identifichiamo una stagionalità settimanale e ci sono sette giorni in una settimana, quindi il periodo stagionale è dispari, il che significa che la media mobile dovrebbe essere centrata usando una finestra simmetrica. Cioè, una media mobile a 7 giorni. Fai attenzione all’allineamento e al centraggio nel foglio Excel.
Poi troviamo la serie detrended sottraendo il trend dall’originale.
Quindi, per trovare la componente stagionale, facciamo la media dei valori detrended per ciascun periodo stagionale. Un’aggiunta importante: Vedrai che la componente stagionale probabilmente non somma esattamente a zero. Assicurati di correggere questo aspetto con la normalizzazione:
Calcola la media della tua componente stagionale.
Sottrai la media stagionale da ogni valore stagionale.
Infine, per il rimanente, sottraiamo trend e periodo stagionale dalla serie originale.
Se vedessimo che la nostra serie ha un effetto stagionale che cambia con il livello dei dati, prenderemmo in considerazione invece una scomposizione moltiplicativa. I passaggi sono simili, tranne per il fatto che usiamo la divisione invece della sottrazione. Nello specifico, troveremmo la serie detrended dividendo la serie originale per il trend-ciclo. Poi, più avanti, per trovare il rimanente, divideremmo la serie originale per il prodotto delle componenti di trend e stagionale. (In alternativa, avremmo potuto prendere il logaritmo naturale della serie originale e applicare una scomposizione additiva. Sarebbe sostanzialmente lo stesso.)
Scomposizione STL
La scomposizione STL, che sta per Seasonal and Trend decomposition using LOESS, è una versione più moderna della scomposizione. È più difficile da spiegare, ma in genere è più flessibile del metodo classico. STL funziona usando un metodo chiamato LOESS, che adatta semplici modelli di regressione a piccoli segmenti sovrapposti dei dati. Applica questa regressione ponderata localmente per isolare separatamente le componenti di trend e stagionale.
Questo metodo affronta specifici limiti della scomposizione classica, ossia che, nella versione classica, non sono disponibili stime del trend-ciclo o del rimanente per le prime e ultime osservazioni. Lo puoi vedere negli spazi vuoti in Excel, nelle righe 3, 4, 5 e 20, 21 e 22, sopra.
Dovremmo anche dire che il trend-ciclo identificato dalla scomposizione classica appiana rialzi e ribassi rapidi, quindi potrebbe sorvolare su aspetti importanti della serie. Infine, la scomposizione classica dà per scontata l’idea che esista un pattern stagionale ma, con abbastanza dati, a volte possiamo vedere che tale pattern cambia.
Iniziamo creando un grafico temporale della serie originale. Come prima, come primo passo, aggreghiamo e riassumiamo il dataset di Kaggle per ottenere la serie che ci interessa.
coffee_sales_data <- read.csv("/Users/x/Desktop/index_1.csv")
coffee_sales_data <- as.data.frame(coffee_sales_data)Offerto da
Successivamente, scomponiamo la serie in trend, stagionale e rimanente. Il riquadro in alto del grafico di scomposizione mostra la serie originale, seppur un po’ schiacciata.
Ci sono anche alcuni limiti con la scomposizione STL e, se ti interessa, abbiamo aggiunto queste informazioni nelle nostre FAQ.
Scomposizione delle serie temporali e aggiustamenti stagionali
Spesso è utile creare una versione destagionalizzata dei dati. La scomposizione aiuta in questo. Per creare una versione destagionalizzata, sommiamo semplicemente trend e rimanente. Oppure possiamo sottrarre la componente stagionale dalla serie originale; entrambe le strade portano allo stesso risultato.
Stiamo scoprendo che non c’è una stagionalità particolarmente forte in questo dataset specifico, il che è interessante di per sé.
La forza dei dati destagionalizzati è che possono aiutarci a capire certe caratteristiche della nostra serie. Possiamo vedere, per esempio, se il trend sottostante è il risultato della stagionalità. In secondo luogo, possiamo esaminare più da vicino le occorrenze insolite nei dati. Pensiamo che la nostra promozione del venerdì abbia funzionato perché era di venerdì o perché era una promozione? Ecco, usando la scomposizione e gli aggiustamenti stagionali, possiamo testare domande del genere.
Scomposizione delle serie temporali e forecasting
Potrebbe sorprenderti sapere che la scomposizione è utile anche per il forecasting. La consideriamo in due modi principali. Primo, vogliamo capire le componenti della serie per aiutarci a decidere quale modello di previsione usare. Se vediamo una forte stagionalità, potremmo orientarci verso modelli come l’esponenziale di Holt-Winters o i metodi ETS, costruiti specificamente per gestire sia trend sia stagionalità.
In secondo luogo, possiamo anche usare i dati scomposti come parte del forecasting, il che ci dà opzioni. Possiamo, per esempio, eseguire un modello non stagionale su una versione destagionalizzata dei dati. (Possiamo reintrodurre la componente stagionale in seguito.) L’aggiustamento stagionale è particolarmente utile quando vogliamo usare modelli flessibili, come gli ARIMA standard e la regressione lineare.
Qui creiamo un semplice modello ARIMA per prevedere i dati destagionalizzati.
season_adjust_data_filtered <- season_adjust_data |>
filter(series =="season_adjust")|>
as_tsibble(index = date)
seasonal_adjust_arima_model <- season_adjust_data_filtered |>
model(
ARIMA(value))
seasonal_adjust_arima_model |>
forecast(h ="14 days")|>
autoplot(season_adjust_data_filtered, color ='#01ef63')+
labs(title ="Forecast of Seasonally Adjusted Coffee Sales",
subtitle ="Simple ARIMA Model",
y ="Money (Seasonally Adjusted)",
x ="Date")Offerto da
Possiamo anche prevedere la serie destagionalizzata e aggiungere nuovamente la componente stagionale, ottenendo di fatto una previsione stagionale. Tutto questo è stato reso possibile dalla scomposizione iniziale.
# Build tagged historical and forecast data
historical_data <- components |>
as_tibble()|>
select(date, money)|>
mutate(source ="historical")
forecast_data <- final_forecast |>
as_tibble()|>
transmute(date, money = money_forecast)|>
mutate(source ="forecast")# Bind and create tsibble
full_data <- bind_rows(historical_data, forecast_data)|>
as_tsibble(index = date, validate =FALSE)# Plot with color by source
full_data |>
ggplot(aes(x = date, y = money, color = source))+
geom_line()+
scale_color_manual(values = c("historical"="#203147",# dark blue for real data"forecast"="#01ef63"# green for forecast))+
labs(
title ="Coffee Sales: Actual and Forecast",
subtitle ="Historical vs Forecast",
y ="Money",
x ="Date")Offerto da
Considerazioni finali
Speriamo che il nostro articolo sulla scomposizione delle serie temporali ti sia piaciuto! Ricorda che la scomposizione è solo una parte dell’analisi delle serie temporali, quindi per diventare esperto iscriviti al nostro corso Forecasting in R con il professor Rob Hyndman, che ha contribuito a sviluppare i pacchetti R usati per le nostre visualizzazioni. Abbiamo anche un corso Visualizing Time Series Data in Python se hai trovato interessanti le idee di questo articolo ma preferisci Python, che è ottimo anche per questo tipo di lavoro.
Autore
Josef Waples
Sono uno scrittore e editor di data science, con contributi a articoli di ricerca su riviste scientifiche. Sono particolarmente interessato ad algebra lineare, statistica, R e affini. Inoltre, gioco anche parecchio a scacchi!
Sono una content strategist: mi piace semplificare argomenti complessi. Ho aiutato aziende come Splunk, Hackernoon e Tiiny Host a creare contenuti coinvolgenti e informativi per il loro pubblico.
FAQs
Cos’è la scomposizione di serie temporali?⌄
La scomposizione di serie temporali è il processo di suddividere una serie temporale in tre componenti interpretabili: trend, stagionalità e residui (o componente irregolare). Il trend mostra l’andamento di lungo periodo, la componente stagionale cattura i cicli a breve termine ripetuti e il residuo riflette il rumore casuale o eventi imprevisti. La scomposizione aiuta gli analisti a comprendere meglio la struttura dei dati e può migliorare le previsioni modellando ciascuna componente separatamente.
Perché mancano valori all’inizio e alla fine di una scomposizione classica?⌄
Le medie mobili centrate richiedono dati simmetrici attorno a ciascun punto. Con una media mobile a 7 giorni non puoi calcolare un valore centrato per i primi tre o gli ultimi tre giorni. Di conseguenza, la scomposizione classica non fornisce stime ai margini, lasciando vuoti nelle componenti di trend, stagionale e residua ai bordi.
Quando dovrei usare la scomposizione additiva vs. moltiplicativa?⌄
Usa la scomposizione additiva quando le fluttuazioni stagionali sono approssimativamente costanti nel tempo.
Usa la scomposizione moltiplicativa quando la componente stagionale aumenta o diminuisce con il trend, ossia quando l’effetto si scala con il livello dei dati. Ciò accade spesso in serie temporali eteroschedastiche (con varianza non costante).
Posso passare tra scomposizione additiva e moltiplicativa?⌄
Sì. Un approccio comune è applicare il logaritmo alla serie e poi usare la scomposizione additiva. Questo è matematicamente equivalente a un modello moltiplicativo nella scala originale. Può semplificare la modellazione e stabilizzare la varianza.
I residui della scomposizione seguono sempre una distribuzione gaussiana?⌄
No. Sebbene la scomposizione STL presupponga residui approssimativamente distribuiti normalmente, ciò non avviene sempre nei dati reali. I residui possono essere asimmetrici, leptocurtici o influenzati da outlier e rotture strutturali. Tuttavia, se la scomposizione si adatta bene, la componente rimanente spesso somiglia a rumore gaussiano.
Quali sono gli svantaggi della scomposizione classica?⌄
La scomposizione classica presenta diversi limiti:
Effetti di margine: come detto, non può stimare il trend-ciclo o i residui all’inizio o alla fine della serie.
Stagionalità fissa: assume che i pattern stagionali siano stabili e non cambino nel tempo.
Sensibilità agli outlier: poiché si basa su medie mobili e semplici medie, è più soggetta a distorsioni dovute a valori estremi.
Flessibilità limitata: usa regole di smoothing predefinite e non si adatta bene a pattern non standard.
Cosa rende la scomposizione STL migliore della scomposizione classica?⌄
La STL risolve molte limitazioni della scomposizione classica:
Gestisce la stagionalità non costante, dove i pattern cambiano nel tempo.
Fornisce stime ai margini, evitando valori mancanti ai bordi.
Consente parametri di smoothing definiti dall’utente, offrendo più controllo su quanto viene levigata ciascuna componente.
È robusta agli outlier con opzioni di fitting robuste.
La scomposizione STL ha delle limitazioni?⌄
Sì. Sebbene la STL sia più flessibile, ha alcune avvertenze:
STL supporta solo la scomposizione additiva, non quella moltiplicativa. Se è presente un comportamento moltiplicativo, è necessario un log-trasformazione.
Richiede la messa a punto dei parametri per le finestre stagionale e di trend per ottenere risultati ottimali.
Presuppone una stagionalità periodica, che potrebbe non catturare bene periodi stagionali irregolari o variabili senza adeguamenti.
Cos’è il LOESS nella scomposizione STL?⌄
LOESS (Locally Estimated Scatterplot Smoothing) è un tipo di regressione locale usata nella scomposizione STL per stimare curve lisce su sottoinsiemi dei dati. Invece di adattare un unico trend globale, LOESS adatta molte piccole regressioni semplici su finestre sovrapposte. Questi adattamenti localizzati sono poi combinati per formare stime fluide delle componenti di trend e stagionale. Questo rende LOESS particolarmente utile per catturare cambiamenti graduali e pattern irregolari nei dati temporali.
Cos’è una media mobile nell’analisi delle serie temporali?⌄
Una media mobile è una tecnica di smoothing usata per ridurre le fluttuazioni di breve periodo e mettere in evidenza i trend di più lungo periodo nei dati temporali. Funziona calcolando la media dei valori su una finestra fissa (ad esempio 7 giorni o 12 mesi) che "scorre" lungo la serie. Per esempio, una media mobile a 7 giorni leviga ciascun punto mediandolo con i tre giorni precedenti e successivi. Le medie mobili sono comunemente usate per stimare la componente di trend nella scomposizione classica.
Cos’è un modello di scomposizione?⌄
Un modello di scomposizione è un modo di suddividere una serie temporale in parti separate che spiegano ciascuna un tipo diverso di pattern nei dati. Queste parti includono di solito un trend (la direzione di lungo periodo), la stagionalità (cicli ripetuti di breve periodo) e i residui (rumore casuale o eventi irregolari). Esistono due principali tipi di modelli di scomposizione: additivo, in cui le parti si combinano sommando, e moltiplicativo, in cui le parti si combinano moltiplicando. La scelta tra i due dipende dal fatto che l’ampiezza delle variazioni stagionali rimanga costante o cresca con il livello complessivo dei dati.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Acquisisci le competenze essenziali per utilizzare Excel, dalla preparazione dei dati alla scrittura di formule e alla creazione di visualizzazioni. Non è richiesta alcuna esperienza precedente.
La scomposizione è una delle cose più interessanti nella data science. In sostanza, scomporre significa dividere qualcosa di complesso in parti più semplici e interpretabili. Questo può riguardare una matrice, un modello o un segnale.
Poiché è un’idea generale, può assumere molte forme. In algebra lineare troviamo la decomposizione QR, l’eigendecomposizione, la decomposizione ai valori singolari e la decomposizione di Cholesky, per citarne alcune. In altri ambiti, c’è la trasformata di Fourier, l’analisi delle componenti principali e persino il topic modeling con metodi come LDA. La variabilità nei modelli di regressione può essere scomposta nelle componenti della somma dei quadrati: SST, SSR e SSE. Possiamo persino considerare gli alberi decisionali come una forma di scomposizione.
Qui rivedremo una delle nostre preferite: la scomposizione delle serie temporali. Se alla fine avremo stuzzicato la tua curiosità, segui il nostro corso Forecasting in R con il professor Rob Hyndman.
Cos’è la scomposizione delle serie temporali?
La scomposizione delle serie temporali è un metodo che suddivide una serie temporale in componenti distinte chiamate trend o trend-ciclo, stagionalità e residui. Lo scopo della scomposizione è comprendere meglio gli schemi sottostanti e migliorare l’accuratezza delle previsioni.
Quali sono le componenti di una serie temporale?
Diamo un’occhiata alle componenti di una serie temporale. È probabilmente il modo migliore per capire l’idea.
Componente di trend
Il trend di una serie temporale (come suggerisce il nome) è il movimento di lungo periodo. Dovremmo dire che la componente di trend è spesso considerata in realtà come trend-ciclo, dove i cicli sono intesi come schemi lunghi e irregolari. Le vendite di auto erano storicamente considerate in cicli di sette anni (per qualunque motivo), anche se probabilmente, con il passaggio alle auto elettriche, non più.
La cosa principale che si ricava dal trend di solito è: i dati aumentano, diminuiscono o restano stabili nel lungo periodo? Un aumento globale delle temperature oceaniche negli ultimi decenni è un chiaro (leggi: negativo) trend.
Componente stagionale
La componente stagionale richiede un po’ più di tempo per essere spiegata perché è un po’ più complicata. La componente stagionale di una serie temporale sono i cicli a breve termine che si ripetono a intervalli regolari. Pensa a intervalli giornalieri, mensili, settimanali, trimestrali. La chiave qui è che gli intervalli devono essere abbastanza regolari. Potresti vedere, per esempio, che gli ordini in una caffetteria seguono una stagionalità settimanale se la domenica le persone preferiscono farsi il caffè a casa. (Esploreremo questa domanda sugli ordini delle caffetterie nella prossima sezione.)
La stagionalità può essere più complicata di quanto sembri. Pensa a come il numero di settimane in un anno non è un intero (~52,18). O a come i mesi non sono equidistanti: febbraio ha 28 (o 29) giorni, ma luglio ne ha sempre 31.
Inoltre, dato che ogni anno ha poco più di 52 settimane e che i mesi variano, non puoi suddividere la maggior parte dei mesi in settimane intere. Questo è ovvio quando guardi un calendario. Meno ovvio, per un analista, è che quando guardi i dati a livello settimanale e poi li aggreghi a livello mensile potresti vedere cose incoerenti, come un gennaio con quattro lunedì e il successivo con cinque.
La componente residua / irregolare / rimanente
Tutto ciò che rimane dopo aver rimosso trend-ciclo e componente stagionale lo chiamiamo, appropriatamente, componente residua, che include elementi anomali nei dati, come un grande evento, e il rumore casuale. Contrariamente a quanto si potrebbe pensare dal nome, la componente residua non è un artefatto inutile. Tutti i dati hanno variabilità inspiegata e quantificarne l’entità è importante. Interessantemente, i residui spesso assumono la forma di una distribuzione gaussiana in una serie ben comportata, nel qual caso potremmo valutare eventi cigno nero con test d’ipotesi.
Modelli di scomposizione delle serie temporali
Ora che abbiamo coperto le parti costitutive di una serie temporale, dobbiamo menzionare che esistono due tipi generali di scomposizione. Partiremo dal modello additivo.
Scomposizione additiva
Ecco la formula per la scomposizione additiva:
Nota i segni più. Questa formula dice che se prendi il trend e lo sommi alla componente stagionale, e poi sommi i residui, ottieni la serie temporale originale. In generale, usiamo una scomposizione additiva quando la variazione stagionale è costante nel tempo.
Scomposizione moltiplicativa
Ecco la formula per la scomposizione moltiplicativa. Nota i segni di moltiplicazione in questa versione.
Usiamo un modello moltiplicativo quando la variazione stagionale si scala con il trend. Cioè, quando vedi che l’ampiezza degli effetti stagionali aumenta man mano che la serie complessiva sale o scende. Quello che stiamo descrivendo è in realtà una forma di eteroschedasticità.
Tecniche di scomposizione delle serie temporali
Finora abbiamo visto cosa entra in una scomposizione e i due principali tipi generali. Andando avanti, dobbiamo parlare dei due metodi più comuni. Ognuno di questi può essere applicato sia come modello additivo sia moltiplicativo.
Scomposizione classica
La scomposizione classica è la più semplice da capire. Risale agli anni Venti, ma è ancora attuale. Per mostrare la scomposizione classica, usiamo Excel. La scomposizione classica, come la STL che vedremo dopo, può essere fatta con un modello additivo o moltiplicativo. In questo esempio, creeremo una versione additiva.
Se vuoi provare tu stesso, usa il CSV
index_1in questo interessantissimo dataset di vendite di caffè che trovi su Kaggle. Per riferimento, abbiamo aggregato e riassunto le vendite per giorno.Per prima cosa calcoliamo il trend-ciclo. Identifichiamo una stagionalità settimanale e ci sono sette giorni in una settimana, quindi il periodo stagionale è dispari, il che significa che la media mobile dovrebbe essere centrata usando una finestra simmetrica. Cioè, una media mobile a 7 giorni. Fai attenzione all’allineamento e al centraggio nel foglio Excel.
Poi troviamo la serie detrended sottraendo il trend dall’originale.
Quindi, per trovare la componente stagionale, facciamo la media dei valori detrended per ciascun periodo stagionale. Un’aggiunta importante: Vedrai che la componente stagionale probabilmente non somma esattamente a zero. Assicurati di correggere questo aspetto con la normalizzazione:
Calcola la media della tua componente stagionale.
Sottrai la media stagionale da ogni valore stagionale.
Infine, per il rimanente, sottraiamo trend e periodo stagionale dalla serie originale.
Se vedessimo che la nostra serie ha un effetto stagionale che cambia con il livello dei dati, prenderemmo in considerazione invece una scomposizione moltiplicativa. I passaggi sono simili, tranne per il fatto che usiamo la divisione invece della sottrazione. Nello specifico, troveremmo la serie detrended dividendo la serie originale per il trend-ciclo. Poi, più avanti, per trovare il rimanente, divideremmo la serie originale per il prodotto delle componenti di trend e stagionale. (In alternativa, avremmo potuto prendere il logaritmo naturale della serie originale e applicare una scomposizione additiva. Sarebbe sostanzialmente lo stesso.)
Scomposizione STL
La scomposizione STL, che sta per Seasonal and Trend decomposition using LOESS, è una versione più moderna della scomposizione. È più difficile da spiegare, ma in genere è più flessibile del metodo classico. STL funziona usando un metodo chiamato LOESS, che adatta semplici modelli di regressione a piccoli segmenti sovrapposti dei dati. Applica questa regressione ponderata localmente per isolare separatamente le componenti di trend e stagionale.
Questo metodo affronta specifici limiti della scomposizione classica, ossia che, nella versione classica, non sono disponibili stime del trend-ciclo o del rimanente per le prime e ultime osservazioni. Lo puoi vedere negli spazi vuoti in Excel, nelle righe 3, 4, 5 e 20, 21 e 22, sopra.
Dovremmo anche dire che il trend-ciclo identificato dalla scomposizione classica appiana rialzi e ribassi rapidi, quindi potrebbe sorvolare su aspetti importanti della serie. Infine, la scomposizione classica dà per scontata l’idea che esista un pattern stagionale ma, con abbastanza dati, a volte possiamo vedere che tale pattern cambia.
Iniziamo creando un grafico temporale della serie originale. Come prima, come primo passo, aggreghiamo e riassumiamo il dataset di Kaggle per ottenere la serie che ci interessa.
Successivamente, scomponiamo la serie in trend, stagionale e rimanente. Il riquadro in alto del grafico di scomposizione mostra la serie originale, seppur un po’ schiacciata.
Nota che, a differenza della scomposizione classica, il dataframe che otteniamo non ha vuoti all’inizio o alla fine.
Ci sono anche alcuni limiti con la scomposizione STL e, se ti interessa, abbiamo aggiunto queste informazioni nelle nostre FAQ.
Scomposizione delle serie temporali e aggiustamenti stagionali
Spesso è utile creare una versione destagionalizzata dei dati. La scomposizione aiuta in questo. Per creare una versione destagionalizzata, sommiamo semplicemente trend e rimanente. Oppure possiamo sottrarre la componente stagionale dalla serie originale; entrambe le strade portano allo stesso risultato.
Stiamo scoprendo che non c’è una stagionalità particolarmente forte in questo dataset specifico, il che è interessante di per sé.
La forza dei dati destagionalizzati è che possono aiutarci a capire certe caratteristiche della nostra serie. Possiamo vedere, per esempio, se il trend sottostante è il risultato della stagionalità. In secondo luogo, possiamo esaminare più da vicino le occorrenze insolite nei dati. Pensiamo che la nostra promozione del venerdì abbia funzionato perché era di venerdì o perché era una promozione? Ecco, usando la scomposizione e gli aggiustamenti stagionali, possiamo testare domande del genere.
Scomposizione delle serie temporali e forecasting
Potrebbe sorprenderti sapere che la scomposizione è utile anche per il forecasting. La consideriamo in due modi principali. Primo, vogliamo capire le componenti della serie per aiutarci a decidere quale modello di previsione usare. Se vediamo una forte stagionalità, potremmo orientarci verso modelli come l’esponenziale di Holt-Winters o i metodi ETS, costruiti specificamente per gestire sia trend sia stagionalità.
In secondo luogo, possiamo anche usare i dati scomposti come parte del forecasting, il che ci dà opzioni. Possiamo, per esempio, eseguire un modello non stagionale su una versione destagionalizzata dei dati. (Possiamo reintrodurre la componente stagionale in seguito.) L’aggiustamento stagionale è particolarmente utile quando vogliamo usare modelli flessibili, come gli ARIMA standard e la regressione lineare.
Qui creiamo un semplice modello ARIMA per prevedere i dati destagionalizzati.
Possiamo anche prevedere la serie destagionalizzata e aggiungere nuovamente la componente stagionale, ottenendo di fatto una previsione stagionale. Tutto questo è stato reso possibile dalla scomposizione iniziale.
Considerazioni finali
Speriamo che il nostro articolo sulla scomposizione delle serie temporali ti sia piaciuto! Ricorda che la scomposizione è solo una parte dell’analisi delle serie temporali, quindi per diventare esperto iscriviti al nostro corso Forecasting in R con il professor Rob Hyndman, che ha contribuito a sviluppare i pacchetti R usati per le nostre visualizzazioni. Abbiamo anche un corso Visualizing Time Series Data in Python se hai trovato interessanti le idee di questo articolo ma preferisci Python, che è ottimo anche per questo tipo di lavoro.