Fórum 2016 - Apresentação do “Latin America Online Retail Forecast, 2015 To 2020”
Exemplo completo – ARIMA Pacote forecast – R Dados carrinho de mão.
Transcript of Exemplo completo – ARIMA Pacote forecast – R Dados carrinho de mão.
Exemplo completo – ARIMA
Pacote forecast – RDados carrinho de mão
2
• Vendas de carrinho de mão• Série mensal
Acessando o pacoteDigitar 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áficosplot(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 ARIMAA 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,6097O 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 normalidadeEfetua o teste de normalidade Shapiro Wilk > shapiro.test(meu.modelo.1$residuals)
Shapiro-Wilk normality test
data: meu.modelo.1$residualsW = 0.9546, p-value = 0.02576
Bem, seria melhor que o p-valor superior a 0,05...Mas, vamos continuar com o exemplo!
Efetuando as previsõesPrevisõ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 amostraInserindo 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 Mar2010 706 813 1088
Calculando as medidas dos erros de previsãoaccuracy(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