Previsão com modelos ARIMA
Dra. Andréia Adami
Metodologia Box&Jenkis – Ajuste de modelos ARIMA
Introdução ao R
• Software livre
• Disponível em: www.r-project.org
• Site inclui programa, manuais, instruções, etc – atualizado diariamente
Instalando o R
• Acessar o site: www.r-project.org
• Clicar em CRAN – escolha o endereço
• Escolha o sistema operacional – Windows por exemplo
• Clique no subdiretório base e faça o download da última versão do R para seu computador.
Usando o R
• Depois de instalado o icone fica no Desktop
• Acione o R clicando 2 vezes no icone
• Digite no “Prompt”dados1<-c(85,85,87,90,91,82,81,82)
• enter
Usando o R
• Digite dados1 e dê <enter
• Outra opção: dados1=c(85,85,87,90,91,82,81,82)
• Digite dados1[3]dados1[3:5]dados1[dados1>85]dados1[(dados1>85)&(dados1<90)]
Usando o R
• y=dados1*10+100y
Criamos um novo conjunto de dados (vetor) que é composto dos dados originais multiplicados por 10 e somado de 100
Obtendo estatísticas básicas
• max(dados1) # mostra o valor máximo da série
• min(dados1) # mostra o valor mínimo da série
• mean(dados1) # mostra a média da série
• sum(dados1) # mostra a soma dos valores da série
• length(dados1) # mostra o tamanho do vetor (número de elementos)
Algumas operações básicas
• 2+2 - soma
• 2-2 - subtração
• 2*2 - multiplicação
• 2/2 – divisão
• 2^2 – exponenciação
Algumas funções básicas
• sqrt(9) – função que calcula a raiz quadrada
• sqrt(3*3^2) – calcula a raiz quadrada de 27
• sqrt((3*3)^2) - calcula a raiz quadrada de 27
• prod (2,2) – função multiplicação de 2x2
• prod (2,2,3,4) – multiplicação de 2x2x3x4
Algumas funções básicas
• Log – é a função para calcular o logaritmo
• log(3) – logaritmo natural de 3
• log(3,10) – log de 3 na base 10
• log10(3) – log de 3 na base 10
Acessando o menu ajuda
• help (função) – abre o help sobre a função
help(log)
Ou, ?log
Análise inicial de dados
• Usando o Script do R para digitar os comandos
• Script – arquivo.txt, fácil de fazer alterações e correções
• Criando um script – File -> New scriptO arquivo será salvo com a extensão .R.
3+3 Ctrl+R
Análise inicial de dados
• Salvando o arquivo no windows – .csv
• Importando os dados pro R
dados=read.csv(endereço, header=TRUE)dados=read.csv(file.choose())
Análise inicial de dados
Gráficos – função plot()
• plot(x) – faz o gráfico com a série x• plot(x,y,type=“l”) – outras opções (“b”;”c”;”h”;”o”;”s”)
Análise inicial de dados
Opções de gráficos
• plot(x,y)• plot(x,y,col=“red”) - cor• plot(x,y,pch=2) - símbolo• plot(x,y,type=‘l’, lty=2) – tipo de linha• plot(x,y,type=‘l’, lwd=2) – tamanho da linha
Análise inicial de dados
Construindo vários gráficos em uma mesma janela
• par(mfrow=c(2,2)• plot(x,log(x),type=‘l’) • plot(x,log(x),type=‘l’) • plot(x,sin(x),type=‘l’) • plot(x,sqrt(1/x),type=‘l’)
Análise Inicial dos Dados
• x = AirPassengers• x
• y = log(x)• y• length(y)
• plot(x,main='serie original',xlab='Anos',ylab='No de passageiros')• plot(y,main='serie original',xlab='Anos',ylab='No de passageiros')
Identificação do modelo
• Propriedades teóricas das FAC e FACP• Processo FAC FACP• aleatório 0 0• AR(1)-coeficiente>0 decaimento exponencial0,k>=2• AR(1)-coeficiente<0 decaimento oscilatório idem• AR(p) decaimento pra zero 0, k>p• MA(1) 0, k>1 Decaimento oscilatório• ARMA(p,q) decaimento a partir de q Decaimento a partir de p
Identificação do modelo
Função ACF
• Eixo x – lag k e no eixo y rk ;• A auto-correlação no lag 0 é sempre 1;• Ajuda a identificar modelos sazonais – correlações
periódicas significantes;• Usada para identificar tendência – decresce devagar;
No R - acf(x)
Identificação do modelo
Função PACF
• se a série segue um processo AR(p) então os coeficientes serão zero para todos os lags k>=p. Assim, um processo AR(p) tem um correlograma da função de auto-correlação parcial que é zero depois do lag p.
No R – pacf(x)
Identificação do modelo
• FAC amostral da diff simples e sazonal
• x = AirPassengers• y = log(x)• par(mfrow=c(4,2))
• plot(y,main='serie original',xlab='Anos',ylab='No de passageiros')m = acf(y,lag.max=36, plot=F)m$lag = m$lag*12plot(m,main='serie original')
Identificação do modelo
• plot(diff(y),main='serie diferenciada',xlab='Anos',ylab='No de passageiros')m = acf(diff(y),lag.max=36, plot=F)m$lag = m$lag*12plot(m, main = '1a diferenca')
• plot(diff(y,lag=12),main='serie sazonalmente diferenciada',xlab='Anos',ylab='No de passageiros')m = acf(diff(y,lag=12),lag.max=36, plot=F)m$lag = m$lag*12plot(m, main='1a diferença sazonal')
Identificação do modelo
• z = diff(diff(y),lag=12)plot(z,main='serie com 1 diferenca simples e 1 sazonal',xlab='Anos',ylab='No de passageiros')m = acf(z, lag.max=36, plot=F)m$lag = m$lag*12plot(m, main='1 diferença simples e 1 sazonal')
Note que ha valores grandes nas defasagens 1, 3, 12 e 23 do ultimo grafico. Isto pode ser uma indicação de que termos MA sazonais e não sazonais devem ser incluidos no modelo. Um modelo candidato para o logaritmo da serie é SARIMA(0,1,1)x(0,1,1).
Estimação
• No R: Função ARIMA
• m = arima(y,order=c(0,1,1),seasonal=list(order=c(0,1,1))) m
Diagnóstico• Análise de correlação resíduo• Teste LjungBox – H0: Dados não são correlacionados
• Box.test(m$residuals,lag=1,type='Ljung-Box') Box-Ljung test data: m$residuals X-squared = 0.0307, df = 1, p-value = 0.861.
Diagnóstico• Teste de Normalidade do Shapiro Wilk• H0: Dados são normais
• Shapiro.test(m$residuals)
Previsão• data(AirPassengers)• y = AirPassengers• x = log(y)• m = arima(x, order=c(0,1,1), seasonal=
list(order=c(0,1,1))• mp = predict(m, n.ahead=12, se.fit=T)• z=ts(x[100:144],fre=12,end=c(1960,12))• ts.plot(z,mp$pred, lty=c(1:2), ylim=c(5.6,6.8))
Previsão• abline(v=c(1961,1))• • li = mp$pred-2*mp$se• ls = mp$pred+2*mp$se• lines(ls,col=2)• lines(li,col=2)
PrevisãoPrevisoes na escala original• z1 = ts(y[100:144],fre=12,end=c(1960,12))• mp1 = exp(mp$pred)• ts.plot(z1, mp1, lty=c(1:2), ylim=c(300,800))• abline(v=c(1961,1)) • li1 = exp(li)• ls1 = exp(ls)• lines(ls1,col=2)• lines(li1,col=2)
• Arquivo com as previsões e intervalo de confiança• cbind(mp1,li1,ls1)
Top Related