Anda di halaman 1dari 32

Analise de Series Temporais

Departamento de Estatstica
Instituto de Ciencias Exatas
Universidade Federal de Minas Gerais
Professor Ralph S. Silva
Endereco eletronico: ralph@est.ufmg.br
Stio eletronico: http://www.est.ufmg.br/ralph/seriestemporais/

Ementa:
Introducao a Teoria de Series Temporais
Media, Covariancia e Correlacao
Processos Estacionarios e Rudo Branco
(WN: White Noise)
Processos Autoregressivos de Ordem p - AR(p)
(AR: Auto-Regressive)
Processos Medias Moveis de Ordem q - MA(q)
(MA: Moving Average)
Modelos Autoregressivos e Medias Moveis - ARMA(p, q)
Modelos ARIMA(p, d, q)
(ARIMA: Autoregressive Integrated Moving Average)
Estimacao, Analise e Identificacao dos Modelos
Previsao com os Modelos ARIMA(p, d, q)
Modelos Sazonais
Metodos Automaticos de Previsao
Funcao de Tranferencia e Modelos Lineares Dinamicos

1
Bibliografia:
Introduction to Time Series and Forecasting (2nd Ed.); Peter
J. Brockwell and Ricahrd A. Davis.
Analise de Series Temporais; Pedro A. Morettin e Clelia M.C.
Toloi.
Time Series Analysis; James D. Hamilton.
The Analysis of Time Series: An Introduction (6th Ed.); Chris
Chatfield.
Time Series Analysis: Forecasting and Control; George E. P.
Box, Gwilym M. Jenkins and Gregory C. Reinsel.
Time Series Analysis: Univariate and Multivariate Methods
(2nd Ed.); William W. S. Wei.
Introduction to Time Series Analysis and Forecasting; Douglas
C. Montgomery, Cheryl L. Jennings and Murat Kulahci.
Applied Bayesian Forecasting and Time Series Analysis; Andy
Pole, Mike West and Jeff Harrison.
Bayesian Forecasting and Dynamic Models; Mike West and Jeff
Harrison.
Time Series Analysis and Its Applications: With R Examples;
Robert H. Shumway and David S. Stoffer.

2
Programa R:

http://www.r-project.org/

# =============================================================================
#
# Ralph S. Silva
# Departamento de Estatstica
# Instituto de Ci^
encias Exatas
# Universidade Federal de Minas Gerais - Brasil
#
# ralph (_at_) est.ufmg.br
#
# =============================================================================
# Remember that you can use "=" instead of "<-"
# Lembre-se que voc^
e pode usar o "=" ao inv^
es de "<-"

# Where are the data files?


# Onde encontrar os arquivos de dados?
pathdata <- "./dados/"

# Where should the plots in PDF and PS be saved?


# Onde salvar os graficos em PDF e PS?
# PDF: Portable Document Format
# PS: Postscript
pathfig <- "./figuras/"

3
Exemplo 1: Venda Mensal de Vinho Tinto Australiano

3.0

2.5







Milhares de Litros

2.0










1.5











1.0












0.5

1980 1982 1984 1986 1988 1990 1992


Ms

Tendencia crescente; sazonalidade; altas em julho (inverno); baixas em janeiro (verao).

# -----------------------------------------------------------------------------
# Example 001 - Australian red wine sales, 1980-1991
# Exemplo 001 - Vendas de vinho tinto australiano, 1980-1991
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"wine.txt",sep=""))/1000,frequency=12,
start=c(1980,1))

#pdf(paste(pathfig,"wine_series.pdf",sep=""))
#postscript(paste(pathfig,"wine_series.ps",sep=""))
#png(paste(pathfig,"wine_series.png",sep=""))
#jpeg(paste(pathfig,"wine_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(10,5,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="M^
es",ylab="Milhares de Litros")
points(y,pch=16,cex=1.5)
#dev.off()

rm(list="y")

4
Exemplo 2: Numero de Mortes Mensais por Acidente nos EUA

11



10


Milhares de Mortes







9

1973 1974 1975 1976 1977 1978 1979


Ms

Sazonalidade; altas em julho; baixas em fevereiro.

# -----------------------------------------------------------------------------
# Example 002 - Accidental deaths - U.S.A., 1973-1978
# Exemplo 002 - Mortes por acidente nos EUA, 1973-1978
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"deaths.txt",sep=""))/1000,frequency=12,
start=c(1973,1))

#pdf(paste(pathfig,"deaths_series.pdf",sep=""))
#postscript(paste(pathfig,"deaths_series.ps",sep=""))
#png(paste(pathfig,"deaths_series.png",sep=""))
#jpeg(paste(pathfig,"deaths_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(5,5,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="M^
es",ylab="Milhares de Mortes")
points(y,pch=16,cex=1.5)
#dev.off()

rm(list="y")

5
Exemplo 3: Problema de Deteccao de Sinal

1



Sinal e Rudo














0











1

0 5 10 15 20
Tempo

# -----------------------------------------------------------------------------
# Example 003 - Signal dectection problem
# Exemplo 003 - Problema de detecc~
ao de sinal
# y_t = cos( t / 10 ) + noise_t, t=1,...,T
# -----------------------------------------------------------------------------
set.seed(5408)
T <- 200
t <- seq(1,T,1)/10
signal <- cos(t)
mu <- 0
sigma <- 0.5
noise <- rnorm(t,mu,sigma) # normal( mu, sigma^2 )
y <- signal + noise
#pdf(paste(pathfig,"signal_series.pdf",sep=""))
#postscript(paste(pathfig,"signal_series.ps",sep=""))
#png(paste(pathfig,"signal_series.png",sep=""))
#jpeg(paste(pathfig,"signal_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(5,5,5),
mar=c(4,5,2,2),xpd=T)
plot(t,y,lwd=2,xlab="Tempo",ylab="Sinal e Rudo",pch=16,cex=1.5,ylim=c(-2.5,2.5))
lines(t,signal,lwd=2)
#dev.off()

rm(list=c("mu","sigma","t","T","y","noise","signal"))

6
Exemplo 4: Populacao dos EUA, 1790-1990

100 120 140 160 180 200 220 240


Milhes de Habitantes



80



60


40




20

1800 1820 1840 1860 1880 1900 1920 1940 1960 1980

Ano

# -----------------------------------------------------------------------------
# Exemplo 004 - Population of the U.S.A., 1790-1990
# Exemplo 004 - Populac~
ao dos EUA, 1790-1990
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"uspop.txt",sep=""))/10^6,start=1790,deltat=10)

#pdf(paste(pathfig,"uspop_series.pdf",sep=""))
#postscript(paste(pathfig,"uspop_series.ps",sep=""))
#png(paste(pathfig,"uspop_series.png",sep=""))
#jpeg(paste(pathfig,"uspop_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1,cex.axis=1,lab=c(10,10,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="Ano",ylab="Milh~
oes de Habitantes")
points(y,pch=16,cex=1.5)
#dev.off()

rm(list="y")

7
Exemplo 5: Numero de Greves por Ano nos EUA, 1951-1980

6.0

5.5

Milhares de Greves

5.0




4.5




4.0






3.5

1950 1956 1962 1968 1974 1980


Ano

# -----------------------------------------------------------------------------
# Example 005 - Number of strikes per year in the U.S.A., 1951-1980
# Exemplo 005 - Numero de greves por ano nos EUA, 1951-1980
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"strikes.txt",sep=""))/1000,start=1951,
deltat=1)

#pdf(paste(pathfig,"strikes_series.pdf",sep=""))
#postscript(paste(pathfig,"strikes_series.ps",sep=""))
#png(paste(pathfig,"strikes_series.png",sep=""))
#jpeg(paste(pathfig,"strikes_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(15,6,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="Ano",ylab="Milhares de Greves")
points(y,pch=16,cex=1.5)
#dev.off()

rm(list="y")

8
Exemplo 6: Serie Rudo Branco

4
3
2
Valor Observado
1
0
1
2
3
4

0 1500 3000 4500 6000 7500 9000


Tempo

# -----------------------------------------------------------------------------
# Example 006 - i.i.d. noise
# Exemplo 006 - Rudo i.i.d. (independente e identicamente distribudos)
# -----------------------------------------------------------------------------
set.seed(5408)
mu <- 0
sigma <- 1
y <- ts(rnorm(10000,0,1),start=1,frequency=1)
#pdf(paste(pathfig,"WN_series.pdf",sep=""))
#postscript(paste(pathfig,"WN_series.ps",sep=""))
#png(paste(pathfig,"WN_series.png",sep=""))
#jpeg(paste(pathfig,"WN_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(15,6,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="Tempo",ylab="Valor Observado",ylim=c(-4,4))
#dev.off()

rm(list=c("mu","sigma","y"))

9
Exemplo 7: Passeio Aleatorio

20
10
Valor Observado
0
10
20

0 100 250 400 550 700 850 1000


Tempo

E obtido pela soma acumulada de variaveis aleatorias Xt WN(0, 2 ) com 2 < .

S0 = 0 e St = X1 + X2 + + Xt = St1 + Xt , para t = 1, 2, . . .

# -----------------------------------------------------------------------------
# Example 007 - random walk
# Exemplo 007 - passeio aleatorio
# -----------------------------------------------------------------------------
set.seed(5408)
n <- 1000
x <- c(0,rnorm(n-1,0,1))
y <- ts(cumsum(x),start=1,frequency=1)
#pdf(paste(pathfig,"RW_series.pdf",sep=""))
#postscript(paste(pathfig,"RW_series.ps",sep=""))
#png(paste(pathfig,"RW_series.png",sep=""))
#jpeg(paste(pathfig,"RW_series.jpg",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(15,6,5),
mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="Tempo",ylab="Valor Observado")
#ts.plot(x,lwd=2,xlab="Tempo",ylab="Valor Observado")
#dev.off()

rm(list="y")

10
Modelos com tendencia

100 120 140 160 180 200 220 240


Milhes de Habitantes



80



60


40




20

1800 1820 1840 1860 1880 1900 1920 1940 1960 1980

Ano

Figura 1: Populacao dos EUA.

Apresenta uma tendencia quadratica; e

Nao apresenta nenhuma sazonalidade aparente.

Entao podemos sugerir um modelo da forma:

Xt = mt + t

t : E um rudo branco.
mt : E uma funcao com mudancas suaves.

Para o exemplo acima, podemos sugerir que

mt = 0 + 1 t + 2 t2

e estimar os parametros 0 , 1 e 2 por mnimos quadrados.

11
Usando o programa R:

# =============================================================================
pathdata <- "./dados/"
pathfig <- "./figuras/"
# -----------------------------------------------------------------------------
# Exemplo tend^
encia - Populac~ ao dos EUA, 1790-1990
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"uspop.txt",sep="")),start=1790,deltat=10)
#pdf(paste(pathfig,"uspop_series_2.pdf",sep=""))
#postscript(paste(pathfig,"uspop_series_2.ps",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1,cex.axis=1,lab=c(10,10,5),
mar=c(4,5,2,2),xpd=T)
plot(y/10^6,lwd=2,xlab="Ano",ylab="Milh~ oes de Habitantes")
points(y/10^6,pch=16,cex=1.5)
t <- seq(1,length(y),1)
t2 <- t^2
regy <- lm(y ~ t + t2 )
summary(regy)
#==============================================================
#Call: (Aqui mostra o resultado dado pelo programa R)
#lm(formula = y ~ t + t2)
#
#Residuals:
# Min 1Q Median 3Q Max
#-6947521 -358167 436285 1481410 3391761
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 6957920 1998526 3.482 0.00266 **
#t -2159870 418437 -5.162 6.55e-05 ***
#t2 650634 18472 35.223 < 2e-16 ***
#---
#Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
#
#Residual standard error: 2767000 on 18 degrees of freedom
#Multiple R-squared: 0.9989, Adjusted R-squared: 0.9988
#F-statistic: 8050 on 2 and 18 DF, p-value: < 2.2e-16
#==============================================================
yfitted <- ts(regy$fitted,start=1790,deltat=10)
lines(yfitted/10^6,lty=2)
#dev.off()

rm(list=c("y","regy","t","t2","yfitted"))

12
Exemplo: Nvel do Lago Huron

12.0



11.0




10.0




9.5




9.0
Nvel



8.5



8.0


7.5



7.0



6.5


6.0

1880 1890 1900 1910 1920 1930 1940 1950 1960 1970

Ano

# -----------------------------------------------------------------------------
# Exemplo tend^
encia - Nvel do Lago Huron, 1875-1972
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"lake.txt",sep="")),start=1875,frequency=1)

#pdf(paste(pathfig,"lake_series.pdf",sep=""))
#postscript(paste(pathfig,"lake_series.ps",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1,cex.axis=1,lab=c(10,10,5),mar=c(4,5,2,2),xpd=T)
plot(y,lwd=2,xlab="Ano",ylab="Nvel")
points(y,pch=16,cex=1.5)
t <- seq(1,length(y),1)
regy <- lm(y ~ t)
summary(regy)
yfitted <- ts(regy$fitted,start=1875,frequency=1)
yresid <- ts(regy$res,start=1875,frequency=1)
lines(yfitted,lty=2)
#dev.off()

#pdf(paste(pathfig,"lake_series_res.pdf",sep=""))
#postscript(paste(pathfig,"lake_series_res.ps",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1,cex.axis=1,lab=c(10,10,5),mar=c(4,5,2,2),xpd=T)
plot(yresid,lwd=2,xlab="Ano",ylab="Resduos")
points(yresid,pch=16,cex=1.5)
lines(seq(1871,1975),rep(0,105),cex=1.5,lty=2)
#dev.off()

rm(list=c("y","regy","t","yfitted","yresid"))

13
#==============================================================
#Call:
#lm(formula = y ~ t)
#
#Residuals:
# Min 1Q Median 3Q Max
#-2.509970 -0.727260 0.000829 0.744024 2.535650
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 10.202037 0.230111 44.335 < 2e-16 ***
#t -0.024201 0.004036 -5.996 3.55e-08 ***
#---
#Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
#
#Residual standard error: 1.13 on 96 degrees of freedom
#Multiple R-squared: 0.2725, Adjusted R-squared: 0.2649
#F-statistic: 35.95 on 1 and 96 DF, p-value: 3.545e-08
#==============================================================
2.5


2.0




1.5





1.0





0.5




Resduos



0.0





0.5






1.0





1.5



2.0



2.5

1880 1890 1900 1910 1920 1930 1940 1950 1960 1970

Ano

Figura 2: Resduos da regressao linear para os dados do lago Huron.

14
Modelos com sazonalidade

Em geral, podemos pensar num modelo da forma:

X t = s t + t

t : E um rudo branco.

st : E uma funcao periodica de t com perodo d (std = st ).

Uma escolha conveniente e dada pela regressao harmonica:


k
X
s t = 0 + [j cos(j t) + j sin(j t)]
j=1

onde

0 , j e j , para j = 1, . . . , k, sao parametros desconhecidos;

j , para j = 1, . . . , k, sao frequencias fixas, cada uma sendo um multiplo inteiro de d.

Exemplo: Numero de mortes por acidentes.

Numero de observacoes: n = 72;

Observacoes mensais;

Numero de harmonicos: k = 2; e

Perodo: d = 12.

Entao, 1 = 2/12 e 2 = 2/6.

Assim, podemos construir variaveis auxiliares da seguinte forma:

x1t = cos(1 t);

x2t = sen(1 t);

x3t = cos(2 t); e

x4t = sen(2 t)

para t = 1, . . . , 72.

Finalmente, podemos ajustar um modelo de regressao por mnimos quadraddos.

15
# -----------------------------------------------------------------------------
# Exemplo sazonalidade - Mortes por acidente nos EUA, 1973-1978
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"deaths.txt",sep=""))/1000,
frequency=12,start=c(1973,1))

omega1 <- 2*pi/12


omega2 <- omega1*2 # 2*pi/6
t <- seq(1,length(y),1)
x1 <- cos(omega1*t)
x2 <- sin(omega1*t)
x3 <- cos(omega2*t)
x4 <- sin(omega2*t)
regy <- lm(y ~ x1 + x2 + x3 + x4)
summary(regy)
yfitted <- ts(regy$fitted,frequency=12,start=c(1973,1))
yresid <- ts(regy$res,frequency=12,start=c(1973,1))
#pdf(paste(pathfig,"deaths_series_fitted.pdf",sep=""))
#postscript(paste(pathfig,"deaths_series_fitted.ps",sep=""))
par(mfrow=c(1,1),lwd=2,cex.lab=1,cex.axis=1,lab=c(10,10,5),mar=c(4,5,2,2),xpd=T)
plot(yfitted,lwd=2,xlab="Ano",ylab="Milhares",ylim=c(6.5,11.5))
points(y,pch=16,cex=1.5)
#dev.off()
#==============================================================
#Call:
#lm(formula = y ~ x1 + x2 + x3 + x4)
#
#Residuals:
# Min 1Q Median 3Q Max
#-1.053100 -0.375776 0.007304 0.342565 1.261184
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 8.78774 0.06628 132.579 < 2e-16 ***
#x1 -0.73404 0.09374 -7.831 4.86e-11 ***
#x2 -0.71164 0.09374 -7.592 1.31e-10 ***
#x3 0.40928 0.09374 4.366 4.49e-05 ***
#x4 0.09916 0.09374 1.058 0.294
#---
#Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
#
#Residual standard error: 0.5624 on 67 degrees of freedom
#Multiple R-squared: 0.675, Adjusted R-squared: 0.6556
#F-statistic: 34.78 on 4 and 67 DF, p-value: 1.053e-15
#==============================================================

16
11.5

11.0


10.5

10.0





9.5



Milhares


9.0





8.5




8.0





7.5



7.0


6.5

1973.0 1974.0 1975.0 1976.0 1977.0 1978.0 1979.0

Ano

Figura 3: A componente harmonica estimada para o Numero de Mortes por Acidentes.

Abordagem geral para modelagem de series temporais


Examinar as principais de uma series temporal atraves de seu grafico :
tendencia;
sazonalidade;
qualquer mudanca brusca no comportamento; e
qualquer valor aberrante (outilier ).
Remover possveis tendencias e sazonalidadepara obter uma serie estacionaria dos
resduos.

Transformar os dados se necessario (log(y) ou y).
As componentes de tendencia e sazonalidade podem ser removidas por diferenciacao,
por exemplo substituindo a serie {Xt } por {Yt = Xt Xtd } para algum inteiro positivo
d.
O objetivo e sempre obter uma serie estacionaria.
Escolher um (ou varios) modelo(s) para ajustar a serie temporal (estacionaria).
Previsao (primeiro para a serie estacionaria, depois transformar).

17
Modelos estacionarios e a funcao de autocorrelacao
De maneira simples, uma serie temporal {Xt , t = 0, 1, 2, . . .} e dita ser estacionaria
se esta tiver propriedades similares a serie defasada {Xt+h , t = 0, 1, 2, . . .}, para cada
h.

Vamos nos concentrar nos momentos de primeira e segunda ordens de {Xt }.

Definicao 1 Seja {Xt } uma serie temporal tal que E(Xt ) < . A funcao media de {Xt } e

X (t) = E(Xt ).

A funcao covariancia de {Xt } e

X (r, s) = cov(Xr , Xs ) = E [(Xr X (r))(Xs X (s))]

para todos os inteiros r e s.

Definicao 2 Dizemos que {Xt } e uma serie temporal (fracamente) estacionaria se

1. X (t) e independente de t, e

2. X (t + h, t) e independente de t para cada h.

Observacoes:

Uma serie temporal {Xt , t = 0, 1, 2, . . .} e estritamente estacionaria se (X1 , . . . , Xn )


e (X1+h , . . . , Xn+h ) tem a mesma distribuicao conjunta para todos os inteiros h e n > 0.
Logo, se {Xt } e estritamente estacionaria com E(Xt ) < para todo t, entao {Xt }
tambem e fracamente estacionaria.

Sempre que usarmos o termo funcao de covariancia com referencia a uma serie temporal
estacionaria {Xt }, estaremos nos referindo na verdade a funcao de X , de uma variavel,
definida por
X (h) , X (0, h) = X (t + h, t).
X (.) sera chamada de funcao de autocovariancia e X (h) como seu valor na defasagem
h.

18
Definicao 3 Seja {Xt } uma serie temporal estacionaria.

A funcao de autocovariancia (ACVF) de {Xt } na defasagem h e

X (h) = cov(Xt+h , Xt ).

A funcao de autocorrelacao (ACF) de {Xt } na defasagem h e

X (h)
X (h) , = cor(Xt+h , Xt ).
X (0)

Exemplo: rudo iid

Se {Xt } e uma serie temporal rudo iid tal que E(Xt2 ) = 2 < , entao

1. E(Xt ) = 0 para todo t; e


 2
, se h = 0;
2. X (h) =
0, se h 6= 0,

nao dependem de t. Logo, {Xt } e estacionaria.

Notacao: Xt IID(0, 2 ).

Exemplo: rudo branco (white noise)

Se {Xt } e uma sequencia de variaveis aleatorias nao correlacionadas, cada uma com media
0 e variancia 2 , entao claramente {Xt } e estacionaria com mesma funcao de autocovariancia
do exemplo anterior. Esta sequencia e chamada de rudo branco.

Notacao: Xt RB(0, 2 ) ou Xt WN(0, 2 ).

Exemplo: Passeio aleatorio

Se {St } e um passeio aleatorio, entao E(St ) = 0 e E(St2 ) = 2 t < para todo t e para
h>0

E(St ) = E(S0 ) + E(X1 ) + + E(Xt ) = 0 + 0 + + 0 = 0


e
S (h) = cov(St+h , St ) = cov(St + Xt+1 + + Xt+h , St ) = cov(St , St ) = t 2 .
Como S (h) depende de t, a serie temporal {St } nao e estacionaria.

19
Exemplo: Processo MA(1)

Considere o modelo definido por

Xt = t1 + t , t = 0, 1, 2, . . .

sendo t WN(0, 2 ) e um valor real. Entao,

E(Xt ) = E(t1 + t ) = E(t1 ) + E(t ) = 0;

E(Xt2 ) = E((t1 + t )2 ) = 2 E(2t1 ) + 2E(t1 t ) + E(2t ) = 2 + 0 + 2 = 2 (1 + 2 );


2
(1 + 2 ), se h = 0;
X (h) = 2 , se h = 1;
0, se |h| > 1,

pois X (1) = cov(Xt , Xt+1 ) = cov(t1 + t , t + t+1 ) = cov(t , t ) = 2 .

Todos os requisitos da defincao 2 sao satisfeitos, portanto {Xt } e estacionaria.



1, se h = 0;
2
A funcao de autocorrelacao e X (h) = /(1 + ), se h = 1;
0, se |h| > 1.

Exemplo: Processo AR(1)

Desta vez, vamos assumir que {Xt } e uma serie estacionaria satisfazendo a equacao

Xt = Xt1 + t , t = 0, 1, 2, . . .

sendo t WN(0, 2 ), || < 1 e t nao correlacionado com Xs para cada s < t. Entao,

E(Xt ) = E(Xt1 + t ) = E(Xt1 ) + E(t ) = 0 pois E(Xt ) = E(Xt1 ).

X (h) = cov(Xt , Xth ) = cov(Xt1 , Xth )+cov(t , Xth ) = X (h1)+0 = h X (0).

X (h) = X (h)/X (0) = |h| , para h = 0, 1, 2, . . . pois X (h) = X (h).

X (0) = cov(Xt , Xt ) = cov(Xt1 + t , Xt1 + t ) = 2 X (0) + 2

2
X (0) = .
1 2

20
A funcao de autocorrelacao da amostra

Em problemas praticos nos nao comecamos com um modelo, mas com dados observados
{x1 , x2 , . . . , xn }.

A funcao de autocorrelacao da amostra e usada para obter uma estimativa da ACF de


{Xt } se esta for estacionaria.

Definicao 4 Seja x1 , x2 , . . . , xn observacoes de uma serie temporal.

A media amostral de x1 , x2 , . . . , xn e
n
1X
x= xt .
n t=1

A funcao de autocovariancia amostral e


n|h|
1 X

b(h) = (xt+|h| x)(xt x), n < h < n.
n t=1

A funcao de autocorrelacao amostral e


b(h)
b(h) = , n < h < n.

b(0)

Observacoes:

1. O divisor n (nao n h) garante que a matriz de autocovariancia amostral


(i j)]ni,j=1 e nao negativa definida.
bn , [b

2. Assim como a matriz de autocovariancia amostral, a matriz de autocorrelacao


R (i j)]ni,j=1 e nao negativa definida.
bn , [b

3. As funcoes de autocovariancia e autocorrelacao amostrais podem calculadas para qual-


quer conjunto de dados {x1 , x2 , . . . , xn } e nao estao restritas as series temporais esta-
cionarias.

21
Exemplo: Rudo iid

# -----------------------------------------------------------------------------
# Example 006 - i.i.d. noise
# Exemplo 006 - Rudo i.i.d. (independente e identicamente distribudos)
# -----------------------------------------------------------------------------
set.seed(5408)
n <- 1000
mu <- 0
sigma <- 1
y <- ts(rnorm(n,0,1),start=1,frequency=1)
#pdf(paste(pathfig,"WN_series_acf.pdf",sep=""))
#postscript(paste(pathfig,"WN_series_acf.ps",sep=""))
yacf <- acf(y,plot=F,lag.max=50)
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(10,6,5),mar=c(4.5,5,2,2),xpd=T)
plot(yacf$lag,yacf$acf,lwd=2,xlab="Defasagem",ylab="ACF",type="h")
lines(yacf$lag,rep(0,length(yacf$lag)))
lines(yacf$lag,1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)
lines(yacf$lag,-1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)
#dev.off()

rm(list=c("mu","sigma","y","n","yacf"))
1.0
0.8
0.6
ACF
0.4
0.2
0.0

0 5 10 15 20 25 30 35 40 45 50
Defasagem

Figura 4: Estimativa da funcao de autocorrelacao para dados simulados de um processo rudo


branco.

22
Exemplo: Vendas de vinho tinto australiano

# -----------------------------------------------------------------------------
# Example 001 - Australian red wine sales, 1980-1991
# Exemplo 001 - Vendas de vinho tinto australiano, 1980-1991
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"wine.txt",sep=""))/1000,frequency=12,start=c(1980,1))
n <- length(y)

#pdf(paste(pathfig,"wine_series_acf.pdf",sep=""))
#postscript(paste(pathfig,"wine_series_acf.ps",sep=""))
yacf <- acf(c(y),lag.max=40,plot=F)
par(mfrow=c(1,1),lwd=2,cex.lab=1.5,cex.axis=1.5,lab=c(10,6,5),mar=c(4.5,5,2,2),xpd=T)
plot(yacf$lag,yacf$acf,lwd=2,xlab="Defasagem",ylab="ACF",type="h",ylim=c(-0.2,1))
lines(yacf$lag,rep(0,length(yacf$lag)))
lines(yacf$lag,1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)
lines(yacf$lag,-1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)
#dev.off()

rm(list=c("y","n","yacf"))
1.0
0.8
0.6
ACF
0.4
0.2
0.0
0.2

0 5 10 15 20 25 30 35 40
Defasagem

Figura 5: Estimativa da funcao de autocorrelacao para os dados de vendas de vinho tinto


australiano.

Para dados contendo uma tendencia, |b


(h)| decrescera devagar a medida que h cresce.
Para dados exibindo uma sazonalidade clara, |b
(h)| tera um comportamento parecido
com a mesma periodicidade.

23
Um modelo para os dados do lago Huron
Uma funcao constante parece ser um modelo inapropriado.
O grafico da autocorrelacao mostra tres valores completamente fora do intervalo de
confianca.

1.0
0.8
0.6
ACF
0.4
0.2
0.0
0.2

0 5 10 15 20 25 30 35 40
Defasagem

Figura 6: Estimativa da funcao de autocorrelacao para os resduos de um modelo de regressao


aplicado aos dados do lago Huron.

O grafico tambem mostra um decaimento geometrico aparente e temos b(2)/b


(1) w 0, 76
e b(3)/b
(2) w 0, 61. Assim, um modelo AR(1) com w 0, 76 parece ser apropriado
para os resduos.
Podemos verificar atraves do grafico de ebt1 e ebt que existe uma possvel relacao linear
entre essas duas variaveis.
2.5






1.5








0.5


e
^





0.5











1.5







2.5

2.5 1.5 0.5 0.5 1.5 2.5


^
e t1

Figura 7: Grafico de dispersao entre ebt1 e ebt . A linha cheia correspondendo ao modelo
ajustado ebt = 0, 791b
et1 .

24
# -----------------------------------------------------------------------------
# Exemplo tend^
encia - Nvel do Lago Huron, 1875-1972
# -----------------------------------------------------------------------------
y <- ts(scan(paste(pathdata,"lake.txt",sep="")),start=1875,frequency=1)
n <- length(y)

t <- seq(1,n,1)
regy <- lm(y ~ t)
yfitted <- ts(regy$fitted,start=1875,frequency=1)
yresid <- ts(regy$res,start=1875,frequency=1)

yacf <- acf(yresid,lag.max=40,plot=F)


plot(yacf$lag,yacf$acf,lwd=2,xlab="Defasagem",ylab="ACF",type="h",ylim=c(-0.2,1))
lines(yacf$lag,rep(0,length(yacf$lag)))
lines(yacf$lag,1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)
lines(yacf$lag,-1.96/sqrt(n)*rep(1,length(yacf$lag)),lty=2)

z <- yresid[2:98]
x <- yresid[1:97]
plot(x,z,lwd=2,xlab=expression(hat(e)[t-1]),ylab=expression(hat(e)[t]),pch=16)
regz <- lm( z ~ x )
zfitted <- regz$fitted
zresid <- regz$res
lines(x,zfitted)

summary(regz)
#==============================================================
#Call:
#lm(formula = z ~ x)
#
#Residuals:
# Min 1Q Median 3Q Max
#-1.958815 -0.499321 0.001715 0.417797 1.895614
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 0.01529 0.07272 0.21 0.834
#x 0.79112 0.06590 12.00 <2e-16 ***
#---
#Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
#
#Residual standard error: 0.7161 on 95 degrees of freedom
#Multiple R-squared: 0.6027, Adjusted R-squared: 0.5985
#F-statistic: 144.1 on 1 and 95 DF, p-value: < 2.2e-16
#==============================================================

25
n <- 97
zacf <- acf(zresid,lag.max=40,plot=F)
plot(zacf$lag,zacf$acf,lwd=2,xlab="Defasagem",ylab="ACF",type="h",ylim=c(-0.2,1))
lines(zacf$lag,rep(0,length(zacf$lag)))
lines(zacf$lag,1.96/sqrt(n)*rep(1,length(zacf$lag)),lty=2)
lines(zacf$lag,-1.96/sqrt(n)*rep(1,length(zacf$lag)),lty=2)

1.0
0.8
0.6
ACF
0.4
0.2
0.0
0.2

0 5 10 15 20 25 30 35 40
Defasagem

Figura 8: Estimativa da funcao de autocorrelacao para os resduos.

w <- yresid[3:98]
v1 <- yresid[2:97]
v2 <- yresid[1:96]
regw <- lm(w ~ v1 + v2 )
wresid <- regw$res

summary(regw)

26
#==============================================================
#Call:
#lm(formula = w ~ v1 + v2)
#
#Residuals:
# Min 1Q Median 3Q Max
#-1.58428 -0.45246 -0.01622 0.40297 1.73202
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) -0.007852 0.069121 -0.114 0.90980
#v1 1.002137 0.097215 10.308 < 2e-16 ***
#v2 -0.283798 0.099004 -2.867 0.00513 **
#---
#Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
#
#Residual standard error: 0.6766 on 93 degrees of freedom
#Multiple R-squared: 0.6441, Adjusted R-squared: 0.6365
#F-statistic: 84.17 on 2 and 93 DF, p-value: < 2.2e-16
#==============================================================

n <- length(wresid)
wacf <- acf(wresid,lag.max=40,plot=F)
plot(wacf$lag,wacf$acf,lwd=2,xlab="Defasagem",ylab="ACF",type="h",ylim=c(-0.2,1))
lines(wacf$lag,rep(0,length(wacf$lag)))
lines(wacf$lag,1.96/sqrt(n)*rep(1,length(wacf$lag)),lty=2)
lines(wacf$lag,-1.96/sqrt(n)*rep(1,length(wacf$lag)),lty=2)
1.0
0.8
0.6
ACF
0.4
0.2
0.0
0.2

0 5 10 15 20 25 30 35 40
Defasagem

Figura 9: Estimativa da funcao de autocorrelacao para os resduos.

27
Estimacao e eliminacao das componentes de tendencia e sazonalidade

O modelo de decomposicao classica e dado por

X t = m t + s t + t , t WN(0, 2 ).

Trataremos de duas abordagens para remover tendencia e sazonalidade:

1. estimando mt e st ; e

2. aplicando diferencas (Zt = Xt Xtd ).

Estimacao e eliminacao de tendencia na ausencia sazonalidade

Modelo de tendencia sem sazonalidade:

Xt = mt + t , t WN(0, 2 ).

Metodo 1: Estimacao da tendencia.

(a) Suavizacao com um filtro de medias moveis finito. Seja q um inteiro nao negativo e
considere a media movel de dois lados
q
1 X
Wt = Xtj
2q + 1 j=q

do processo {Xt } (Xt = mt + t ).

Entao para q 6 t 6 n q,
q q
1 X 1 X
Wt = mtj + tj w mt
2q + 1 j=q 2q + 1 j=q

se mt for aproximadamente linear no intervalo [t q, t + q] e se a media dos erros neste


intervalo estiver proxima de zero.

A media movel portanto nos fornece estimativas


q
1 X
mt = Xtj .
2q + 1 j=q

Definimos Xt , X1 para t < 1 e Xt , Xn para t > n para poder aplicar a media movel em
todos os dados.

28
(b) Suavizacao exponencial. Para qualquer valor fixo [0, 1], a media movel unilateral
mt , t = 1, . . . , n e defindo pelas recursoes

b t = Xt + (1 )m
m b t1
m
b 1 = X1 .

(c) Ajuste polinomial. Definimos mt como um polinomio em t da forma

mt = 0 + 1 t + 2 t2 + + k tk .

O ajuste pode ser feito por mnimos quadrados. A serie temporal sem tendencia e dado
pelos resduos da regressao.

Metodo 2: Eliminacao da tendencia por diferenciacao.

O operador diferenca de primeira ordem (ou defasagem 1) e definido por

Xt = Xt Xt1 = (1 B)Xt

sendo B o operador de defasagem (para tras), BXt = Xt1 .

As potencias dos operadores acima sao definidas de maneira similar:

B j Xt = Xt1 , para j > 1; e

j Xt = (j1 Xt ), para j > 1 com 0 = Xt .

Polinomios em B e sao manipulados de maneira similar as funcoes polinomiais de variaveis


reais.

2 Xt = (Xt ) = (1 B)(1 B)Xt


= (1 2B + B 2 )Xt = Xt 2Xt1 + Xt2

Se mt = 0 + 1 t, entao mt = mt mt1 = 0 + 1 t (0 + 1 (t 1)) = 1 .


Pk
Se Xt = mt + t sendo mt = j=1 j tj e t , entao a aplicacao de k resulta em

k Xt = k!k + k t ,

um processor estacionario com media k!k .

29
Estimacao e eliminacao de ambas componentes de tendencia e sazonalidade

O modelo de decomposicao classica e dado por

Xt = mt + st + t , t WN(0, 2 )

para t = 1, . . . , n, E(t ) = 0, st+d = st e dj=1 sj = 0.


P

Metodo 1: Estimacao das componentes de tendencia e sazonalidade.

Suponha que tenhamos observacoes {x1 , . . . , xn }. A componente de tendencia e estimada


ao aplicar um filtro de medias moveis especialmente escolhido para eliminar a componente
de sazonalidade e diminuir o rudo.

Se o perodo d for par (d = 2q), entao usamos

mt = (0, 5xtq + xtq+1 + + xt+q1 + 0, 5xt+q )/d, q < t 6 n q.

Se o perodo d for mpar, entao usamos o filtro de medias moveis simples.

O segundo passo e estimar a componente sazonal. Para cada k = 1, . . . , d, nos calculamos


a medias k dos desvios {(xk+jd mk+jd ), q < k + jd 6 n q}. Visto que estes desvios
nao necessariamente somam zero, estimamos a componente sazonal sk como
d
1X
sk = k i , k = 1, . . . , d
d i=1

e sk = skd , k > d.

A serie com a sazonalidade removida e dada por

zt = xt st , t = 1, . . . , n.

Finalmente, nos reestimamos a componente de tendencia por um dos metodos ja apre-


sentados usando a serie zt . A serie de rudos e dada por

t = xt mt st , t = 1, . . . , n.

30
Testando a sequencia estimada de rudos

Se as componentes de tendencia e sazonalidade forem estimadas ou eliminadas, entao


temos que verificar se a serie dos resduos pode ser vista como uma sequencia iid.

Se a sequencia for de fato iid, entao nos resta estimar a media e a variancia desta sequencia.

Caso contrario, precisaremos ajustar modelos de series temporais para explicar a de-
pendencia. Isto permitira previsoes mais corretas da serie de resduos.

Veremos aqui alguns testes estatsticos para verificar a hipotese de independencia dos
resduos.

(a) A funcao de autocorrelacao da amostra


Para n grande, as autocorrelacoes amostrais de uma sequencia iid V1 , . . . , Vn com
variancia finita sao aproximadamente iid com distribuicao normal com media 0 e
variancia 1/n, N (0, 1/n). Assim, se v1 , . . . , vn e uma realizacao de tal sequencia
iid,
aproximadamente 95% das autocorrelacoes amostrais devem estar entre 1, 96/ n.

Se calcularmos as autocorrelacoes amostrais ate a defasagem 40 e verificarmos que mais


de dois valores caem fora do intervalo ou que um valor esta bem fora deste intervalo,
entao rejeitamos a hipotese (nula) de dados iid.

(b) Ao inves de verificar se cada autocorrelcao amostral (j) esta dentro dos limites definido
em (a), e possvel considerar uma unica estatstica
h
X
Q=n [(j)]2 .
j=1

Se V1 , . . . , Vn e uma sequencia iid com variancia finita, entao pelos mesmos resultados
usados
em (a), Q e aproximadamente distribuda como a soma independente de N (0, 1)
n(j), j = 1, . . . , h, ao quadrado, isto e

Q 2h .

Um valor grande de Q indica que as autocorrelacoes sao muito altas para uma sequencia
de dados iid. Portanto, rejeitaremos a hipotese (nula) de dados iid ao nvel se

Q > 2h,1

sendo 2h,1 um quantil da distribuicao qui-quadrado com h graus de liberdade.

32

Anda mungkin juga menyukai