Projeto Séries Temporais

Prof. Silvio

5 de novembro de 2018

Carregando os pacotes.

Dados de desemprego - PME/IBGE

taxa<-c(12.9,12.5,11.9,11.6,11.9,11.7,11.5,11.2,10.9,10.5,
        11.2,11.6,12.1,12.4,12.8,13.0,12.8,13,12.9,12.9,12.9,12.2,10.9,
        11.7,12,12.8,13.1,12.2,11.7,11.2,11.4,10.9,10.5,10.6,9.6,
        10.2,10.6,10.8,10.8,10.2,9.4,9.4,9.4,9.6,9.6,9.6,8.3,
        9.2,10.1,10.4,10.4,10.2,10.4,10.7,10.6,10,9.8,9.5,8.4,
        9.3,9.9,10.1,10.1,10.1,9.7,9.5,9.5,9,8.7,8.2,7.4,
        8,8.7,8.6,8.5,7.9,7.8,8.1,7.6,7.6,7.5,7.6,6.8,
        8.2,8.5,9,8.9,8.8,8.1,8,8.1,7.7,7.5)

Formatação dos dados para uma série temporal

desemprego<-ts(taxa, start=c(2002,3),frequency=12)

A série temporal taxa de desemprego é composta de 93 (length(desemprego)) informações mensais que abrangem o período de mar/2002-out/2009. A Figura 1 apresenta o gráfico temporal da série, onde é possível visualizar seu comportamento ao longo do tempo.

Gráfico dos dados

plot(desemprego, ylab="Taxa", xlab="Tempo", main="Taxa de Desemprego")

A Figura 1 apresenta indícios de tendência, sazonalidade e não-estacionariedade. Com relação a estacionariedade, faz-se necessário a realização de um teste adequado.

Teste de Estacionariedade

adf.test(desemprego)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  desemprego
## Dickey-Fuller = -2.8834, Lag order = 4, p-value = 0.2119
## alternative hypothesis: stationary
pp.test(desemprego)
## 
##  Phillips-Perron Unit Root Test
## 
## data:  desemprego
## Dickey-Fuller Z(alpha) = -22.3, Truncation lag parameter = 3, p-value =
## 0.03471
## alternative hypothesis: stationary
kpss.test(desemprego)
## Warning in kpss.test(desemprego): p-value smaller than printed p-value
## 
##  KPSS Test for Level Stationarity
## 
## data:  desemprego
## KPSS Level = 2.0764, Truncation lag parameter = 3, p-value = 0.01

Os testes de estacionariedade confirmam a não-estacionariedade da série.

A média amostral da série da taxa de desemprego é 10.12% com desvio-padrão de 1.66%. O maior valor observado é de 13.10%, correspondente ao mês de abril de 2004, e o menor é de 6.8%, referente ao mês de dezembro de 2008.

A Figura 2 apresenta o histograma da série desemprego, em que há uma leve assimetria negativa com coeficiente igual a -0.03%, curtose igual -0.97%.

Histograma dos dados

hist(taxa, prob=T, xlab="Percentual", ylab="Probabilidade", main="", col="pink")

É possível avaliar separadamente as componentes não-observáveis: sazonalidade e tendência. A sazonalidade e a tendência são estimadas e os res?duos s?o fornecidos atrav?s da diferen?a entre a s?rie original e a combina??o de duas estimativas. Esta decomposi??o ? realizada “n?o-parametricamente” usando m?todo STL (Cleveland et al., 1990). ? poss?vel utilizar a fun??o decompose no R para realizar o mesmo procedimento.

a<-decompose(desemprego, type=c("additive", "multiplicative"), filter=NULL)
plot(a)

Na figura acima observa-se a tend?ncia e sazonalidade, ambas estoc?sticas. Na parte da sazonalidade ? percept?vel um pico no terceiro ou quarto m?s de cada ano. A tend?ncia estoc?stica ? decrescente. O gr?fico dos res?duos evidencia que no ano de 2008 os valores s?o bem menores que nos demais anos, ao passo que em 2004 h? uma discrep?ncia.

Correlograma

acf(desemprego, main="Correlograma", lag.max=90)

#### A acf amostral comprova que a s?rie ? n?o-estacion?ria, pois apresenta um decaimento pra zero lento.

Correlograma da 1a diferen?a

acf(diff(desemprego), main="Correlograma da 1a diferen?a", lag.max=90)

A acf da 1a diferen?a da s?rie (checar a estacionariedade via teste espec?fico!) evidencia um decaimento r?pido. Os picos que aparecem ao longo do gr?fico sugerem forte sazonalidade na s?rie.

Correlograma Parcial

pacf(desemprego, main="Correlograma Parcial", lag.max=90)

Os picos na PACF representam as fortes correla??es entre os meses da s?rie.

Modelagem e Previs?o

Ser? modelada a s?rie da taxa de desemprego com valores que abrangem o per?odo de mar?o/2002 a outubro/2009. Consideraremos previs?es de 1,3,6 e 12 passos ? frente, a fim de avaliar as capacidades preditivas dos diferentes m?todos em diferentes horizontes de previs?o.

Usaremos inicialmente os algoritmos de suaviza??o aditivo e multiplicativo de Holt-Winters para produzir previs?es da din?mica da taxa de desemprego. A escolha dos valores dos tr?s par?metros de suaviza??o foi feita no intuito de minimizar a soma dos quadrados dos erros de previs?o um passo ? frente.

?ltima Observa??o

desemprego[length(desemprego)]
## [1] 7.5

Dado a ser predito

observado<-desemprego[length(desemprego)]

Vamos realizar agora a previs?o 1 passo a frente (sem a ?ltima observa??o)

taxa1p<-desemprego[-length(desemprego)]
desemprego1p<-ts(taxa1p, start=c(2002,3),frequency=12)

Vamos realizar agora a previs?o 3 passos a frente (sem as 3 ?ltimas observa??es)

taxa<-c(12.9,12.5,11.9,11.6,11.9,11.7,11.5,11.2,10.9,10.5,
        11.2,11.6,12.1,12.4,12.8,13.0,12.8,13,12.9,12.9,12.9,12.2,10.9,
        11.7,12,12.8,13.1,12.2,11.7,11.2,11.4,10.9,10.5,10.6,9.6,
        10.2,10.6,10.8,10.8,10.2,9.4,9.4,9.4,9.6,9.6,9.6,8.3,
        9.2,10.1,10.4,10.4,10.2,10.4,10.7,10.6,10,9.8,9.5,8.4,
        9.3,9.9,10.1,10.1,10.1,9.7,9.5,9.5,9,8.7,8.2,7.4,
        8,8.7,8.6,8.5,7.9,7.8,8.1,7.6,7.6,7.5,7.6,6.8,
        8.2,8.5,9,8.9,8.8,8.1,8,8.1,7.7,7.5)
        
        n <- length(taxa);
        id <- (n-3+1):n;
        taxa3p<-taxa [-id]
        taxa3p
##  [1] 12.9 12.5 11.9 11.6 11.9 11.7 11.5 11.2 10.9 10.5 11.2 11.6 12.1 12.4 12.8
## [16] 13.0 12.8 13.0 12.9 12.9 12.9 12.2 10.9 11.7 12.0 12.8 13.1 12.2 11.7 11.2
## [31] 11.4 10.9 10.5 10.6  9.6 10.2 10.6 10.8 10.8 10.2  9.4  9.4  9.4  9.6  9.6
## [46]  9.6  8.3  9.2 10.1 10.4 10.4 10.2 10.4 10.7 10.6 10.0  9.8  9.5  8.4  9.3
## [61]  9.9 10.1 10.1 10.1  9.7  9.5  9.5  9.0  8.7  8.2  7.4  8.0  8.7  8.6  8.5
## [76]  7.9  7.8  8.1  7.6  7.6  7.5  7.6  6.8  8.2  8.5  9.0  8.9  8.8  8.1  8.0
        desemprego3p<-ts(taxa3p, start=c(2002,3),frequency=12)

Vamos realizar agora a previs?o 6 passos a frente (sem as 6 ?ltimas observa??es)

taxa<-c(12.9,12.5,11.9,11.6,11.9,11.7,11.5,11.2,10.9,10.5,
        11.2,11.6,12.1,12.4,12.8,13.0,12.8,13,12.9,12.9,12.9,12.2,10.9,
        11.7,12,12.8,13.1,12.2,11.7,11.2,11.4,10.9,10.5,10.6,9.6,
        10.2,10.6,10.8,10.8,10.2,9.4,9.4,9.4,9.6,9.6,9.6,8.3,
        9.2,10.1,10.4,10.4,10.2,10.4,10.7,10.6,10,9.8,9.5,8.4,
        9.3,9.9,10.1,10.1,10.1,9.7,9.5,9.5,9,8.7,8.2,7.4,
        8,8.7,8.6,8.5,7.9,7.8,8.1,7.6,7.6,7.5,7.6,6.8,
        8.2,8.5,9,8.9,8.8,8.1,8,8.1,7.7,7.5)
n <- length(taxa);
        id <- (n-6+1):n;
        taxa6p<-taxa [-id]
        taxa6p
##  [1] 12.9 12.5 11.9 11.6 11.9 11.7 11.5 11.2 10.9 10.5 11.2 11.6 12.1 12.4 12.8
## [16] 13.0 12.8 13.0 12.9 12.9 12.9 12.2 10.9 11.7 12.0 12.8 13.1 12.2 11.7 11.2
## [31] 11.4 10.9 10.5 10.6  9.6 10.2 10.6 10.8 10.8 10.2  9.4  9.4  9.4  9.6  9.6
## [46]  9.6  8.3  9.2 10.1 10.4 10.4 10.2 10.4 10.7 10.6 10.0  9.8  9.5  8.4  9.3
## [61]  9.9 10.1 10.1 10.1  9.7  9.5  9.5  9.0  8.7  8.2  7.4  8.0  8.7  8.6  8.5
## [76]  7.9  7.8  8.1  7.6  7.6  7.5  7.6  6.8  8.2  8.5  9.0  8.9
        desemprego6p<-ts(taxa6p, start=c(2002,3),frequency=12)

Vamos realizar agora a previs?o 12 passos a frente (sem as 12 ?ltimas observa??es)

taxa<-c(12.9,12.5,11.9,11.6,11.9,11.7,11.5,11.2,10.9,10.5,
        11.2,11.6,12.1,12.4,12.8,13.0,12.8,13,12.9,12.9,12.9,12.2,10.9,
        11.7,12,12.8,13.1,12.2,11.7,11.2,11.4,10.9,10.5,10.6,9.6,
        10.2,10.6,10.8,10.8,10.2,9.4,9.4,9.4,9.6,9.6,9.6,8.3,
        9.2,10.1,10.4,10.4,10.2,10.4,10.7,10.6,10,9.8,9.5,8.4,
        9.3,9.9,10.1,10.1,10.1,9.7,9.5,9.5,9,8.7,8.2,7.4,
        8,8.7,8.6,8.5,7.9,7.8,8.1,7.6,7.6,7.5,7.6,6.8,
        8.2,8.5,9,8.9,8.8,8.1,8,8.1,7.7,7.5)
n <- length(taxa);
        id <- (n-12+1):n;
        taxa12p<-taxa [-id]
        taxa12p
##  [1] 12.9 12.5 11.9 11.6 11.9 11.7 11.5 11.2 10.9 10.5 11.2 11.6 12.1 12.4 12.8
## [16] 13.0 12.8 13.0 12.9 12.9 12.9 12.2 10.9 11.7 12.0 12.8 13.1 12.2 11.7 11.2
## [31] 11.4 10.9 10.5 10.6  9.6 10.2 10.6 10.8 10.8 10.2  9.4  9.4  9.4  9.6  9.6
## [46]  9.6  8.3  9.2 10.1 10.4 10.4 10.2 10.4 10.7 10.6 10.0  9.8  9.5  8.4  9.3
## [61]  9.9 10.1 10.1 10.1  9.7  9.5  9.5  9.0  8.7  8.2  7.4  8.0  8.7  8.6  8.5
## [76]  7.9  7.8  8.1  7.6  7.6  7.5
        desemprego12p<-ts(taxa12p, start=c(2002,3), frequency=12)

Agora vamos aplicar a metodologia Holt-Winters Aditivo. H? duas fun??es poss?veis: HoltWinters ou hw (pacote forecast)

hwa1p<-HoltWinters(desemprego1p, seasonal="additive")
hwa3p<-HoltWinters(desemprego3p, seasonal="additive")
hwa6p<-HoltWinters(desemprego6p, seasonal="additive")
hwa12p<-HoltWinters(desemprego12p, seasonal="additive")

####Fazendo as previs?es

predict(hwa1p,1)
##           Nov
## 2009 7.434744
predict(hwa3p,3)
##           Sep      Oct      Nov
## 2009 7.869718 7.638495 7.338381
predict(hwa6p,6)
##           Jun      Jul      Aug      Sep      Oct      Nov
## 2009 8.697973 8.557799 8.663239 8.453954 8.251849 7.979710
predict(hwa12p,12)
##           Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
## 2008                                                                        
## 2009 5.979641 6.785950 7.556985 7.726353 7.813045 7.527199 7.354541 7.410849
##           Sep      Oct      Nov      Dec
## 2008                            6.943966
## 2009 7.140072 6.919865 6.624055
prev.hwa1p<-predict(hwa1p,1)[1]; prev.hwa1p;
## [1] 7.434744
prev.hwa3p<-predict(hwa3p,3)[3]
prev.hwa6p<-predict(hwa6p,6)[6]
prev.hwa12p<-predict(hwa12p,12)[12]

####Erro relativo de previs?o.

(observado-prev.hwa1p)/observado*100
## [1] 0.8700773
(observado-prev.hwa3p)/observado*100
## [1] 2.154926
(observado-prev.hwa6p)/observado*100
## [1] -6.396129
(observado-prev.hwa12p)/observado*100
## [1] 11.67926

qua mar 23 19:31:46 2022

Refer?ncias

CLEVELAND, R.B., CLEVELAND, W.S., McRAE, J.E. & TERPENNING, I. STL: A Seasonaltrend Decomposition Procedure Based on Loess. Journal of Oficial Statistics 6, 3-73, 1990.

DICKEY, D.A. & FULLER, W.A. Distribution of the Estimators for Autoregressive Time Series White a Unit Root, Journal of the American Statistical Association 74, 366, 427-431.