Perché la funzione stl offre significative variazioni stagionali con dati casuali


11

Ho tracciato con il seguente codice con la funzione stl (Decomposizione stagionale di serie storiche di Loess):

plot(stl(ts(rnorm(144), frequency=12), s.window="periodic"))

Mostra significative variazioni stagionali con dati casuali inseriti nel codice sopra (funzione rnorm). Variazioni significative si vedono ogni volta che si esegue, sebbene lo schema sia diverso. Di seguito sono mostrati due di questi schemi:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Come possiamo fare affidamento sulla funzione stl su alcuni dati quando mostra variazioni stagionali. Questa variazione stagionale deve essere vista alla luce di altri parametri? Grazie per la tua comprensione.

Il codice è stato preso da questa pagina: si tratta di un metodo appropriato per testare gli effetti stagionali nei dati sul numero dei suicidi?


1
Ciò accade perché ci sono "schemi" in dati casuali, se la tua tecnica di adattamento ha parametri sufficienti.
bill_080,

3
Il termine "significativo" qui non sembra riflettere alcun tipo di test di significatività.
Nick Cox,

1
Stl è un metodo basato sui dati non parametrici, quindi non è possibile quantificare l'assenza di incertezze stagionali tramite test di significatività.
previsioni

Risposte:


12

La decomposizione del loess ha lo scopo di appianare la serie applicando le medie ai dati in modo che collassino in componenti, ad esempio il trend o la stagione, che sono interessanti per l'analisi dei dati. Ma questa metodologia non ha lo scopo di fare un test formale per la presenza di stagionalità .

Sebbene nel tuo esempio stlrestituisca un modello regolare di periodicità stagionale, questo modello non è rilevante per spiegare le dinamiche della serie. Per vederlo, possiamo confrontare la varianza di ciascun componente rispetto alla varianza della serie originale.

set.seed(123)
x <- ts(rnorm(144, sd=1), frequency=12)
a <- stl(x, s.window="periodic")
apply(a$time.series, 2, var) / var(x)
#   seasonal      trend  remainder 
# 0.07080362 0.07487838 0.81647852 

Possiamo vedere che è il resto ciò che spiega la maggior parte della varianza nei dati (come ci aspetteremmo per un processo di rumore bianco).

Se prendiamo una serie con stagionalità, la varianza relativa della componente stagionale è molto più rilevante (anche se non abbiamo un modo semplice per testarla poiché loess non è parametrico).

y <- diff(log(AirPassengers))
b <- stl(y, s.window="periodic")
apply(b$time.series, 2, var) / var(y)
#    seasonal       trend   remainder 
# 0.875463620 0.001959407 0.117832537 

Le variazioni relative indicano che la stagionalità è il componente principale che spiega le dinamiche della serie.


Uno sguardo incurante della trama stlpuò essere ingannevole. Il bel modello restituito stlpuò farci pensare che un modello stagionale rilevante possa essere identificato nei dati, ma uno sguardo più attento può rivelare che non è effettivamente il caso. Se lo scopo è decidere la presenza della stagionalità, la decomposizione dei loess può essere utile come vista preliminare, ma dovrebbe essere integrata con altri strumenti.


Nell'esempio dei tuoi AirPassengers, non c'è alcuna tendenza in arrivo, mentre c'è una chiara tendenza sulla trama (AirPassengers). La tendenza arriva a 0,86 (con stagionale di soli 0,1) se viene rimossa la dichiarazione "diff (log (AirPassengers))". Cosa dovrebbe essere fatto?
anche il

Ho dato un esempio numericamente chiaro. In pratica, solo confrontando la varianza dei componenti levigati potrebbe non essere sufficiente per giungere a una conclusione sulla presenza della stagionalità. Ad esempio, come si è riscontrato in questo caso, se la tendenza non viene rimossa prendendo le differenze, la varianza della tendenza domina la varianza della componente stagionale. La domanda è: una varianza relativa di 0,1 è abbastanza grande da considerare rilevante questo componente? Il problema è che, sulla base di loess, non esiste un modo semplice per verificare se la varianza del componente è significativa.
javlacalle,

Come ho detto, ciò che dovremmo fare in questo e in altri casi è usare altri metodi per verificare la presenza di stagionalità. Vedi ad esempio la seconda parte della mia risposta qui . Una volta concluso che la stagionalità è presente nei dati, possiamo usare loess per ottenere lo schema di questo componente.
javlacalle,

Solo per maggiori chiarimenti, in che modo la varianza relativa mostra quanto una parte della decomposizione gioca nei dati complessivi? IE 70% stagionale, tendenza 20%. ecc.
Ted Mosby,

1
@TedMosby La varianza è una misura della variabilità / dispersione nei dati. La somma delle varianze dei componenti (ad esempio, tendenza, stagionale) e la varianza del resto si sommano alla varianza delle serie originali. In questo modo, confrontando la varianza di un componente con la varianza della serie originale, possiamo avere un'idea di quanto sia rilevante il componente (ovvero, quanto della variabilità nei dati è spiegata dal componente).
javlacalle,

2

Allo stesso modo, ho visto l'utilizzo dei modelli di Fourier in dati non stagionali, forzando una struttura stagionale nei valori di adattamento e previsione, causando un risultato simile (sussulto!). Il montaggio di un modello presunto fornisce all'utente ciò che sta imponendo / presumendo che non è sempre ciò che una buona analisi suggerirebbe / consegnerebbe.


1
stl()non si basa su idee di Fourier. Anche se devo ancora vedere qualcuno che sostiene l'analisi "insensata", nota che qualsiasi famiglia di modelli adattata potrebbe essere considerata come imposta o presunta. La domanda è: fino a che punto qualsiasi procedura offre agli utenti la possibilità di capire se e come funziona male per un determinato set di dati.
Nick Cox,

@NickCox abbastanza vero ....
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.