MODELO ARIMA COM O PACOTE FORECAST 1. INTRODUÇÃO Neste documento iremos mostrar como trabalhar o modelo ARIMA utilizando um pacote do R, (forecast) que permite a escolha de um modelo de forma automática. Este mesmo pacote permite efetuar previsões e o cálculo das principais medidas dos erros de previsão. Para complementar é feita a análise dos resíduos do modelo e plotados dois gráficos, sendo o primeiro da série original com as previsões, e o segundo da série original com as predições. É o mesmo pacote utilizado para suavização exponencial. Palavras-chave: Pacote forecast, modelo arima, previsão Comandos: tsdisplay( ) auto.arima( ) accuracy ( ) forecast ( ) seqplot.ts ( ) 2. PACOTE FORECAST O pacote forecast foi desenvolvido por Rob J Hyndman. É um pacote bem completo tendo um grande número de funções para modelos de previsão. Havendo interesse consulte a página do autor direcionada a este pacote: http:// www.robhyndman.info/forecasting/. Este documento focalizará apenas o modelo Arima. Mesmo para este modelo nem tudo o que o R permite está descrito a seguir. Procurou-se escrever este documento para que o mesmo se torne de fácil entendimento ao acadêmico ou engenheiro que está entrando em contato pela primeira vez com estas ferramentas. 3. USANDO DADOS DO PRÓPRIO R Novamente para tornar mais simples o entendimento iremos explicar através do uso de exemplos. Em todos eles será utilizado um conjunto de dados que está no próprio R: WWWusage. É uma série temporal com 100 elementos que corresponde ao número de usuários conectados a Internet num servidor a cada minuto. O R dispõe de vários conjuntos de dados, que são amplamente utilizados no exemplos da ferramenta de ajuda. Para carregar os dados é só digitar WWWusage na tela do R. > WWWusage Informações sobre a série podem ser obtidas digitando-se?wwwusage ou help(wwwusage).
4. MODELO ARIMA O próximo passo, antes da construção do modelo, é plotar gráficos da série, de autocorrelação e autocorrelação parcial. Os gráficos nos fornecem uma idéia geral do comportamento dos dados. Vamos utilizar o comando tsdisplay ( ),um dos recursos do R para este fim. EXEMPLO 1: Aplicando aos dados, verifique que o R retorna o gráfico da série original e os gráficos acf e pacf (Figura 1). tsdisplay(wwwusage) WWWusage 100 150 200 0 20 40 60 80 100 ACF -0.4-0.2 0.0 0.2 0.4 0.6 0.8 1.0 PACF -0.4-0.2 0.0 0.2 0.4 0.6 0.8 1.0 5 10 15 20 Lag 5 10 15 20 Lag Figura 1: Gráficos resultantes da função tsdisplay para os dados WWWusage. Percebe-se a presença de autocorrelação na série. É possível, com este pacote, aproximar de forma automática um modelo arima através do comando auto.arima ( ). Esta função retorna o melhor modelo Arima de acordo com os critérios de informação AIC, AICc ou BIC. A necessidade ou não de aplicar diferenças é feito pelo R. auto.arima(x, d = NA, D = NA, max.p = 5, max.q = 5, max.p = 2, max.q = 2, max.order = 5, start.p=2, start.q=2, start.p=1, start.q=1, stationary = FALSE, ic = c("aic","aicc", "bic"), stepwise=true, trace=false, approximation=length(x)>100 frequency(x)>12)
Onde x d D max.p max.q max.p max.q max.order start.p start.q start.p start.q stationary ic stepwise trace approximatio n Série temporal univariada Ordem das diferenças não sazonais. Se o valor não for dado é escolhido um com base no teste KPSS Ordem da diferença sazonal. Se o valor não for dado é escolhido um com base no teste Canova Hansen Máximo valor para p Máximo valor para q Máximo valor para P Máximo valor para Q Máximo valor para p+q+p+q se a seleção do modelo não for por stepwise Valor inicial para p no procedimento stepwise Valor inicial para q no procedimento stepwise Valor inicial para P no procedimento stepwise Valor inicial para Q no procedimento stepwise Se TRUE (verdadeiro), procura apenas modelos estacionários Critérios de informação a serem usados na seleção do modelo Se TRUE (verdadeiro), utilize o método stepwise para seleção. Caso contrário procura entre os todos os modelos, podendo ser demorado. Se TRUE (verdadeiro), são listados todos os modelos Arima possíveis. Se TRUE (verdadeiro), a estimação é baseada na soma de quadrados condicional e é feita uma aproximação do critério de informação usado na seleção do modelo. O modelo final ainda é computado usando estimação por máxima verossimilhança. Aproximações são usadas para séries muito longas (> 100) ou com frequência superior a 12. EXEMPLO 2: Vamos deixar que o R escolha o modelo Arima para os dados modelo=auto.arima(wwwusage) Obs: modelo é o nome que escolhemos para o objeto do R que corresponde ao modelo Arima. Ao digitar modelo o R retorna na tela o tipo de modelo, os parâmetros ar e ma, o erro padrão(sigma), a variância estimada, o coeficiente de máxima verossimilhança e os critérios de informação (AIC, AICc e BIC). Series: WWWusage ARIMA(1,1,1) Coefficients:
ar1 ma1 0.6504 0.5256 s.e. 0.0842 0.0896 sigma^2 estimated as 9.793: log likelihood = -254.15 AIC = 514.3 AICc = 514.42 BIC = 519.51 734.8276 É possível escolher o modelo a ser ajustado. Por exemplo auto.arima (WWWusage, 1,1,1) retorna o mesmo modelo acima. Uma vez escolhido o método, recomenda-se calcular algumas medidas dos erros de previsão. A função accuracy ( ) retorna as usuais medidas dos erros de previsão: ME (erro médio), RMSE (erro quadrático médio), MAE (erro absoluto médio), MPE (erro médio percetual), MAPE (erro percentual absoluto médio) e MASE (raiz do erro absoluto médio). O R permite calcular estas medidas dentro e fora da amostra. A sintaxe pode ser vista a seguir: accuracy (objeto, x, test) onde: Objet o x test um objeto da classe forecast ou um vetor numérico com previsões Um vetor opcional contendo os valores reais com a mesma dimensão do objeto Indicação de quantos elementos de x e do objeto serão testados Se o vetor x não for dado, o R irá retornar as medidas dentro da amostra. EXEMPLO 3: Em seguida são calculadas com o R as medidas dos erros para os dados da produção mensal de energia elétrica. accuracy(modelo) ME RMSE MAE MPE MAPE MASE 0.3035616 3.1137542 2.4052748 0.2805566 1.9174634 0.5315228 Para complementar é importante analisar os resíduos do modelo quanto à normalidade e também verificar se estes tem autocorrelação. Os resíduos do modelo podem ser obtidos com os seguintes comandos:
residuals (nome do objeto) ou nome do objeto$residuals O gráfico de autocorrelação dos resíduos é plotado com a função acf(). EXEMPLO 4: Para o modelo ajustado aos dados da produção de energia aão apresentados os resultados do R para a análise dos resíduos. Em primeiro lugar os resíduos, um histograma destes, o teste Jarque-Bera e o gráfico de autocorrelação. modelo$residuals Com os comandos acima um vetor com os resíduos do modelo é obtido. O histograma e o gráfico de autocorrelação dos resíduos pode ser visualizado na figura 2. hist(modelo$residuals) acf(modelo$residuals) Histograma dos resíduos ACF dos resíduos Frequency 0 5 10 15 20 25 ACF -0.2 0.0 0.2 0.4 0.6 0.8 1.0-10 -5 0 5 modelo$residuals 0 5 10 15 20 Lag Figura 2: Histograma e gráfico de autocorrelação dos resíduos
Em seguida a aplicação do teste Jarque-Bera, do pacote tseries, aos resíduos do modelo. jarque.bera.test(modelo$residuals) Jarque Bera Test data: modelo$residuals X-squared = 0.1324, df = 2, p-value = 0.936 Para fazer previsões, a função forecast(), mesmo nome do pacote deve ser utilizada. A sintaxe é bem simples: forecast(objeto, h, level=c(80,95), fan=false,...) onde: objet o h level Uma série temporal ou um objeto que corresponde a um modelo de previsão Número de períodos para a previsão. Se não for fornecido valor, o R assume como h o dobro do valor da frequência da série, ou h=10 para o caso de frequência igual a um. Grau de confiança para os intervalos, 80 e 95% (default) Deste modo podem ser feitas previsões com os modelos ajustados com auxílio do pacote. O R retorna as estimativas pontuais de previsão para o número de períodos de h e os respectivos intervalos de confiança. EXEMPLO 6: Cálculo com o R das previsões pontuais e intervalos de 80 e 95% de confiança para os dados anteriores. Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 101 218.8805 214.8700 222.8910 212.7469 225.0141 102 218.1524 208.5482 227.7566 203.4640 232.8408 103 217.6789 202.4689 232.8888 194.4172 240.9405 104 217.3709 196.8409 237.9009 185.9730 248.7688 105 217.1706 191.6935 242.6477 178.2067 256.1345 106 217.0403 186.9927 247.0879 171.0864 262.9942 107 216.9556 182.6857 251.2254 164.5444 269.3668 108 216.9005 178.7183 255.0826 158.5059 275.2950 109 216.8646 175.0412 258.6881 152.9012 280.8281 110 216.8413 171.6119 262.0708 147.6689 286.0138 Um gráfico com as previsões também pode ser plotado com a função plot (). plot(objeto,include)
Em include, informe o número de valores da série original retroativos a serem plotados. Caso não seja informado o R plota a série toda. O objeto corresponde as previsões obtidas com o comando forecast. Outro gráfico de interesse é o que traz a série original com os valores preditos. Isto é possível com o comando seqplot.ts(). seqplot.ts(série original,dados ajustados) Os dados ajustados são obtidos da mesma forma que os resíduos: nome do modelo$fitted ou fitted(nome do modelo) EXEMPLO 7: Para os dados da produção de energia foram constrúidos os gráficos com as séries reais e ajustadas e das previsões (figuras 3 e 4) plot(prev,include=10) seqplot.ts(wwwusage,fitted(modelo)) Forecasts from ARIMA(1,1,1) 160 180 200 220 240 260 280 95 100 105 110 Figura 3: Gráficos com as previsões
WWWusage 100 150 200 0 20 40 60 80 100 Time Figura 4: Gráfico da série original com os valores preditos REFERÊNCIAS Makridakis, Wheelwright and Hyndman (1998) Forecasting: methods and applications, Wiley: New York. http://www.robhyndman.info/forecasting/ Hyndman, R.J., Koehler, A.B., Ord, J.K., and Snyder, R.D. (2008) Forecasting with exponential smoothing: the state space approach, Springer-Verlag. http://www.robhyndman.info/expsmooth. Hyndman, R.J. and Koehler, A.B. (2006) "Another look at measures of forecast accuracy". International Journal of Forecasting, 22(4). SOUZA,G.P., SAMOHYL, R.W., MIRANDA, R.G. Métodos Simplificados de Previsão Empresarial. 1ª Edição. Editora Ciência Moderna. Rio de Janeiro: 2008.