Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Quem sou?
Licenciado em matemática pelo IMEUSP;
Iniciação Científica sob orientação da
Profª Drª Mônica Carneiro Sandoval;
Transformação de Box-Cox.
Mestre em estatística sob a orientação
da Profª Drª Mônica Carneiro Sandoval e
co-orientação da Profª Denise Aparecida
Botter;
Incorporação do plano amostral na
análise de regressão.
Atualmente, doutorando em
estatística...sob a orientação do Profº Drº
Heleno Bolfarine e Co-orientação da
Profª Drª Mônica Carneiro Sandoval;
Calibração linear em modelos com
assimetria.
Autocorrelação
Interesse:
Análise de Regressão,
Inferência Bayesiana e
Calibração Linear.
1
2
Alguns exemplos do R - Passageiros
Programa de
Aperfeiçoamento de
Ensino
500
400
300
200
0
Supervisora: Profª Clélia Maria de
Castro Toloi
100
Número de passageiros (em milhares)
600
Figura 1. Totais mensais de passageiros em linhas aéreas
internacionais nos EUA entre 1949 e 1960.
1950
1952
1954
1956
1958
1960
Anos
Existe uma clara tendência de crescimento bem como um
padrão sazonal ao longo dos anos.
3
Comandos
4
Número de Linces
> data(AirPassengers)
# para obter informações sobre os dados #
> help(AirPassengers)
5000
4000
3000
0
1000
> x = AirPassengers
# testa se um objeto é uma série temporal #
> is.ts(x)
2000
Número de linces capturados
6000
7000
Figura 2. Número anual de linces capturados em
armadilhas entre 1821 e 1934 no Canadá.
1820
1840
1860
1880
1900
1920
Anos
Observe o padrão um padrão cíclico em torno de 10 ou 11
anos.
> plot(x,xlab='Anos',ylim=c(0,650),ylab='Número de
passageiros (em milhares)')
5
Autocorrelações e correlograma
6
1
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Comandos
Vazões do Rio Nilo
> data(lynx)
# para obter informações sobre os dados #
> help(lynx)
1200
1000
600
> linces = lynx
# testa se o objeto é uma série temporal #
> is.ts(linces)
800
Medições anuais das vazões
1400
Figura 3. Medições anuais de vazões do Rio Nilo em
Ashwan entre 1871 e 1970.
1880
1900
1920
1940
1960
Anos
Parece haver alguma alteração estrutural em torno do ano
de 1900.
> plot(linces,xlab='Anos', ylab='Número de linces
capturados')
7
Comandos
8
Total mensal de mortos em acidentes
> data(Nile)
# para obter informações sobre os dados #
> help(Nile)
10000
7000
8000
> Nilo = Nile
# testa se o objeto é uma série temporal #
> is.ts(Nilo)
9000
Número de mortos
11000
Figura 4. Mostra o total mensal de mortos nos Estados
Unidos da América envolvidos em acidentes.
1973
1974
1975
1976
1977
1978
1979
Anos
Parece que o número de mortos é maior durante os verões
e esse padrão é observado ano a ano. Além disso, o
número de mortos não parece aumentar, mantendo-se
estacionário.
> plot(Nilo,xlab='Anos', ylab='Medições Anuais das
vazões')
9
Comandos
10
Gás no Reino Unido
> data(USAccDeaths)
# para obter informações sobre os dados #
> help(USAccDeaths)
800
200
400
> mortes = USAccDeaths
# testa se o objeto é uma série temporal #
> is.ts(mortes)
600
Consumo de gás
1000
1200
Figura 5. Série trimestral do consumo de gás no Reino
Unido entre o primeiro trimestre de 1960 e o quarto
trimestre de 1986.
1960
1965
1970
1975
1980
1985
Tempo (em quadrimestres)
Há uma tendência de crescimento porém a amplitude do
padrão sazonal aumenta bastante a partir de 1971.
> plot(mortes,xlab='Anos', ylab='Número de mortos')
11
Autocorrelações e correlograma
12
2
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Comandos
Colocando quatro deles lado a lado.
> data(UKgas)
# para obter informações sobre os dados #
> help(UKgas)
> par(mfrow=c(2,2))
> plot(x,xlab='Anos',ylim=c(0,650),ylab='Número de
passageiros (em milhares)')
> plot(linces,xlab='Anos', ylab='Número de linces
capturados')
> plot(Nilo,xlab='Anos', ylab='Medições Anuais das
vazões')
> plot(mortes,xlab='Anos', ylab='Número de mortos')
> gas = UKgas
# testa se o objeto é uma série temporal #
> is.ts(gas)
> plot(gas,xlab='Tempo (em quadrimestres)',
ylab='Consumo de gás')
1950
1954
5000
1820
1860
11000
9000
Número de mortos
7000
1400
1000
Medições Anuais das vazões
1900
Anos
600
1920
Coeficientes de
Autocorrelação:
Ferramenta para se
identificar as
propriedades de uma
série temporal.
Coeficiente de
correlação linear...
SXY
r
SX SY
2000
1958
Anos
1880
14
Autocorrelação
0
Número de linces capturados
600
400
200
0
Número de passageiros (em milhares)
13
1960
xi
1973
1975
1977
x yi
y
i 1
n
xi
i 1
Anos
x
2
n
yi
y
2
i 1
1979
Anos
(x1,y1), (x2, y2), (x3, y3), (x4, y4), (x5, y5), (x6, y6) . . .
15
Idéia de autocorrelação
16
r1
Queremos medir a correlação entre as
observações de uma mesma variável em
diferentes momentos de tempo.
Será que há correlação entre uma e outra
observação?
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, ...
Seria ótimo se conseguíssemos entender a
relação entre observações defasadas 1, 2, ...,
períodos de tempo.
17
Autocorrelações e correlograma
n
(x1,x2), (x2, x3), (x3, x4), (x4, x5), (x5, x6), (x6, x7) . . .
18
3
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
r2
r3
E entre a observação e a segunda vizinha?
E com a terceira vizinha?...
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, ...
x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, ...
(x1,x4), (x2, x5), (x3, x6), (x4, x7), (x5, x8), . . .
(x1,x3), (x2, x4), (x3, x5), (x4, x6), (x5, x7), (x6, x8) . . .
19
20
O coeficiente pode ser simplificado!
A idéia é criar novos pares de variáveis!
Em r1 os pares são (x1,x2), (x2, x3), ...
Em r2 os pares são (x1,x3), (x2, x4), ...
Em r3 os pares são (x1,x4), (x2, x5), ...
Considerando x1, . . . , xn 1 e x2, . . . , xn como
duas variáveis o coeficiente de correlação
entre xt e xt+1, por exemplo, é dado por:
E calcular as correlações dos novos pares de
variáveis.
21
22
Mais simplificações!
A versão simplificada do coeficiente de
correlação fica:
Onde as médias amostrais são
Se utilizarmos a média amostral total x e
considerarmos que as duas médias acima são
aproximadamente as mesmas.
Além disso, podemos excluir o fator n/(n-1) já
que está próximo de 1 e temos um estimador
bem mais simples!
23
Autocorrelações e correlograma
24
4
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Um estimador da autocorrelação
Observações
A expressão anterior pode ser generalizada
para calcular a correlação entre observações
defasadas em k períodos de tempo.
Assim como o coeficiente de correlação usual, as
autocorrelações são adimensionais e 1 < rk < 1.
Na prática é mais usual calcular primeiro os
coeficientes de autocovariância {ck}, definidos por
analogia com a fórmula usual de covariância
Os coeficientes de autocorrelação são então
obtidos como rk = ck/c0.
25
Verificação da necessidade do
uso de alguma transformação
Estudo da série de vazões do Nilo
j<-floor(n/20) # para garantir L = 20 #
abcissa<- NULL
ordenada<- NULL
for (i in 1: (n-j)){
abcissa[i]<-mean(Nilo[i:(i+j)])
ordenada[i]<-sd(Nilo[i:(i+j)])
}
plot(x=abcissa,y=ordenada, xlab='Médias dos
subconjuntos', ylab= 'Desvios-padrão(ões)
dos subconjuntos', main='Uso de alguma
transformação?')
200
150
100
50
Desvios-padrão(ões) dos subconjuntos
250
Uso de alguma transformação?
800
900
1000
1100
26
1200
Médias dos subconjuntos
27
Gás no Reino Unido
Loge?
Estudo das autocorrelações
Como exemplo do cálculo das
autocorrelações vamos utilizar os dados das
medições das vazões do Nilo disponível no
R.
50
100
150
200
250
300
Uso de alguma transformação?
Desvios-padrão(ões) dos subconjuntos
28
100
200
300
400
500
Vamos montar uma matriz de correlogramas
de valores defasados de 1, 2, 3 e 4 períodos.
600
Médias dos subconjuntos
29
Autocorrelações e correlograma
30
5
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
1000
1400
600
1000
1400
1400
600
1000
Comandos
1000
1400
600
x[i]
Nilo <- Nile
n <- length(Nilo)
k <- 5
m = NULL
for (i in 1:k) m=cbind(m,lag(Nilo,k=i-1))
m=as.data.frame(m)
colnames(m) <- c("Nilo[i]", "Nilo[i-1]", "Nilo[i-2]", "Nilo[i-3]",
"Nilo[i-4]")
pairs(m, gap = 0, upper.panel = panel.smooth)
1000
1400
600
x[i-1]
1000
1400
600
x[i-2]
1000
1400
600
x[i-3]
600
x[i-4]
600
31
1000
1400
600
1000
1400
600
1000
1400
32
Series Nile
1.0
A função de autocorrelação - acf
0.4
0.2
ACF
0.6
0.8
Para calcularmos todas as possíveis
autocorrelações existe uma função chamada
acf.
No exemplo anterior, se tivéssemos digitado
o comando:
-0.2
0.0
acf( Nile )
Teríamos o correlograma de toda a série.
0
5
10
34
1954
5000
2000
1958
1820
1980
11000
9000
Número de mortos
1970
1900
7000
600
1960
1860
Anos
1000
Anos
Anos
35
0
Número de linces capturados
600
400
200
0
Número de passageiros (em milhares)
1950
200
Numa série aleatória esperamos que os
valores defasados sejam não
correlacionados e espera-se que rk = 0.
Podemos mostrar que rk tem distribuição
assintótica
rk ~N ( 1/n ; 1/n).
Assim, os limites de confiança aproximados
de 95% são dados por 1/n ± 1, 96/ n, que
são frequentemente ainda mais aproximados
para ±1, 96/ n.
Autocorrelações e correlograma
20
Correlogramas dos Exemplos
Medições Anuais das vazões
Limites de confiança
15
Lag
33
1973
1975
1977
1979
Anos
36
6
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Correlogramas
Comandos
1.0
0.5
-0.5
0.0
autocorrelaçoes
0.6
0.2
1.0
1.5
0
5
10
15
defasagem
gás
mortos
par(mfrow=c(2,2))
acf(x, main=
'passageiros',xlab='defasagem',ylab='autocorrelaçoes')
acf(linces, main='linces',xlab='defasagem',ylab='autocorrelaçoes')
acf(gas, main='gás',xlab='defasagem',ylab='autocorrelaçoes')
acf(mortes,
main='mortos',xlab='defasagem',ylab='autocorrelaçoes')
0.4
autocorrelaçoes
0.6
-0.2
-0.4
0.2
20
0.8
defasagem
0.0
autocorrelaçoes
-0.2
0.5
1.0
0.0
autocorrelaçoes
par(mfrow=c(2,2))
plot(x,xlab='Anos',ylim=c(0,650),ylab='Número de passageiros (em
milhares)')
plot(linces,xlab='Anos', ylab='Número de linces capturados')
plot(gas,xlab='Anos', ylab='Medições Anuais das vazões')
plot(mortes,xlab='Anos', ylab='Número de mortos')
linces
1.0
passageiros
0
1
2
3
4
5
0.0
defasagem
0.5
1.0
1.5
defasagem
37
Gerando séries temporais artificiais
38
Saídas - ruído
0.6
0.4
autocorrelações
0.2
-0.2
-0.2
0.0
-0.1
x = rnorm(200,0,0.1)
par(mfrow=c(1,2))
plot.ts(x,xlab='tempo',ylab='observações')
acf(x,main='',xlab='defasagem',ylab='autocorrelações')
0.0
observações
0.1
0.8
0.2
1.0
1. Série aleatória, observações iid da distribuição N(0,1)
0
5 0
1 0 0
2 0 0
0
te m p o
5
1 0
1 5
2 0
d e fa s a g e m
39
Gerando séries temporais artificiais
40
Saída
passeio aleatório
0
2 0
4 0
6 0
te m p o
41
Autocorrelações e correlograma
0.6
0.4
autocorrelações
-0.2
0.0
-1.0
e = rnorm(100,0,0.1)
x = cumsum(e)
par(mfrow=c(1,2))
plot.ts(x,xlab='tempo',ylab='observações')
acf(x,main='',xlab='defasagem',ylab='autocorrelações')
0.2
N (0;0,01)
0.0
1
-0.5
xt
observações
xt
0.8
1.0
2. Série com tendência,
8 0
0
5
1 0
1 5
2 0
d e fa s a g e m
42
7
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Agora é estacionária!
0.6
0.4
0.2
-0.2
-0.2
0.0
-0.1
0.0
observações
z<-diff(x)
par(mfrow=c(1,2))
plot.ts(z,xlab='tempo',ylab='observações')
acf(z,main='',xlab='defasagem',ylab='autocorrel
ações')
autocorrelações
0.1
0.8
0.2
É interessante notar que a primeira diferença
de um passeio aleatório é estacionária!
1.0
A função diff(...)
0
2 0
40
6 0
80
0
5
te m p o
1 0
1 5
d e fa s a g e m
43
44
z<-diff(x,lag=12)
par(mfrow=c(1,2))
plot.ts(z,xlab='tempo',ylab='observações')
acf(z,main='',xlab='defasagem',ylab='autocorrelações')
Vamos usar diff(...) - Passageiros
1 95 4
19 58
1.0
0.8
0.6
0.4
autocorrelações
40
observações
20
0.0
0.2
-0.2
0
0.0
-0.2
1 95 0
0.2
60
0.8
0.4
autocorrelaçoes
0.6
500
400
300
200
100
0
Número de passageiros (em milhares)
600
1.0
p a s s a g e ir o s
0 .0
A no s
0 .5
1 .0
1 .5
1 9 5 0
1 9 5 4
d e fa s a g e m
1 9 5 8
0 .0
te m p o
0 .5
1 .0
1 .5
d e fa s a g e m
45
Gerando séries temporais artificiais
46
Saída
memória de curto prazo
1.0
3. Série com correlação de curto-prazo
et
0.8
1
2
0,7 xt
-0.4
-4
-0.2
-3
0.0
0.2
autocorrelações
-1
-2
observações
0
Curto<-arima.sim(n = 400, list(ar = 0.7))
par(mfrow=c(1,2))
plot.ts(Curto,xlab='tempo',ylab='observações')
acf(Curto,main='',xlab='defasagem',ylab='autocorrelações')
0.4
0.6
1
xt
0
2 0
4 0
60
te m p o
47
Autocorrelações e correlograma
80
0
5
1 0
1 5
20
d e fa s a g e m
48
8
Cléber da Costa Figueiredo
Séries Temporais
PAE - 2º semestre de 2007
Gerando séries temporais artificiais
Saída
correlações negativas
1
et
-6
-4
-0.5
0.0
0
-2
observações
negativo<-arima.sim(n = 100, list(ar = -0.8))
par(mfrow=c(1,2))
plot.ts(negativo,xlab='tempo',ylab='observações')
acf(negativo,main='',xlab='defasagem',ylab='autocorrelações')
autocorrelações
2
0.5
0,8 xt
4
xt
1.0
6
4. Série com correlação negativa
0
2 0
4 0
6 0
te m p o
49
Autocorrelações e correlograma
8 0
0
5
1 0
1 5
2 0
d e fa s a g e m
50
9
This document was created with Win2PDF available at http://www.daneprairie.com.
The unregistered version of Win2PDF is for evaluation or non-commercial use only.
Download

Cléber da Costa Figueiredo Séries Temporais PAE - 2º - IME-USP