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 "<-"
3
Exemplo 1: Venda Mensal de Vinho Tinto Australiano
3.0
2.5
Milhares de Litros
2.0
1.5
1.0
0.5
# -----------------------------------------------------------------------------
# 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
# -----------------------------------------------------------------------------
# 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
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
# -----------------------------------------------------------------------------
# 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
# -----------------------------------------------------------------------------
# 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
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
Milhes de Habitantes
80
60
40
20
1800 1820 1840 1860 1880 1900 1920 1940 1960 1980
Ano
Xt = mt + t
t : E um rudo branco.
mt : E uma funcao com mudancas suaves.
mt = 0 + 1 t + 2 t2
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
14
Modelos com sazonalidade
X t = s t + t
t : E um rudo branco.
onde
Observacoes mensais;
Numero de harmonicos: k = 2; e
Perodo: d = 12.
x4t = sen(2 t)
para t = 1, . . . , 72.
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))
16
11.5
11.0
10.5
10.0
9.5
Milhares
9.0
8.5
8.0
7.5
7.0
6.5
Ano
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.
Definicao 1 Seja {Xt } uma serie temporal tal que E(Xt ) < . A funcao media de {Xt } e
X (t) = E(Xt ).
1. X (t) e independente de t, e
Observacoes:
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.
X (h) = cov(Xt+h , Xt ).
X (h)
X (h) , = cor(Xt+h , Xt ).
X (0)
Se {Xt } e uma serie temporal rudo iid tal que E(Xt2 ) = 2 < , entao
Notacao: Xt IID(0, 2 ).
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.
Se {St } e um passeio aleatorio, entao E(St ) = 0 e E(St2 ) = 2 t < para todo t e para
h>0
19
Exemplo: Processo MA(1)
Xt = t1 + t , t = 0, 1, 2, . . .
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,
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 media amostral de x1 , x2 , . . . , xn e
n
1X
x= xt .
n t=1
b(h)
b(h) = , n < h < n.
b(0)
Observacoes:
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
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
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
1.5
0.5
e
^
0.5
1.5
2.5
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)
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
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
27
Estimacao e eliminacao das componentes de tendencia e sazonalidade
X t = m t + s t + t , t WN(0, 2 ).
1. estimando mt e st ; e
Xt = mt + t , t WN(0, 2 ).
(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
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
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 .
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.
Xt = Xt Xt1 = (1 B)Xt
k Xt = k!k + k t ,
29
Estimacao e eliminacao de ambas componentes de tendencia e sazonalidade
Xt = mt + st + t , t WN(0, 2 )
e sk = skd , k > d.
zt = xt st , t = 1, . . . , n.
t = xt mt st , t = 1, . . . , n.
30
Testando a sequencia estimada de rudos
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.
(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
32