Escolar Documentos
Profissional Documentos
Cultura Documentos
software R
Página
1 Introdução 3
2 Alguns conceitos básicos 4
2.1 Sazonalidade e tendência . . . . . . . . . . . . . . . . . . . . . 4
2.2 Dados de contagem . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Modelos probabilísticos . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Processos estacionários . . . . . . . . . . . . . . . . . . . . . . 5
2.5 Diferenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Dados atípicos (Outliers) . . . . . . . . . . . . . . . . . . . . . 6
2.7 Funções de autocorrelação e autocorrelação parcial . . . . . . 6
3 Modelagem de Box-Jenkins 7
3.1 Modelos autorregressivos . . . . . . . . . . . . . . . . . . . . . 8
3.2 Modelos de médias móveis . . . . . . . . . . . . . . . . . . . . 9
3.3 Modelos autorregressivos e de médias móveis . . . . . . . . . . 10
3.4 Modelos ARIMA e SARIMA . . . . . . . . . . . . . . . . . . . 11
3.5 Modelos ARMAX . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.6 Critérios de identicação de p e q . . . . . . . . . . . . . . . . 12
3.6.1 Utilizando ACF e PACF . . . . . . . . . . . . . . . . . 12
3.6.2 Utilizando critérios de informação . . . . . . . . . . . . 12
3.6.3 Avaliação de previsão . . . . . . . . . . . . . . . . . . . 13
3.7 Adequacidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.7.1 Correlograma . . . . . . . . . . . . . . . . . . . . . . . 14
3.7.2 Teste de Box-Pierce . . . . . . . . . . . . . . . . . . . . 15
3.7.3 Teste da raiz unitária . . . . . . . . . . . . . . . . . . . 16
3.8 Modelos de Box-Jenkins no R . . . . . . . . . . . . . . . . . . 17
3.8.1 Adequacidade do modelo: vericação das suposições . . 22
4 Modelos de Suavização Exponencial 24
4.1 Alisamento exponencial simples (AES) . . . . . . . . . . . . . 25
4.2 Alisamento exponencial de Holt (AEH) . . . . . . . . . . . . . 26
4.3 Alisamento exponencial de Holt-Winters (AEHW) . . . . . . . 27
4.4 Modelos de suavização exponencial no R . . . . . . . . . . . . 28
5 Script 36
1 Introdução
3
2 Alguns conceitos básicos
4
Na análise de séries temporais a situação é bem diferente da maioria
dos problemas estatísticos. Embora seja possível variar o tamanho da série
observada, usualmente é impossível obter mais do que uma observação em
cada instante de tempo. Assim, tem-se apenas uma realização do processo
estocástico e uma única observação da variável aleatória no tempo t. Uma
maneira de descrever um processo estocástico é através da distribuição de
probabilidade conjunta de y(t1 ), . . . , y(tk ) para qualquer conjunto de tempos
t1 , . . . , tk e qualquer valor de k . Esta é uma tarefa extremamente compli-
cada e na prática costuma-se descrever um processo estocástico através das
funções média, variância e autocovariância, que são dadas para o caso contí-
nuo por, média µ(t) = E[y(t)], variância σ 2 (t) = V ar[y(t)] e autocovariância
γ(t1 , t2 ) = E[y(t1 ) − µ(t1 )][y(t2 ) − µ(t2 )], sendo que denições similares se
aplicam ao caso discreto.
5
2.5 Diferenciação
xt = yt − yt−1 = ∆yt .
Diferenciação de primeira ordem é a mais utilizada, sendo que ocasionalmente
uma diferenciação de segunda ordem pode ser requerida. De modo geral, a
n-ésima diferença de Xt é ∆n Xt = ∆(∆n−1 Xt ).
No R podemos tomar a primeira de uma série através do comando di().
Com esta função podemos usar diferenças até maiores, ou seja, podemos
tomar a n-ésima diferença. Abaixo estão alguns exemplos de como usar este
comando:
− A primeira diferença da série xt é calculada como xt − xt−1 . Para obter
isso no R digite di(x, lag=1, dierences=1) ou, de maneira mais simples,
di(x);
− A segunda diferença de xt é calculada como [(xt −xt−1 )−(xt−1 −xt−2 )].
No R podemos escrever di(x,1,2);
− A primeira diferença sazonal, no caso em que fxtg representa uma
série trimestral, é calculada como xt − xt−4 . No R obtemos isso ao digitar
di(x,1,4) ou simplesmente di(x, 4).
6
é chamado de coeciente de autocovariância de defasagem h. Note que a
magnitude de γ(h) depende da escala em que y(t) está sendo mensurada.
Por isto, padroniza-se a função de autocovariância dando origem à função de
autocorrelação
γ(h)
ρ(h) = ,
γ(0)
que mede a correlação entre y(t) e y(t + h).
A função de autocorrelação (ACF) de um processo estocástico estacio-
nário é uma ferramenta importante para analisar as propriedades de uma
determinada série. Seguem ainda as seguintes propriedades facilmente veri-
cáveis:
1 A correlação entre y(t) e y(t + h) é a mesma que entre y(t) e y(t − h),
ou seja ρ(h) = ρ(−h);
2. −1 < ρ(h) < 1;
3. Embora um processo estocástico tenha uma estrutura de autocovariân-
cia única, em geral, o contrário não é verdadeiro. É possível encontrar
vários processos com a mesma função de autocorrelação, o que diculta
ainda mais a interpretação do correlograma.
3 Modelagem de Box-Jenkins
7
x1 , x2 , x3 , . . . , xk , os modelos do tipo Box-Jenkins permitem que yt seja ex-
plicado por valores passados, ou defasados, do próprio y e dos termos de erro
estocásticos.
É importante destacar que, para empregar o método Box-Jenkins, pre-
cisamos ter em mãos uma série temporal estacionária ou uma que possa se
tornar estacionária após uma ou mais diferenciações.
A estratégia para construção do modelo é baseada em um ciclo iterativo
e utiliza os próprios dados para a escolha da estrutura deste modelo. Ini-
cialmente, é proposta uma classe de modelos, procede-se à identicação de
um modelo particular com base na análise de autocorrelações, autocorrela-
ções parciais e outros critérios, em seguida os parâmetros são estimados e os
resíduos do modelo ajustado são então avaliados.
A metodologia Box-Jenkins pressupõe que a série sendo analisado é esta-
cionárias. A metodologia pode ser brevemente caracterizada como a seguir.
1. Identicação do modelo;
(a) Determinar a order de integração, d.
(b) Achar valores apropriados para p e q .
2. Estimação dos parâmetros do modelo.
3. Diagnóstico do modelo.
(a) Autocorrelações
(b) Normalidade
8
O modelo AR(p) pode ser reescrito de forma mais compacta usando o
operador de defasagem, denotado por B e denido como B n yt = yt−n , da
seguinte maneira:
(1 − φ1 B − φ2 B 2 − · · · − φp B p )yt = c + t ,
ou
φ(B)yt = c + t ,
em que φ(B) = 1 − φ1 B − φ2 B 2 − · · · − φp B p é um polinômio autorregressivo.
Se todas as raízes da equação φ(z) = 0 estiverem fora do círculo unitário, o
processo AR(p) será estacionário. Neste caso, a média de yt é
c
E(yt ) = µ = ,
1 − φ1 − φ2 − · · · − φp
As autocovariâncias são
9
(θj + θj+1 θ1 + θj+2 θ2 + · · · + θq θq−j )σ 2 , j = 1, 2, . . . , q,
γj =
0, para j = q + 1, q + 2, . . . .
10
3.4 Modelos ARIMA e SARIMA
11
yt = α + φ1 yt−1 + φ2 yt−2 + · · · + φp yt−p + β0 xt + β1 xt−1 +
+ · · · + βk xt−k + t + θ1 t−1 + θ2 t−2 + · · · + θq t−q
em que α, βi , φj , θl , i = 0, . . . , k, j = 1, . . . , p, k = 1, . . . , q , são parâmetros
xados e t ∼ RB(0, σ 2 ). Notamos que no caso especial em que os β 's são
todos zero, obtemos o modelo ARMA(p, q ) para a variável dependente yt .
Quando os θ's são todos iguais a zero, os outros parâmetros do modelo são
facilmente estimados por mínimos quadrados ordinários. Contudo, quando os
θ's são não-nulos, a estimação dos parâmetros requer o uso de um algoritmo
de otimização não-linear. É importante lembrar que mais de uma variável
explanatória pode ser incluída no modelo, contanto que a estrutura de defa-
sagem para cada variável seja nita e que o número total de parâmetros a
serem estimados não exceda o número de observações.
Uma variante do modelo ARMAX é o modelo SARMAX, que é a combi-
nação de modelos SARMA com uma estrutura de regressão que possibilita
vericar diferentes impactos provocados por mudanças nas variáveis indepen-
dentes sobre a variável dependente e na estrutura dinâmica.
12
1. Para modelar processos AR puros:
T +p 2
FPE = σ̃ ,
T −p
ej 2
em que σ̃ 2 = e ej é o j -ésimo resíduo.
PT
j=1 T
ej = yj − ŷj ,
em que ŷj denota a previsão de yj . A capacidade de previsão de um modelo
estimado pode ser avaliada através da utilização das medidas descritas a
seguir, em que k = T − n:
13
1. Erro percentual médio (EPM):
T
1 X ej
EP M = × 100;
n j=k+1 yj
3.7 Adequacidade
3.7.1 Correlograma
14
√ √
ICaprox (ρ, 95%) = [−2/ T ; −2/ T ],
há indícios de que o modelo esteja corretamente especicado. O coeciente
de autocorrelação amostral de ordem j é denido como
PT
t=j+1 êt êt−j
rj = PT 2 .
t=1 êt
Se alguma dessas autocorrelações estiver fora do intervalo de conança dado
acima, existem evidências amostrais contra a adequação do modelo.
15
3.7.3 Teste da raiz unitária
16
3.8 Modelos de Box-Jenkins no R
0 20 40 60 80 100
Tempo
17
1.0
0.6
0.8
0.4
0.6
0.4
0.2
FACP
FAC
0.2
0.0
0.0
−0.2
−0.2
0 5 10 15 20 5 10 15 20
Defasagem Defasagem
> summary(y)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-3.8970 -1.4460 -0.3124 -0.3667 0.6386 2.4470
Notamos que a média foi de −0.3667, que a mediana foi −0.3124 e que o
mínimo e máximo foram, respectivamente, −3.8970 e 2.4470.
Caso exista dúvidas quanto a não estacionaridade de uma série podemos
utilizar testes de raízes unitárias. O R tem implementado em suas funções
dois testes de raiz unitária: o teste de Dickey-Fuller e o teste de Phillips-
Perron, ambos os testes, tem como hipótese de que o processo observado
possui pelo menos uma raiz unitária. Uma maneira de utilizar o teste de
Dickey-Fuller no R é utilizando a função adf.test().
> require(urca)
> adf.test(y)
data: y
Dickey-Fuller = -4.799, Lag order = 4, p-value = 0.01
alternative hypothesis: stationary
18
> pp.test(y)
data: y
Dickey-Fuller Z(alpha) = -34.2377, Truncation lag parameter = 3,
p-value = 0.01
alternative hypothesis: stationary
Repare que todos os testes rejeitaram a hipótese da série não ser estaci-
onário (p-valor < 0.05) ao nível de 5%.
Caso o processo observado seja não-estacionário na média utiliza-se o
procedimento denominado diferenciação. No R a função utilizada é a função
diff().
> plot.ts(diff(y),xlab="Tempo",ylab="",main="")
2
1
0
−1
−2
0 20 40 60 80 100
Tempo
19
> require(tseries)
> fit1 <- arma(y, order = c(1, 1))
> summary(fit1)
Call:
arma(x = y, order = c(1, 1))
Model:
ARMA(1,1)
Residuals:
Min 1Q Median 3Q Max
-2.12336 -0.66775 0.03368 0.67176 2.51843
Coefficient(s):
Estimate Std. Error t value Pr(>|t|)
ar1 0.4704 0.1149 4.096 4.21e-05 ***
ma1 0.4648 0.1161 4.002 6.27e-05 ***
intercept -0.1998 0.1471 -1.358 0.174
---
Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
Fit:
sigma^2 estimated as 0.9343, Conditional Sum-of-Squares=91.57,
AIC = 283
Coefficients:
ar1 ma1 intercept
0.4583 0.4717 -0.3688
s.e. 0.1147 0.1154 0.2563
20
Podemos ver que a estimativa dos parâmetros, de ambos os modelos (mo-
delo 1 e modelo 2), caram bem próximos 0.5. Vale resaltar que todos os
parâmetros estimados, em ambos os modelos, foram signicativos ao nível de
signicância de 5%.
Para buscar o modelo com maior capacidade preditiva podemos usar a
função auto.arima() do pacote forecast, onde nessa função é possível usar
a opcção ic para especicar o critério de seleção de modelos a ser empregado.
Vale resaltar que a função arima() permite incluir variáveis regressoras no
modelo.
> fit3<-auto.arima(y)
> summary(fit3)
Series: y
ARIMA(1,0,1) with zero mean
Call: auto.arima(x = y)
Coefficients:
ar1 ma1
0.4927 0.4600
s.e. 0.1111 0.1153
21
Frequency = 1
[1] -0.25248373 -0.08586639 -0.02920203
$se
Time Series:
Start = 101
End = 103
Frequency = 1
[1] 1.002666 1.409983 1.449728
> tsdiag(fit3)
Standardized Residuals
2
1
0
−2 −1
0 20 40 60 80 100
Time
ACF of Residuals
1.0
0.6
ACF
0.2
−0.2
0 5 10 15 20
Lag
● ● ● ●
●
0.8
●
p value
●
● ●
●
0.4
0.0
2 4 6 8 10
lag
22
Grácamente, a normalidade pode ser vericada utilizando um histo-
grama ou um gráco de probabilidade normal dos resíduos. Para o gráco de
probabilidade normal pode-se utilizar a função qqnorm(), que é uma função
padrão do programa para a construção desse tipo de gráco, ou a função
qqplot() que constrói um QQ Plot para dois grupos de dados. Ambas as
funções são associadas a função qqline() que adiciona ao gráco uma linha
normal.
> par(mfrow=c(1,2))
> residuos <- fit3$residuals
> hist(residuos, prob=,xlab="Resíduos",ylab="Densidade",main="")
> qqnorm(residuos,main="",xlab="Percentis N(0,1)",ylab="")
> qqline(residuos)
●
8
●
1.0
●
6
0.5
● ●
●
● ●
●
●
●
Densidade
0.0
● ●
●
4
●
●
−0.5
●
●
● ●
2
●
−1.0
●
−1.5
●
0
data: residuos
X-squared = 0.3121, df = 2, p-value = 0.296
23
> shapiro.test(residuos)
data: residuos
W = 0.9805, p-value = 0.05075
> residuos<-fit3$residuals
> Box.test(residuos, lag = 10, type="Ljung")
Box-Ljung test
data: residuos
X-squared = 10.3553, df = 10, p-value = 0.4099
24
4.1 Alisamento exponencial simples (AES)
yt = µt + t , t = 1, . . . , T,
em que t ∼ RB e µt é um parâmetro desconhecido, que pode variar lenta-
mente com o tempo. É razoável tomar a estimativa do nível, denotado por
Nt , como uma soma ponderada das observações passadas, atribuindo pesos
maiores às observações mais recentes, ou seja,
A previsão dos valores futuros, ŷt (h), será igual a Nt e pode ser inter-
pretada como uma média ponderada entre a observação mais recente e a
previsão anterior. A equação (7) pode ainda ser reescrita na forma de corre-
ção de erro. Sendo et = yt − ŷt−1 (1), o erro de previsão 1 passo à frente no
tempo t, então temos que
25
passadas nas previsões. Valores pequenos produzem previsões que dependem
muito das observações passadas. Por outro lado, valores próximos de 1 levam
a previsões que dependem das observações mais recentes e, no caso extremo,
α = 1, a previsão é simplesmente a última observação. Um procedimento
mais objetivo é selecionar o valor de α que fornece a melhor previsão a um
passo das observações já obtidas, ou seja, encontrar o valor de
Pα que minimize
a soma de quadrados dos erros de previsão, dada por S = t e2t .
26
4.3 Alisamento exponencial de Holt-Winters (AEHW)
27
Os valores futuros são previstos a partir das equações
28
Série com tendência
●
●
50 100
●
●
●
●
● ●
●
● ● ●
0
0.5
PACF
ACF
0.0
0.0
−0.5
−0.5
5 10 15 20 5 10 15 20
Lag Lag
29
Coefficients:
[,1]
a 198.46289
b 11.51982
A função para execução do gráco da série e seu ajuste é
> plot(fcast)
Holt−Winters filtering
200
150
Observed / Fitted
100
50
0
Time
> plot(prev)
30
Forecasts from HoltWinters
300
250
200
150
100
50
0
31
USAccDeaths
11000
●
●
●
●
●
● ● ●
●
●
● ●
●
● ●
●
9000
● ●
● ● ●
● ● ● ● ● ● ●
● ●
● ● ● ● ●
● ● ● ●
● ● ●
● ● ●
● ● ●
● ● ● ●
● ● ● ● ●
● ● ●
● ● ● ●
● ● ●
7000
●
●
● ● ●
0.4
PACF
ACF
0.0
0.0
−0.4
−0.4
5 10 15 20 5 10 15 20
Lag Lag
Smoothing parameters:
alpha: 0.6964007
beta : FALSE
gamma: 0.8750256
Coefficients:
[,1]
a 8896.856336
s1 -882.913275
s2 -1816.712771
s3 -1043.719518
s4 -691.142348
s5 150.411995
s6 564.990260
s7 1659.351341
s8 920.556439
s9 90.853080
s10 425.100598
s11 1.342965
s12 328.785588
O gráco da série e seu ajuste é
> prev <- forecast(deaths.fcast, h = 5)
32
Holt−Winters filtering
11000
10000
Observed / Fitted
9000
8000
7000
Time
> prev
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Jan 1979 8013.943 7532.437 8495.449 7277.544 8750.342
Feb 1979 7080.144 6493.383 7666.904 6182.771 7977.516
Mar 1979 7853.137 7177.320 8528.953 6819.565 8886.709
Apr 1979 8205.714 7451.282 8960.146 7051.910 9359.518
May 1979 9047.268 8221.673 9872.864 7784.629 10309.908
> plot(prev)
> accuracy(deaths.fcast)
ME RMSE MAE MPE MAPE MASE
2859.807941 5031.983139 3225.575851 33.198459 37.872865 5.013153
33
Série com tendência e sazonalidade
Neste exemplo, a série co2 do pacote tseries será utilizado como ilustração.
> data(co2)
co2
●●
●● ●●
●
●●●
360
●●
● ● ● ● ●
●● ●● ● ● ● ● ●●
● ● ● ● ● ●
● ●●
● ● ●● ● ●● ●● ●● ●
●
●● ● ● ●
●
● ● ●● ● ● ● ● ●●
●
● ●●● ● ● ● ● ●● ● ●
● ● ● ●● ● ●●
●
●● ● ● ● ● ●● ● ● ● ● ●
●
●● ● ● ● ●
●
●
●● ●● ●● ●
●
●●
● ●● ● ●● ● ●
●
●● ●● ● ● ●● ● ●
●●
● ● ● ● ● ● ●
● ●
●●
● ● ●● ● ●● ● ●
● ●
340
● ● ●
●● ● ●● ● ●● ●
● ● ●● ● ●
●
●● ●●●● ●
●● ●
● ● ● ● ●
●
●● ● ● ● ● ● ●● ●
●
●● ●● ● ● ● ● ● ●
●
●● ● ●● ● ● ●● ● ● ●
● ●
●● ●● ● ●●● ● ●
● ●
●● ●● ● ●● ● ●
●
● ● ●●●● ● ●
●●● ●●●● ●●● ●
● ● ●● ●
●
● ●
●● ● ● ● ● ● ●● ●
● ● ●
● ●● ●
●● ●● ● ●● ● ● ●
● ●
●
● ● ●
●● ● ● ●●●● ● ●● ●
● ●
●● ●● ● ● ●● ●
●
● ● ● ●●
320
●●
● ● ● ●● ●
●● ● ●●● ●● ● ● ● ● ● ●
●
●●
● ● ●●
● ● ●● ● ●● ● ●
● ● ●●●
● ● ●● ● ●● ●
● ● ● ●● ● ●
●● ●● ●
●● ●
● ●●●● ● ●● ● ●● ●● ● ●
●●
● ● ● ● ● ●● ● ● ●
●●● ● ● ● ● ●●● ● ●● ● ●
● ●
● ● ●● ● ● ●
●● ● ●
●
● ●
1.0
0.6
0.6
PACF
ACF
0.2
0.2
−0.2
−0.2
5 10 15 20 5 10 15 20
Lag Lag
34
b 0.1247438
s1 0.2215275
s2 0.9552801
s3 1.5984744
s4 2.8758029
s5 3.2820088
s6 2.4406990
s7 0.8969433
s8 -1.3796428
s9 -3.4112376
s10 -3.2570163
s11 -1.9134850
s12 -0.5844250
O gráco da série e seu ajuste é
Holt−Winters filtering
360
350
Observed / Fitted
340
330
320
Time
35
Sep 1998 362.4731 361.7587 363.1874 361.3806 363.5656
Oct 1998 362.7520 362.0048 363.4993 361.6093 363.8948
Nov 1998 364.2203 363.4411 364.9996 363.0285 365.4121
Dec 1998 365.6741 364.8636 366.4847 364.4345 366.9138
Jan 1999 366.6048 365.7349 367.4747 365.2744 367.9353
Feb 1999 367.4633 366.5643 368.3623 366.0884 368.8383
Mar 1999 368.2313 367.3036 369.1590 366.8125 369.6500
> plot(prev)
> accuracy(deaths.fcast)
ME RMSE MAE MPE MAPE MASE
168.81428 238.90615 169.28360 50.00231 50.14243 157.28670
5 Script
require(tseries)
require(forecast)
require(lmtest)
require(urca)
36
h <- 3
x <- xc[1:(length(xc)-h)] # dados sem h últimas observações
n <- length(x)
############################
### Modelos ARIMA
############################
forecast(modelo, h)
plot(forecast(modelo, h))
37
k <- 10
#####################################
### Modelos suavização exponencial
#####################################
Referências
38
[4] Hyndman, R. J.; Koehler, A. B.; Ord J. K. & Snyder, R. D. (2008).
Forecasting with Exponential Smoothing: the State Space Approach. New
York: Springer.
[5] Morettin, P.A. & Toloi, C.M.C. (2006). Análise de Séries Temporais, 2a
ed. São Paulo: Edgard Blücher.
39