You are on page 1of 20

16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Aplicação do Modelo ARIMA(p,d,q)


Fernando Monteiro, Guilherme da Silva e Valentina Lírio
18/08/2020

library(knitr)
library(tseries)
library(forecast)
library(ggplot2)
library(ggfortify)
library(plotly)
library(magrittr)
library(ggseas)
library(lmtest)
library(ggpubr)
library(fma)
library(tsdl)
library(outliers)
library(readxl)

Aplicação do Modelo ARIMA na série:


Índice de preços ao produtor (IPP) na
Alemanha - índice (média 2005=100)
1. Introdução
Existem registros de acompanhamento de preços de vários produtos desde o início do período de colonização,
onde surgiu o Índice de Preços por Atacado (IPA). Os Estados Unidos foi o país que norteou o início dos cálculos,
que serviram de bases para diversos países. Com o tempo houve muitas mudanças, entre elas na estrutura da
economia e nas formas de comercialização, assim alterou-se o nome desse índice a partir de abril de 2010, o qual
foi chamado de Índice de Preços ao Produtor (IPP) (Souza 2004).

Este relatório mostra como o IPP da Alemanha se comporta ao decorrer dos anos, medindo as variações de
preços a partir da perspectiva do produtor. Esse índice, é considerado como um indicador avançado da inflação ao
consumidor e as análises são de três áreas da produção, sendo elas: as empresas de base industriais,
mercadoria de base, e empresas na fase de processamento. O foco são as indústrias extrativas e de
transformação, e tem como principal objetivo mensurar a mudança média dos preços de venda recebidos pelos
produtores domésticos de bens e serviços, bem como sua evolução ao longo do tempo, sinalizando as tendências
inflacionárias de curto prazo no país. Dessa forma, constitui-se, um indicador essencial para o acompanhamento
macroeconômico e, consequentemente, um valioso instrumento analítico para tomadores de decisão, públicos ou
privados (IBGE, 2020).

Para os dados da série, utiliza-se um índice encadeado, tendo como ano-base 2005, o qual é o ano em que os
pesos das atividades são utilizados no cálculo dos índices e o período de referência é o ano para o qual a média
dos índices é igual a 100. Portanto, caso o ano-base mude e para não ter impacto nos movimentos da série, se
faz necessário o encadeamento da série histórica (IBGE 2017).

Os dados foram coletados do site do Instituto de Pesquisa Econômica Aplicada (www.ipeadata.gov.br), o qual
tem como fonte o Fundo Monetário Internacional, International Financial Statistics (FMI/IFS).

O relatório encontra-se dividido em 3 seções, sendo a primeira esta introdução, a segunda, a análise e
discussão dos resultados e a terceira, a conclusão.

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 1/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

1.1. Objetivos
1.1.1 Objetivo Geral
Encontrar um modelo ARIMA(p,d,q), analisar, e fazer previsões, para a série temporal do Índice de Preços ao
Produtor (IPP) da Alemanha, de janeiro de 1957 até novembro de 2016.

1.1.2 Objetivos Específicos


Encontrar uma série temporal real para ser analisada. A série temporal deve ser não estacionária, ou seja,
apresentar obrigatoriamente raiz unitária e/ou tendência determinística;
Apresentar a série temporal (o que significam, suas propriedades, períodos a que se referem, outliers, etc.),
ou seja, uma descrição da série temporal;
Apresentar FAC, FACP, teste de estacionariedade, teste de normalidade, ajuste dos modelos, análise de
resíduos, previsão, entre outros;
Relacionar teoria e aplicação;
Analisar a série temporal utilizando os processos ARIMA(p,d,q);
Apresentar pacotes, rotinas e funções utilizadas para analisar as séries temporais;
Todos os resultados devem ser apresentados em um relatório digitado em Latex, Word ou R Markdown e
convertidos em pdf.

2. Análise e discussão dos resultados


2.1. Análise descritiva da série
ge <- read_excel("ge.xls")
dados<-ge$Alemanha
matrix<-cbind(summary(dados))
colnames(matrix)<-c("Tabela 1: Estatística Descritiva")
kable(matrix)

Tabela 1: Estatística Descritiva

Min. 40.11690

1st Qu. 48.74665

Median 80.42040

Mean 74.60604

3rd Qu. 91.52250

Max. 107.70000

Na Tabela 1, vista acima, apresenta-se algumas estatísticas descritivas da série em questão. Portanto,
ressaltamos, que o IPP, na Alemanha, de janeiro de 1957 à novembro de 2016, tem média geral de 74,61. Tem-se
também que, o índice de preço, mínimo e máximo, é de 40,12 e 107,70, respectivamente.

2.2. Gráfico da série temporal


2.2.1. Série completa

dados.ts<-ts(dados,start=c(1957,1),frequency = 12)

autoplot(dados.ts)+ggtitle("Gráfico 1 - Índice de preços ao produtor na Alemanha") +


xlab("Tempo") + ylab("Quantidade")+theme_minimal()

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 2/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Por inspeção visual da série original, no gráfico 1, percebe-se que a série “Índice de preços ao produtor (IPP)
na Alemanha”, não é estacionária, já que sua média não é constante e assim a mesma possui algum tipo de
tendência determinística.

Gráficos da série temporal com identificação de mudança de estrutura e saltos:

dados %>%
changepoint:: cpt.meanvar() %>% # Identify change points
autoplot(main="Gráfico 2 - Índice de preços ao produtor na Alemanha")+theme_minimal()

No gráfico 2, identifica-se que a série “Índice de preços ao produtor (IPP) na Alemanha”, muda de estrutura na
média e na variância nas linhas tracejadas em vermelho, com isso podemos confirmar que a série é não
estacionária e mostrar suas respectivas quebras estruturais.

strucchange::breakpoints(dados ~ 1) %>%
autoplot(main="Gráfico 3 - Índice de preços ao produtor na Alemanha")+theme_minimal()

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 3/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

No gráfico 3, temos o mesmo gráfico mostrado anteriormente, só que com um outro método, assim nele
também detecta-se saltos e/ou mudanças estruturais na série, nos quais também pela linha tracejada em
vermelho podemos ver a mudança de média e variância na série em questão. No entanto, o salto destacado pela
linha tracejada em vermelho, correspondente a primeira observação, não é possível, porque o salto deveria ser
apontado ao longo da série e não no início. Logo, concluímos que a série não possui saltos e comparado ao
método anterior, possui resultados diferentes, já que anteriormente a série apresentou mais quebras estruturais ao
decorrer da série e com esse método mostrou que a série não teria essas quebras/saltos.

Funções de Autocorrelação (FAC) e Autocorrelação Parcial (FACP) amostrais:


Em seguida, a análise da função de autocorrelação (FAC) e da autocorrelação parcial (FACP) amostrais são
utilizadas, as mesmas são vistas nos gráficos 4 e 5, respectivamente. O objetivo é a identificação de possíveis
modelos concorrentes, ou seja, que podem representar de forma mais precisa o comportamento da série original.

ggAcf(dados.ts, lag.max=100,type = c("correlation"))+labs(y = "FAC Amostral",title="Gráfico 4 -


Função de Autocorrelação amostral")+
theme_minimal()
ggAcf(dados.ts, lag.max=100,type = c("partial"))+labs(y = "FACP Amostral",title="Gráfico 5 - Fun
ção de Autocorrelação Parcial amostral")+
theme_minimal()

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 4/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Assim, a FAC amostral possui uma correlação positiva em todos os lags e com decaimento lento, o que indica
dependência entre as observações. Observa-se também que, todos os lags apresentam-se fora do intervalo de
confiança (IC). Na FACP amostral, tem-se que todas as observações encontram-se dentro do IC, com lag 0 igual a
1. Dessa forma, para que tenhamos todos os lags dentro do IC, na FAC, será ajustado um modelo que melhor
represente o comportamento da série em questão.

2.3. Presença de Outliers


Utilizando o gráfico a seguir, podemos ver a presença ou não de outliers na série estudada.

boxplot(dados,col="blue",main="Gráfico 6 - Boxplot",ylab="IPP")

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 5/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Assim, como comprovado com o gráfico 6, a série não apresentou outliers, prosseguiremos as análises com a
série completa.

2.4. Normalidade da Série Temporal


Para testar a normalidade da série, foi realizado 2 testes, sendo eles: Shapiro-Wilk e Jarque-Bera, vistos
abaixo.

shapiro.test(dados.ts)

##
## Shapiro-Wilk normality test
##
## data: dados.ts
## W = 0.89721, p-value < 2.2e-16

jarque.bera.test(dados.ts)

##
## Jarque Bera Test
##
## data: dados.ts
## X-squared = 61.557, df = 2, p-value = 4.297e-14

Os testes possuem as seguintes hipóteses:

é
H0 : A s rie segue distribui ção normal
{
é ã
H1 : A s rie n o segue distribui ção normal

Logo, para os 2 testes, rejeita-se a hipótese nula de que a série segue uma distribuição normal, visto que os p-
valores são menores que o nível de significância de 0,05. Os p-valores obtidos foram 2,2e-16 e 4,297e-14, para os
testes de Shapiro-Wilk e Jarque-Bera, respectivamente.
ggqqplot(dados, main = "Gráfico 7 - QQplot")

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 6/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

No gráfico 7, podemos comparar os quantis amostrais com os quantis teóricos, ou seja, os quantis da
distribuição normal, como os mesmos não se dispõem em uma reta linear, concluímos que a série não possui
normalidade nos dados.

2.5. Transformação de Box-Cox


A transformação de Box-Cox é utilizada em séries temporais para obter uma distribuição mais próxima da
normal, para que assim a estimação de máxima verossimilhança da série estudada seja possível. Afinal, para o
cálculo dos EMVs precisa-se da suposição de normalidade.

Com base nos testes de normalidade de Shapiro-Wilk e Jarque-Bera e pelo qqplot, a série temporal em análise
não apresentou normalidade. Utilizando o pacote forecast, do software R , a rotina BoxCox.lambda() forneceu
resultados insatisfatórios, sendo impossível normalizar a série, logo as análises serão realizadas sem normalizar
os dados. Ressalta-se apenas que, em caso de querermos calcular os EMVs, não seria possível o cálculo, já que
é necessário a suposição de normalidade, no entanto a função auto.arima() , do software R , utiliza em seus
cálculos suposições de normalidade pra gerar o melhor modelo ARIMA.

2.6. Tendência da série


O Teste de Wald-Wolfowitz foi aplicado a série original e tem as seguintes hipóteses:

é ã ê
H0 : A s rie n o possui tend ncia (a s rie é é ó
aleat ria)
{
é ê
H1 : A s rie possui tend ncia (a s rie é é não ó
aleat ria)

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 7/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

waldwolf <- function(x){


m = median(x)
N = length(x)
S <- array(dim = N)
n1 = 0; n2= 0
for (i in 1:N)
{
if(x[i] >= m)
{S[i] = "A"; n1= n1+1}
else
{S[i] = "B"; n2 = n2+1}
}
t = 1
for (i in 2:N)
{
if(S[i] != S[i-1])
t = t + 1
}

mu <- 2*n1*n2/N + 1
s <- sqrt(2*n1*n2*(2*n1*n2-N)/(N^2*(N-1)))

pvalue <- pnorm(t, mean = mu, sd = s)


return(pvalue)
}
waldwolf(dados.ts)

## [1] 7.292472e-153

Assim, com esse teste comprova-se o que já foi constatado a partir da visualização gráfica da série original,
rejeita-se H0 ao nível de 5% de significância, logo a série é não estacionária, ou seja, possui tendência.

2.7. Modelo Autorregressivo Integrado e de Médias Móveis


(ARIMA)
A metodologia desenvolvida por Box and Jenkins (1970), baseia-se na ideia de que as observações possuem
uma ligação, a qual influencia o comportamento atual e futuro da série e, assim, se pode predizer os valores
futuros. Esse método, também conhecido como modelo Autorregressivo Integrado de Médias Móveis (ARIMA),
onde o filtro AR representa a parte autoregressiva, o filtro I representa a integração, a qual é utilizada para a série
se tornar estacionária e MA é o filtro de médias móveis.

Para verificar a estacionariedade, utiliza-se o gráfico da série em nível, ou seja, da série original, a fim de
identificar ciclos, tendências e comportamento da média. Entretanto, a confirmação da estacionariedade é mais
precisa ao utilizar os testes de raízes unitárias. Os testes de raízes unitárias mais utilizados são: Augmented
Dickey e Fuller – ADF (Dickey and Fuller 1981) e Phillips e Perron – PP (Phillips and Perron 1988). A correlação
entre as observações pode ser verificada por meio das funções de autocorrelação (FAC) e de autocorrelação
parcial (FACP) amostrais. Os gráficos da FAC e FACP amostrais também auxiliam na identificação do melhor
modelo (AR, MA, ARMA, ARIMA ou SARIMA) e na indicação da ordem do modelo a ser utilizado na etapa de
estimação (Box, Jenkins, and Reinsel 1994). No caso do presente trabalho, utilizaremos um modelo ARIMA, para
analisar e fazer previsões.

A equação do modelo geral ARIMA(p,d,q) é dada pela Equação:

d
ϕ(B)Δ Xt = θ(B)εt .

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 8/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Onde Δ representa a ordem de diferenças(integração) d que a série original deve ter até atingir a
d

estacionariedade, Xt representa a série temporal em análise, t corresponde ao instante de tempo em um


determinado período (atual ou passado), B é o operador de defasagem, ϕ(B) é o polinômio que representa a
parte autorregressiva do modelo (p) , θ(B) é o polinômio que representa a parte de médias móveis (q) e εt é o
processo ruído branco.

O resíduo (ε^ t ) corresponde à diferença entre os valores da série original e os valores preditos pelo modelo
ajustado. Esses resíduos devem ser do tipo Ruído Branco, com média zero, variância constante e valores não
autocorrelacionados (Morettin 2017).

Após a etapa de estimação dos modelos ARIMA, o melhor ajuste será escolhido com base no critério de
seleção de modelos Akaike (AIC) e no critério de informação Bayesiano (BIC). Serão selecionados os modelos
que apresentarem valores mínimos para essas estatísticas (Bozdogan 1987). Estes critérios são também
denominados penalizadores, pois ambos consideram o número de parâmetros dos modelos e a variância dos
erros (Akaike 1974 ; Schwarz 1978).

Com o objetivo de verificar a acurácia de previsão do modelo, aplicam-se as estatísticas de previsão estimadas
com os erros da modelagem. As estatísticas que serão utilizadas neste relatório são: Root Mean Squared Error
(RMSE), Mean Absolute Error (MAE), Mean Absolute Percentage Error (MAPE) e o coeficiente U-Theil.

O coeficiente U-Theil corresponde a comparação realizada entre os valores do modelo que foi ajustado e a
previsão dita ingênua. Nesta medida de acurácia se o valor de U-Theil for maior ou igual a 1, tem-se que o erro
médio do modelo ajustado é superior ou igual ao da previsão ingênua. Caso o valor de U-Theil seja menor que 1,
então pode-se dizer que o modelo ajustado é melhor previsor quando comparado com a previsão ingênua (prever
a série a partir da média).

Etapas para a aplicação da Modelagem ARIMA:

A metodologia de Box and Jenkins (1970) foi utilizada para modelar e prever o Índice de preços ao produtor
(IPP) da Alemanha. As etapas aplicadas da modelagem ARIMA foram:

Identificação: o pressuposto de estacionariedade foi verificado por meio de inspeção gráfica e confirmado
pelos testes de raízes unitárias (ADF e PP).
Estimação: o número de defasagens dos parâmetros foram determinados por meio dos gráficos da FAC e
FACP amostrais.
Validação: a condição de ruído branco foi verificada por meio da FAC e FACP dos resíduos e pelo teste de
Ljung-Box, além dos valores dos critérios de seleção de modelos AIC e BIC.
Previsão: na etapa final é realizada a previsão, podendo ser in-sample ou out-of-sample. Assim, para a
série em questão, considerou-se a previsão para os próximos 12 meses, sendo ela out-of-sample, ou seja,
fora da amostra.

2.7.1. Identificação da série


Para testar se a série apresenta estacionariedade, utiliza-se os testes de raízes unitárias, Augmented Dickey-
Fuller (ADF) e Phillips-Perron (PP). Os testes são realizados utilizando, respectivamente, as rotinas adf.test() e
pp.test() , do pacote tseries, do software R .

Os testes ADF e PP, possuem as seguintes hipóteses:

é
H0 : A s rie possui raiz unit ria (n oá ã é á
estacion ria)
{
é ã
H1 : A s rie n o possui raiz unit ria ( á é á
estacion ria)

adf.test(dados.ts, alternative ="stationary")

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 9/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

##
## Augmented Dickey-Fuller Test
##
## data: dados.ts
## Dickey-Fuller = -1.5011, Lag order = 8, p-value = 0.7895
## alternative hypothesis: stationary

pp.test(dados.ts, alternative ="stationary")

##
## Phillips-Perron Unit Root Test
##
## data: dados.ts
## Dickey-Fuller Z(alpha) = -3.625, Truncation lag parameter = 6,
## p-value = 0.9061
## alternative hypothesis: stationary

Obteve-se os p-valores iguais a 0,7895 e 0,9061, para os testes de Augmented Dickey-Fuller e Phillips-Perron,
respectivamente. Assim, não se rejeita a hipótese nula, ao nível de 5% de significância, e portanto a série
temporal não é estacionária, ou seja, possui raiz unitária. Portanto, é preciso diferenciar a série, para que a
mesma torne-se estacionária.

Aplicação da primeira diferença:

dif_dados<-diff(dados.ts, differences = 1)
df<-data.frame(x=1:length(dif_dados),y=dif_dados)
fig <- plot_ly(df,x = ~x,y = ~df$y, name = 'dados', color = "blue",type = 'scatter',
mode = 'lines')
fig <- fig %>% layout(title = 'Gráfico 8 - Primeira Diferença',
xaxis = list(title = 'Tempo'),
yaxis = list (title = 'Valores'))
fig

Gráfico 8 - Primeira Diferença

−5
Valores

−10

−15

100 200 300 400 500 600 700


file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 10/20
16/08/2020 Aplicação do Modelo ARIMA(p,d,q)
100 200 300 400 500 600 700
Tempo

No gráfico 8, percebe-se que após a aplicação da primeira diferença a série parece ser estacionária, já que a
média apresenta um comportamento constante ao longo do tempo. Pode-se comprovar essa hipótese, pelos
testes aplicados a seguir.

adf.test(dif_dados, alternative ="stationary")

##
## Augmented Dickey-Fuller Test
##
## data: dif_dados
## Dickey-Fuller = -7.8643, Lag order = 8, p-value = 0.01
## alternative hypothesis: stationary

pp.test(dif_dados, alternative ="stationary")

##
## Phillips-Perron Unit Root Test
##
## data: dif_dados
## Dickey-Fuller Z(alpha) = -714.11, Truncation lag parameter = 6,
## p-value = 0.01
## alternative hypothesis: stationary

Para os 2 testes, obteve-se o p-valor = 0,01 < α = 0,05. Assim, rejeita-se a hipótese nula, e a série temporal
diferenciada é estacionária, ou seja, não possui raiz unitária.

Funções de Autocorrelação (FAC) e Autocorrelação Parcial (FACP) amostrais da


série diferenciada:

ggtsdisplay(dif_dados,theme=theme_bw(),main="Gráfico 9 - Série com a primeira diferença")

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 11/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

No Gráfico 9, na FAC amostral, após a diferenciação da série, percebe-se que a mesma possui uma correlação
positiva até o lag 13, depois a correlação passa a ser negativa e assim segue alternando os sinais. Observa-se
também que, vários lags apresentam-se dentro do intervalo de confiança (IC). Na FACP amostral, tem-se que a
maioria das observações encontram-se dentro do IC. Assim, para que tenhamos todos os lags dentro do IC, será
ajustado um modelo que melhor represente o comportamento da série em questão.

figura<-cbind(Série_Original=dados.ts,Primeira_Diferença=dif_dados)
autoplot(figura, main ="Gráfico 10 - Série original e diferenciada")+labs(x = "Anos", y = "Quant
idade",colour = "Legenda")

No Gráfico 10, tem-se a série temporal original e a série diferenciada (d=1), representadas pelas cores
vermelho e azul, respectivamente. Percebe-se que após a aplicação da diferença, a série torna-se estacionária.

2.7.2. Estimação dos parâmetros do modelo


Desta forma, foi ajustado 2 modelos ARIMA(p,d,q) a série temporal. Sendo eles: ARIMA(1,1,1) e ARIMA(2,1,0).
Para a estimação dos modelos, foram utlizadas as funções auto.arima() e arima() , do software R .

fit<-auto.arima(dados.ts)
fit1<-arima(dados.ts, order= c(2,1,0))

Resumo do modelo ARIMA(1,1,1):

summary(fit)

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 12/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

## Series: dados.ts
## ARIMA(1,1,1) with drift
##
## Coefficients:
## ar1 ma1 drift
## 0.7715 -0.6810 0.0865
## s.e. 0.1346 0.1557 0.0379
##
## sigma^2 estimated as 0.5342: log likelihood=-792.2
## AIC=1592.39 AICc=1592.45 BIC=1610.7
##
## Training set error measures:
## ME RMSE MAE MPE MAPE
## Training set 0.0002971013 0.7288267 0.2260142 -0.002206413 0.2950381
## MASE ACF1
## Training set 0.1007197 -0.004733443

coeftest(fit)

##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.771531 0.134644 5.7302 1.003e-08 ***
## ma1 -0.680977 0.155667 -4.3746 1.217e-05 ***
## drift 0.086488 0.037941 2.2795 0.02264 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nos resultados acima, tem-se o resumo do modelo ARIMA(1,1,1) ajustado a série, o qual apresenta todos os
coeficientes significativos ao nível de 5% de significância. O modelo apresentou um drift no ajuste, o qual também
foi significativo ao nível de 5%. O drift é uma constante, além de ser uma função da média da série, que depende
dos parâmetros do modelo.

Resumo do modelo ARIMA(2,1,0):

summary(fit1)

##
## Call:
## arima(x = dados.ts, order = c(2, 1, 0))
##
## Coefficients:
## ar1 ar2
## 0.1010 0.0992
## s.e. 0.0371 0.0371
##
## sigma^2 estimated as 0.5379: log likelihood = -796.23, aic = 1598.46
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.06934998 0.7329342 0.2306707 0.1001821 0.2986308 0.9448579
## ACF1
## Training set -0.01373341

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 13/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

coeftest(fit1)

##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 0.101031 0.037101 2.7231 0.006467 **
## ar2 0.099245 0.037104 2.6748 0.007477 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nos resultados acima, tem-se o resumo do modelo ARIMA(2,1,0) ajustado a série, o qual apresenta todos os
coeficientes significativos ao nível de 5% de significância.

2.7.3. Validação do Modelo


Critérios de informação AIC e BIC:

tabela<-matrix(rep(NA,4),2)
tabela[1,]<-c(AIC(fit),BIC(fit))
tabela[2,]<-c(AIC(fit1),BIC(fit1))
row.names(tabela)<-c("ARIMA(1,1,1)","ARIMA(2,1,0)")
colnames(tabela)<-c("AIC","BIC")
kable(tabela)

AIC BIC

ARIMA(1,1,1) 1592.395 1610.70

ARIMA(2,1,0) 1598.460 1612.19

Conforme a tabela acima, temos os critérios de informação AIC e BIC dos modelos concorrentes. Portanto, o
modelo ARIMA(1,1,1) minimiza os critérios de informação, logo o mesmo é escolhido para as análises posteriores.

Medidas de acurácia:
Assim, algumas medidas de acurácia foram calculadas para os modelos concorrentes.

a<-accuracy(fitted(fit),dados.ts)
b<-accuracy(fitted(fit1),dados.ts)
# Comparando medidas de acurácia dos métodos
a1<-c(0.7288, 0.2260, 0.2950)
b1<-c(0.7329, 0.2307, 0.2986)
medidas1<-matrix(rep(NA,6),nrow = 2)
colnames(medidas1)<-c("RMSE","MAE","MAPE")
row.names(medidas1)<-c("ARIMA (1,1,1)","ARIMA (2,1,0)")
medidas1[1,]<-a1
medidas1[2,]<-b1
kable(medidas1)

RMSE MAE MAPE

ARIMA (1,1,1) 0.7288 0.2260 0.2950

ARIMA (2,1,0) 0.7329 0.2307 0.2986

print(c("U-Theil:",a[7]))

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 14/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

## [1] "U-Theil:" "0.972548055692223"

Analisando a tabela acima, temos que o modelo ARIMA(1,1,1) possui as menores medidas de acurácia, quando
comparado ao modelo ARIMA(2,1,0). Ressalta-se que a medida U-Theil (0,97), do modelo ARIMA(1,1,1) é
próximo de 1, o que aponta que o modelo ajustado apresenta melhores resultados que uma previsão ingênua.
Além de que, o MAPE apresentou um valor baixo, o que comprova que o modelo ARIMA(1,1,1) é um bom modelo.
Desta forma, o modelo selecionado apresenta o polinômio AR de ordem 1, com um fator de influência positivo
(0,7715) e o polinômio MA de ordem 1, com o filtro de médias móveis com parâmetro negativo (-0,6810).

Verificação das suposições do modelo:

plot(fit, main ="Gráfico 11 - Círculo unitário inverso")

No gráfico 11, percebe-se o círculo unitário inverso do modelo ARIMA(1,1,1). Logo, no círculo unitário à
esquerda temos a raiz do polinômio AR e no círculo unitário à direita temos a raiz do polinômio MA. Assim,
comprova-se que o modelo não possui raiz unitária, ou seja, é estacionário.

2.7.4. Análise de Resíduos


Gráficos dos resíduos:
Portanto, realiza-se uma análise de diagnóstico, para ver se temos um Ruído Branco (média 0, variância
constante e não autocorrelacionados) para o modelo ARIMA(1,1,1).

res.mod<-fit$residuals
ggtsdisplay(res.mod,main="Gráfico 12 - Análise gráfica dos resíduos")

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 15/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Logo, analisando os resíduos do modelo escolhido, pelo gráfico 12, nota-se que todos os lags estão dispostos
dentro do IC, assim temos um Ruído Branco. Portanto, todos os efeitos foram capturados pelos parâmetros
estimados no modelo ARIMA.

Teste de Ljung-Box:
O teste possui como hipóteses:

í ã ã
H0 : Os res duos n o s o autocorrelacionados
{
í ã
H1 : Os res duos s o autocorrelacionados

Box.test(res.mod,lag = 15, type="Ljung")

##
## Box-Ljung test
##
## data: res.mod
## X-squared = 2.3561, df = 15, p-value = 0.9999

Assim, como o p-valor foi maior que o nível de significância de 5%, não rejeita-se H0 , ou seja, os resíduos não
são autocorrelacionados, o que é o ideal, e com isso o modelo ARIMA(1,1,1) é adequado.

Normalidade dos resíduos:

shapiro.test(res.mod)

##
## Shapiro-Wilk normality test
##
## data: res.mod
## W = 0.26054, p-value < 2.2e-16

jarque.bera.test(res.mod)

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 16/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

##
## Jarque Bera Test
##
## data: res.mod
## X-squared = 6826563, df = 2, p-value < 2.2e-16

Logo, para os 2 testes, rejeita-se a hipótese de que os resíduos seguem uma distribuição normal, visto que os
p-valores são menores que o nível de significância de 0,05. O p-valor obtido foi de 2,2e-16, para os testes de
Shapiro-Wilk e Jarque-Bera, respectivamente.

ggqqplot(residuals(fit), main="Gráfico 13 - QQplot dos resíduos")

No gráfico 13, também podemos comparar os quantis amostrais com os quantis teóricos, ou seja, os quantis da
distribuição normal, como os mesmos não se dispõem em uma reta linear, concluímos que os resíduos da série
não possuem normalidade.

Estacionariedade dos resíduos:

adf.test(res.mod, alternative ="stationary")

##
## Augmented Dickey-Fuller Test
##
## data: res.mod
## Dickey-Fuller = -8.8365, Lag order = 8, p-value = 0.01
## alternative hypothesis: stationary

pp.test(res.mod, alternative ="stationary")

##
## Phillips-Perron Unit Root Test
##
## data: res.mod
## Dickey-Fuller Z(alpha) = -721.44, Truncation lag parameter = 6,
## p-value = 0.01
## alternative hypothesis: stationary

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 17/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

Os 2 testes, rejeitaram a hipótese nula ao nível de 5% de significância. Assim, os resíduos são estacionários,
ou seja, não possuem raízes unitárias.
Desta maneira, o modelo ARIMA(1,1,1) atende a todos os pressupostos da metodologia adotada, portanto, é
possível realizar a previsão da série.

2.7.5. Previsão
Após a estimação dos parâmetros do modelo ARIMA(1,1,1), e a validação do mesmo, é feita a previsão. A
previsão é feita fora da amostra (out-of-sample) e para os próximos 12 meses.

Gráfico da previsão da Série Temporal:

predict.mod<-forecast(fit,h=12)
kable(predict.mod)

Point Forecast Lo 80 Hi 80 Lo 95 Hi 95

Dec 2016 103.1302 102.1936 104.0669 101.69777 104.5627

Jan 2017 103.2505 101.8646 104.6364 101.13096 105.3700

Feb 2017 103.3630 101.6018 105.1243 100.66941 106.0566

Mar 2017 103.4696 101.3730 105.5662 100.26314 106.6760

Apr 2017 103.5716 101.1675 105.9756 99.89491 107.2482

May 2017 103.6700 100.9803 106.3598 99.55640 107.7836

Jun 2017 103.7657 100.8083 106.7232 99.24267 108.2888

Jul 2017 103.8593 100.6495 107.0691 98.95038 108.7683

Aug 2017 103.9513 100.5026 107.4000 98.67698 109.2257

Sep 2017 104.0420 100.3663 107.7178 98.42042 109.6637

Oct 2017 104.1318 100.2395 108.0241 98.17902 110.0846

Nov 2017 104.2208 100.1214 108.3202 97.95132 110.4903

Na Tabela acima, temos as observações previstas 12 passos à frente. Nota-se que a primeira coluna, são os
meses que estão sendo previstos, a segunda coluna, são as previsões dadas pelo modelo ARIMA(1,1,1) e as
outras colunas, correspondem aos limites inferiores e superiores do IC, considerando os níveis de confiança de
80% e 95%, respectivamente.

autoplot(predict.mod)+ggtitle("Gráfico 14 - Previsão do índice de preços ao produtor ")+xlab("Ti


me") + ylab("Valores")+theme_minimal()

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 18/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

No Gráfico 14, observa-se a série original, em preto, as previsões do modelo ajustado, em azul, e assim temos
as observações previstas para os próximos 12 meses.

Gráfico da predição e previsão da Série Temporal:

tmp.df<-cbind(dados.ts,predict.mod$mean,predict.mod$upper[,2], predict.mod$lower[,2],fitted(fi
t))
colnames(tmp.df)<-c("dados.ts","predict","upper","lower","fitted")
predict.df<-data.frame(Time=c(time(c(dados.ts,predict.mod$upper[,2]))),tmp.df)
# tail(predict.df)
fig<-ggplot(data = predict.df, aes(x=Time, y=value, continuous=FALSE,color=Legenda ))+
ylab('Valores R$')+ggtitle("Gráfico 15 - Predição e previsão da série")+
geom_line(aes(y=dados.ts , col='Dados Reais'))+
geom_line(aes(y=predict, col='Previsão'))+
geom_line(aes(y=fitted, col='Predição'))+
geom_line(aes(y=upper, col='Limite Superior'))+
geom_line(aes(y=lower, col='Limite Inferior'))+theme_minimal()
fig

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 19/20


16/08/2020 Aplicação do Modelo ARIMA(p,d,q)

O gráfico 15, mostra a previsão da série “Índice de preços ao produtor na Alemanha”. A série original está em
vermelho e a ajustada em azul. Observa-se que é uma previsão out-of-sample, ou seja, uma previsão fora da
amostra, na qual prevê passos à frente para as próximas 12 observações indexadas no tempo, que nesse caso
são os 12 meses à frente, que está indicado pela cor rosa. Tem-se também, os limites inferiores e superiores
representados pelas cores verde escuro e verde claro, respectivamente.

3. Conclusão
A metodologia de Box e Jenkins mostrou-se eficaz para compreender o comportamento do Índice de preços ao
produtor (IPP) na Alemanha, de janeiro de 1957 à novembro de 2016. O melhor modelo para prever o IPP, foi um
ARIMA(1,1,1), ou seja, o modelo teve o polinômio AR e MA de ordem 1 e uma diferença simples. Esse modelo foi
selecionado com base nos valores dos critérios de seleção de modelos AIC e BIC e utilizado para realizar a
previsão, dado que a sua acurácia foi superior a previsão ingênua, conforme o coeficiente U-Theil = 0,972548. A
previsão da série ocorreu de forma out-of-sample, a qual previu os próximos 12 meses, mostrando que o IPA,
ficará acima da média geral (80,42). Portanto, o modelo escolhido foi capaz de capturar os movimentos e
características da série em questão, apontando que a mesma é influenciada pelo mês anterior, bem como, pela
média do IPP dos últimos dois períodos.

REFERÊNCIAS
IBGE. (2020). “Índice de Preços ao Produtor - Indústrias Extrativas e de Transformação - IPP”. Disponível em:
(https://www.ibge.gov.br/estatisticas/economicas/precos-e-custos/9282-indice-de-precos-ao-produtor-industrias-
extrativas-e-de-transformacao.html?=&t=o-que-e (https://www.ibge.gov.br/estatisticas/economicas/precos-e-
custos/9282-indice-de-precos-ao-produtor-industrias-extrativas-e-de-transformacao.html?=&t=o-que-e)).

Akaike, Hirotugu. 1974. “A New Look at the Statistical Model Identification.” IEEE Transactions on Automatic
Control 19 (6): 716–23.

Box, GEP, and GM Jenkins. 1970. “Time Series Analysis, Forecasting and Control. San Francisco: Holden Day,
1970.” BoxTime Series Analysis Forecasting and Control1970.

Box, GEP, GM Jenkins, and GC Reinsel. 1994. “Time Series Analysis, Forecasting and Control. Englewood Clifs.”
NJ: Prentice Hall.

Bozdogan, Hamparsum. 1987. “Model Selection and Akaike’s Information Criterion (Aic): The General Theory and
Its Analytical Extensions.” Psychometrika 52 (3): 345–70.

Dickey, David A., and Wayne A. Fuller. 1981. “Likelihood Ratio Statistics for Autoregressive Time Series with a Unit
Root.” Econometrica 49 (4): 1057. https://doi.org/10.2307/1912517 (https://doi.org/10.2307/1912517).

IBGE. 2017. “Pesquisa Mensal de Comércio, Rio de Janeiro: IBGE, 2017.”

Morettin, Pedro A. 2017. Econometria Financeira: Um Curso Em Séries Temporais Financeiras. Editora Blucher.

Phillips, Peter CB, and Pierre Perron. 1988. “Testing for a Unit Root in Time Series Regression.” Biometrika 75 (2):
335–46.

Schwarz, Gideon. 1978. “Estimating the Dimension of a Model.” The Annals of Statistics 6 (2): 461–64.
https://doi.org/10.1214/aos/1176344136 (https://doi.org/10.1214/aos/1176344136).

Souza, Janes Ângelo de. 2004. “Para Entender Os ın


́ dices de Preços: Uma Visão Moderna.” Revista de Economia
Mackenzie 2 (2).

file:///C:/Users/fernando/Desktop/Faculdade/7ºSemestre/Séries Temporais/Tarefa 4/Atividade_4.html 20/20

You might also like