Università di Bologna - Facoltà di Scienze Statistiche Laurea Triennale in Statistica e Ricerca Sociale Corso di Analisi di Serie Storiche e Multidimensionali Analisi delle Serie Storiche con R Francesca Marta Lilja Di Lascio dilascio@stat.unibo.it Dip.to di Scienze Statistiche P. Fortunati Università di Bologna 1
Outlines 0. Obiettivo della lezione 1. Fasi della Procedura di Box & Jenkins (2/2) 2. Preparazione del Workspace e Input dei Dati in R 3. Analisi Preliminare (14/14) 4. Identificazione del Modello (3/3) 5. Stima del Modello Selezionato (2/2) 6. Verifica del Modello Stimato (7/7) 7. Previsione dal Modello Stimato (2/2) 8. Cenni sulla Scomposizione della Serie Storica Osservata?? 2
0. Obiettivo della lezione Effettuare l analisi di una serie storica reale mediante la costruzione di un modello che riesca a cogliere l andamento nel tempo dei dati osservati e che possa essere considerato il processo generatore della serie stessa Tale analisi verrà effettuata tramite la procedura iterativa proposta da Box e Jenkins (1970), che permette di risalire al processo generatore dei dati mediante la costruzione di un modello di tipo ARIMA(p, d, q)(p, D, Q) s 3
1. Fasi della Procedura di Box & Jenkins (1/2) È una procedura iterativa che permette di trovare un modello per una serie storica reale. Trovare significa identificare, stimare e valutare la bontà di un modello per utilizzarlo per fare previsioni. Le fasi della procedura sono: 1. Analisi preliminare della serie storica mediante l esame grafico e un analisi esplorativa per poter valutare la stazionarietà (il tipo e il grado) della serie storica osservata 2. Identificazione di un modello ARIMA(p, d, q)(p, D, Q) s mediante l analisi delle funzioni di autocorrelazione globale e parziale e mediante opportuni indici (es: AIC, BIC) 4
1. Fasi della Procedura di Box & Jenkins (2/2) 3. Stima del modello scelto mediante un metodo iterativo per le stime (esatte e condizionate) di massima verosimiglianza (o dei minimi quadrati) 4. Valutazione della bontà del modello stimato mediante analisi dei residui, controllo della significatività dei coefficienti, valutazione della bontà di adattamento del modello ai dati e valutazione della capacità previsiva del modello 5. Cenni sulla scomposizione del modello accettato mediante decomposizione in trend, componente stagionale e componente irregolare. Se il modello non viene accettato allora si ritorna al punto 1. 5
2. Preparazione del Workspace e Input dei dati in R - Prendere i dati dalla rete e salvarli nella cartella temp sotto C (o in una sua sottocartella) - Aprire la workspace di R e cambiare directory andando in File Change Directory.... Controllare digitando getwd() - Caricare il file di dati mediante la funzione read.csv, cioè digitare sul prompt di R: serie < read.csv( Enel8095.csv,header=F) - Trasformare i dati in una serie storica digitando: tserie < ts(serie, start=c(1980,1), freq=1) - I dati sono relativi al consumo di energia elettrica nel periodo gennaio 1980 dicembre 1995 - Le osservazioni sono mensili - Controllo del tipo di oggetto creato: is.ts(tserie) 6
3. Analisi preliminare (1/14) Consente di formulare delle congetture a priori sulla serie ed, eventualmente, di operare trasformazioni sulla stessa in modo che soddisfi le ipotesi richieste per poter applicare la procedura di Box e Jenkins. In particolare, vogliamo che la serie possa essere considerata la realizzazione di un processo stazionario (in senso debole). Analisi grafica della serie storica osservata: plot(tserie, type= l, lwd=2, col= red, xlab= Tempo, ylab= Consumo di Energia Elettrica, main= Grafico della Serie Storica ) Ci chiediamo se è Stazionaria in Media e se il trend è lineare o quadratico è Stazionaria in Varianza ci sono Valori Anomali c è Stagionalità 7
3. Analisi preliminare (2/14) La non stazionarietà in media emerge 1. dal grafico della serie originale le possibili cause sono la presenza di una tendenza di lungo periodo e/o la stagionalità. Se la non stazionarietà è dovuta a una tendenza di lungo periodo, allora la serie presenta varianza infinita e funzione di autocovarianza non definita (comportamento simile se causata da stagionalità, ma in corrispondenza del ritardo stagionale e dei suoi multipli) 2. dall esame della funzione di autocorrelazione globale che presenta un lento decadimento verso lo zero e un comportamento lineare 8
3. Analisi preliminare (3/14) Una possibile soluzione consiste nell utilizzare l operatore differenza che definiamo mediante l operatore ritardo B d = (1 B) d dove d = 1,2 e D s = (1 B s ) D per eliminare la tendenza e la stagionalità da una serie che sia la realizzazione di un processo non stazionario omogeneo lineare (tale che il suo comportamento locale sia stazionario) Il criterio di scelta per l ordine della differenza si basa sulla seguente idea: selezione di d e D tali che min V ar( d Z t ) e min V ar( D Z t ) 9
3. Analisi preliminare (4/14) L operatore ritardo B (backshift) ha la seguente espressione BZ t = Z t 1 BZ t 1 = Z t 2 BZ t 1 = B(BZ t ) = B 2 Z t B j Z t = Z t j L operatore differenza ha la seguente espressione Z t = Z t Z t 1 = Z t BZ t = (1 B)Z t 2 Z t = (1 B) 2 Z t = (1 2B + B 2 )Z t = Z t 2Z t 1 + Z t 2 j Z t = (1 B) j Z t 10
3. Analisi preliminare (5/14) L operatore differenza stagionale viene utilizzato per rendere stazionario in media un processo stagionale dal momento che permette di sottrarre da ciascuna osservazione l osservazione relativa alla stessa stagione nell anno precedente. Ha la seguente espressione s Z t = (1 B s )Z t = Z t Z t s che generalizzata diventa: D s = (1 B s ) D 11
3. Analisi preliminare (6/14) Se applichiamo l operatore differenza (1 B) ad una serie caratterizzata da un trend lineare X t = at + b, eliminiamo una non stazionarietà dovuta ad un trend lineare: (1 B)X t = X t X t 1 = (at + b) (a(t 1) + b) = at at + a = a Se applichiamo l operatore (1 B) 2 ad una serie caratterizzata da un trend quadratico X t = at 2 +bt+c, rimuoviamo una non stazionarietà dovuta alla presenza di un trend quadratico: (1 B) 2 X t = (1 + B 2 2B)X t = X t + X t 2 2X t 1 = at 2 + bt + c + a(t 2) 2 + b(t 2) + c 2a(t 1) 2 2b(t 1) 2c = at 2 +bt+c+a(t 2 +4 4t)+bt 2b+c 2a(t 2 +1 2t) 2bt+2b 2c = at 2 + at 2 + 4a 4at 2at 2 2a + 4at = 2a 12
3. Analisi preliminare (7/14) Se applichiamo congiuntamente gli operatori (1 B) e (1 B 12 ) ad una serie caratterizzata da un trend lineare e da una stagionalità X t = at + b + c(t + 12), rimuoviamo una non stazionarietà dovuta alla presenza di un trend lineare e alla componente stagionale: (1 B 12 )(1 B)X t = (1 B 12 )(X t X t 1 ) = (1 B 12 ){at+b+c(t+12) [a(t 1)+b+c(t+11)]} = (1 B 12 )[at + b + c(t + 12) at + a b c(t + 11)] = (1 B 12 )[a + c(t + 12) c(t + 11)] = [a + c(t + 12) c(t + 11)] [a + ct c(t 1)] = a + ct + 12c ct 11c a ct + ct c = 0 13
3. Analisi preliminare (8/14) Una volta valutata, scelta e applicata la trasformazione più opportuna per la nostra serie, si effettua un analisi della serie differenziata e della funzione di autocorrelazione globale (ACF) per verificare di aver raggiunto la stazionarietà in media Si può ritenere di aver ottenuto una serie stazionaria in media se la sua funzione di autocorrelazione globale declina velocemente verso lo zero Se l acf della serie trasformata presenta un lento decadimento verso lo zero, allora la serie così trasformata non può essere ritenuta stazionaria in media; di sonseguenza non è possibile identificare un modello ARIMA per quella serie e bisogna ri analizzare il grafico della serie originaria 14
3. Analisi preliminare (9/14) La non stazionarietà in varianza puo essere identificata mediante un attenta osservazionme del grafico della serie originaria Concettualmente la non stazionarietà in varianza è caratterizzata da oscillazioni di ampiezza irregolare lungo l asse temporale È prassi utilizzare le seguenti trasformazioni di Box Cox (1964) per rendere la serie stazionaria in varianza: x λ 1 t λ 0 λ z t (λ) = log x t λ = 0 che assume che la deviazione standard abbia il seguente legame con la media: σ = kµ 1 λ La più utilizzata è la trasformazione logaritmica (λ = 0); altre trasformazioni comuni sono con λ = 1 2 (radice quadrata), λ = 1 (radice cubica) e con λ = 1 3 (trasformazione inversa) 15
3. Analisi preliminare (10/14) Guardando il grafico della serie storica reale da analizzare bisogna rispondere alle seguenti domande per valutare quali sono le opportune trasformazioni da applicare per renderla stazionaria. 1. È stazionario in media? Trasformiamo la serie storica mediante l operatore differenza (1 B) d? Che valore diamo a d? 2. È stazionario in varianza? Trasformiamo la serie ottenuta mediante la funzione di Box Cox? 3. Presenta una componente stagionale? Trasformiamo la serie storica mediante l operatore differenza (1 B s ) D? 4. Presenta valori anomali? 16
3. Analisi preliminare (11/14) La serie storica del consumo di elettricità registrato dal 1985 al 1990 risulta Non stazionaria in media dal momento che presenta un trend lineare Applichiamo l operatore (1 B) con d = 1 Stazionaria in varianza Non applichiamo alcuna delle trasformazioni di Box Cox Con una componente stagionale di ordine D = 1 con cadenza annuale Applichiamo l operatore (1 B 12 ) 17
3. Analisi preliminare (12/14) Eliminiamo il trend lineare per mezzo della funzione diff, specificando l ordine dell operatore differenza e il lag al quale vogliamo calcolare le differenze: tserie.diff < diff(tserie, lag=1, differences=1) plot(tserie.diff, type= l, lwd=2, col= blue, main= Grafico delle Differenze Prime ) Eliminiamo la componente stagionale usando la funzione diff con l appropriato valore dell argomento lag : tserie.diff.st < diff(tserie, lag=12, differences=1) plot(tserie.diff.st, type= l, lwd=2, col= blue, main= Grafico delle Differenze Stagionali ) 18
3. Analisi preliminare (13/14) Dal momento che tale trasformazione non è sufficiente a rendere la serie stazionaria in media, allora calcoliamo le differenze stagionali della serie ottenuta al primo passo, cioè sulla serie detrendizzata in modo da eliminare la non stazionarietá in media dovuta sia all andamento lineare che alla stagionalità: tserie.diff.pst < diff(tserie.diff, lag=12, differences=1) (tserie.diff.pst < diff(diff(tserie), lag=12, differences=1)) plot(tserie.diff.pst, type= l, lwd=2, col= black, main= Grafico della Differenze Prime Stagionali ) 19
3. Analisi preliminare (14/14) Per verificare la stazionarietà (debole) della serie trasformata bisogna analizzare la sua funzione di autocorrelazione globale: par(mfrow=c(2,2)) acf(tserie.diff, lag.max=25, main= ACF della Serie delle Diff Prime ) acf(tserie.diff.st, main= ACF della Serie delle Diff Stagionali ) acf(tserie.diff.pst, main= ACF della Serie Resa Stazionaria ) Confrontare l andamento dell acf della serie resa stazionaria e quello della serie originaria: par(mfrow=c(1,2)) acf(tserie, main= ACF della Serie Originaria ) acf(tserie.diff.pst, main= ACF della Serie Resa Stazionaria ) 20
3. Identificazione del modello (1/3) Viene eseguita osservando ed analizzando il grafico di autocorrelazione globale e quello di autocorrelazione parziale (stimate) della serie storica resa stazionaria - par(mfrow=c(1,2)) - acf(tserie.diff.pst, lag.max=25, lwd=2, col= red, main= ACF della Serie resa Stazionaria ) - pacf(tserie.diff.pst, lag.max=25, lwd=2, col= red, main= PACF della Serie resa Stazionaria ) 21
3. Identificazione del Modello (2/3) Il confronto tra i due grafici generati e i corrispondenti grafici acf e pacf dei modelli teorici studiati suggerisce di stimare un particolare modello ARIMA(p, d, q)(p, D, Q) s, che, riprendendo la formula generale, ha la seguente espressione Φ P (B s )φ p (B)(1 B s ) D (1 B) d X t = Θ Q (B s )θ q (B)a t dove p è l ordine del polinomio autoregressivo, d il grado delle differenze regolari, q l ordine del polinomio media mobile, mentre P,D e Q sono relativi alla componente stagionale. Quali valori bisogna assegnare ai parametri d, D, p, P, q, Q ed s? Dall analisi preliminare compiuta sappiamo che d = D = 1 ed s = 12 mentre il grado dei quattro polinomi definenti un ARIMA vengono stabiliti dall analisi dell acf e della pacf 22
3. Identificazione del Modello (3/3) Se l analisi dell acf e del pacf suggerisce più di un possibile modello come si agisce? Ci sono dei criteri per la selezione dei modelli 1. AIC (Criterio di Informazione di Akaike, 1974) AIC(k) = nlog(ˆσ 2 k) + 2k k = 0,1,2... dove k è il numero di parametri del modello e ˆσ k 2 dei residui la corrispondente varianza 2. BIC (Criterio di informazione Bayesiano, 1978) ( ) nˆσ 2 BIC(k) = (n k)log k + k log n k [ n(ˆσ 2 0 ˆσ k 2) ] basato sulla riduzione di ˆσ 2 k rispetto alla varianza della serie osservata ˆσ2 0 Il modello da selezionare è quello a cui corrisponde l indice AIC e/o il BIC più basso. k 23