Metodo analitico

L’approccio più semplice della decomposizione classica è basata sul modello di tipo additivo:
Yt= Tt + St + εt
con εt ~ NID (0,σ2) ovvero supponendo che gli errori siano distribuiti normalmente con media zero e varianza costante e siano tra loro indipendenti. Tali ipotesi saranno verificate tramite appositi tests di specificazione del modello. R consente di determinare e stimare tali componenti con tre diverse funzioni: decompose() e stl() nel package stats, tsr() nel package ast.

 

Funzione decompose

La funzione decompose() può essere applicata sia al modello additivo che al modello moltiplicativo, per questo occorre specificarlo nel parametro type=c(“additive”, “multiplicative”).

> dec.fit<-decompose(xt,type="additive")

La funzione restituisce un oggetto con le seguenti componenti:

• seasonal, vettore con la stagionalità

• figure, stima della componente stagionale per i dodici mesi dell’anno

• trend, vettore con il trend della serie

• random, vettore con gli errori.

Si memorizzino in alcuni vettori le tre componenti ottenute:

> stag.dec<-dec.fit$seasonal
> trend.dec<-dec.fit$trend
> res.dec<-dec.fit$random

Per ottenere il grafico della decomposizione della serie:

> plot(dec.fit)

 

Funzione stl()

La funzione stl() fornisce delle stime migliori in quanto per la decomposizione usa il metodo loess:

> stl.fit<-stl(xt,s.window="periodic")
> attributes(stl.fit)
$names
[1] "time.series" "weights"     "call"        "win"         "deg"        "jump"        "inner"       "outer"

$class
[1] "stl"

La funzione restituisce un oggetto le cui componenti possono essere memorizzate in vettori

> stag.stl<-stl.fit$time.series[,1]
> trend.stl<-stl.fit$time.series[,2]
> res.stl<-stl.fit$time.series[,3]

Il grafico della serie storica decomposta è il seguente

> plot(stl.fit,main="GRAFICO DELLA SERIE STORICA DECOMPOSTA- funzione stl")

 

Funzione tsr()

Si tratta di un’ulteriore funzione per la decomposizione di una serie temporale. Gli stimatori, detti smoothers, riconosciuti sono:

• constant: la serie assume valore uguale alla media;

• poly(r): la serie viene interpolata con un polinomio di grado r;

• loess(r, g): la serie viene stimata utilizzando una regressione locale di tipo loess;

• gauss(r, g): la serie viene stimata utilizzando una regressione locale con pesi gaussiani;

• spline(g): la serie osservata è stimata utilizzando una spline con g parametri equivalenti.

> tsr.fit<-tsr(xt~poly(1)+c)

Per avere una visualizzazione grafica del modello stimato:

> plot(tsr.fit)

Si valuti il grado di adattamento di questo tipo di trend tracciando il grafico della serie filtrata sovrapposto al trend stimato con tsr():

> plot(xt.filt)
> lines(trend(tsr.fit),col="red")

Come si può facilmente vedere l’adattamento non è particolarmente buono e ciò induce all’utilizzo di un altro tipo di stimatore, ad esempio di tipo loess:

> tsr2.fit<-tsr(xt~loess(1,10)+c)
> plot(tsr2.fit)

Si valuti il grado di adattamento:

> plot(xt.filt)
> lines(trend(tsr2.fit),col="blue")

Il risultato è decisamente migliore. Per determinare il numero dei parametri spesso si deve procedere per tentativi, ma in generale aumentando il numero dei parametri equivalenti il grado di adattamento migliora.
Si confrontino i trend stimati con i tre metodi:

> plot(trend(tsr2.fit),main="COMPARAZIONE DEL TREND STIMATO")
> lines(xt.filt,col="red")
> lines(trend.stl,col="green")

Si proceda alla memorizzazione delle componenti risultanti dalla funzione tsr() in tre vettori distinti

> trend.tsr<-trend(tsr2.fit)
> stag.tsr<-seasonal(tsr2.fit)
> res.tsr<-residuals(tsr2.fit)

 

 

 

 

 

 

 

 

 

 

 

 

 

Commenti

commenti