Exemplo completo – ARIMA
Pacote forecast – R
Dados carrinho de mão
• Vendas de carrinho de mão
• Série mensal
2
Acessando o pacote
Digitar no R Console
> library(forecast)
ou
Preparando os dados
Mostra as seis primeiras colunas e/ou linhas
> head(cm)
Mostra as últimas seis…
> tail (cm)
Permite o acesso às variáveis de um conjunto de
dados
> attach(cm)
Outra opção – utilizar o $
Exemplo – cm$cm
Preparando a série
• O comando ts – vai “transformar” a sua série
de dados em uma série temporal.
– ts (dados, frequency= frequencia da serie (12 para mensal, 4 para
trimestral...), start=c(data de inicio),...)
• start=c(2005) – janeiro de 2005
• start=c(2005,2) – fevereiro de 2005)
• Ajuda? ?ts
Explorando a série - gráficos
plot(cm,type="b",pch=19,main="Vendas de carrinhos de mão")
Nota:
type= “b” –
both (pontos e
linhas)
type=“l” –
somente linhas
pch = 19 –
ponto cheio em
preto
Veja ?pch para
opções
Mostra numa única janela o gráfico da série temporal e os gráficos da ACF E PACF
> tsdisplay(cm)
Obs:
Note que a
série não
apresenta
autocorrelação.
Complementando
• Caso tenha interesse em construir gráficos de
acf e pacf em separado:
> acf (serie)
>pacf(serie)
Verificando a sazonalidade
> seasonplot(cm)
Plota um gráfico sazonal
Verifique que a
série não
apresenta
sazonalidade
Estimando o modelo ARIMA
A função auto.arima busca um modelo adequado aos dados.
meu.modelo.1 é o nome que estamos dando ao modelo – que está sendo armazenado)
A função summary retorna as estimativas dos parâmetros, critérios de informação,
como o AIC e BIC, além de algumas medidas dos erros (dentro da amostra)
meu.modelo.1<-auto.arima(cm)
summary (meu.modelo.1)
Veja que é um modelo
AR
O coeficiente AR1 é
0,6097
O erro padrão é
0,1061
O MAPE (erro
absoluto médio – em
%) é 30,091%
Avaliando se o modelo é adequado:
análise dos resíduos
Verificar se não há nenhum padrão e nem presença de
autocorrelação nos resíduos
Faz um gráfico dos resíduos e das FAC e FACP dos resíduos
> tsdisplay(meu.modelo.1$residuals)
Plota gráficos dos resíduos padronizados, ACF dos resíduos e resultados do teste
Ljung-Box
> tsdiag(meu.modelo.1)
Como podem ver, os
resíduos não
apresentam um padrão,
nem autocorrelação e
os p-valores estão ok
Um resíduo (veja
destaque) apresenta
valor superior a 3
Periodograma acumulado
>cpgram(meu.modelo.1$residuals)
Verificando a normalidade dos resíduos
Histograma dos resíduos
>hist(meu.modelo.1$residuals)
Gráfico de probabilidade normal
> qqnorm(meu.modelo.1$residuals)
> qqline(meu.modelo.1$residuals)
Teste de normalidade
Efetua o teste de normalidade Shapiro Wilk
> shapiro.test(meu.modelo.1$residuals)
Shapiro-Wilk normality test
data: meu.modelo.1$residuals
W = 0.9546, p-value = 0.02576
Efetuando as previsões
Previsões para três meses adiante
> previsao<-forecast(meu.modelo.1,h=3)
Retorna a previsão pontual (Point Forecast) e os intervalos de 80% e 95% de
confiança
Plotando um gráfico com as previsões
> plot(previsao)
Em azul estão as
previsões pontuais.
Em cinza escuro o
intervalo de 80% e em
cinza claro o de 95%
Plotando a série original, os valores
ajustados, as previsões e os intervalos
Calcula os valores ajustados pelo modelo
> preditos<-fitted(meu.modelo.1)
Plota esses valores no gráfico anterior, em azul
> lines(preditos,col=4)
Vendo o erro fora da amostra
Inserindo um vetor com as vendas dos três primeiros meses de 2012
vendas<-c(706,813,1088)
Transformando em série temporal
> vendas<-ts(vendas,frequency=12,start=c(2010,1))
> vendas
Jan
Feb
Mar
2010
706
813
1088
Calculando as medidas dos erros de previsão
accuracy(previsao,vendas)
OBS: accuracy (modelo) retorna o erro dentro da amostra
Comparando com um modelo de
suavização exponencial
Estimando um modelo de suavização exponencial
> meu.modelo.2<-ets(cm)
> summary(meu.modelo.2)
Efetuando as previsões (3 adiante) com o modelo 2 e verificando os erros de previsão
Compare agora essas medidas com as do modelo.1
Medidas dos erros – dentro da amostra – para o modelo 1 e modelo 2
E, o gráfico...
> plot(previsao.2)
> preditos.2<-fitted(meu.modelo.2)
> lines(preditos,col=4)
Considerações finais
• Neste exemplo vimos como utilizar os
procedimentos automáticos do pacote forecast
• Mas, nada substitui a análise feita por um
pesquisador, com base nos gráficos e informações
presentes
• O modelo escolhido pode não ser o “melhor”
modelo.
• Sugiro verificarem a função arima (?arima) e
Arima (?Arima) no R
Download

Exemplo completo * ARIMA