A série selecionada foi a x2.
library("forecast", lib.loc="~/R/win-library/3.2")
library("lmtest", lib.loc="~/R/win-library/3.2")
library("nortest", lib.loc="~/R/win-library/3.2")
dados <- read.csv2("D:/Guto/pessoal/especializacao/Series temporais/dados_trabalho.csv")
dados <- ts(dados[,2])
plot.ts(dados,main="SÉRIE x2")
Como se trata de dados simulados e observando o comportamento dados primeiros lags, parece conveniente descartar as primeiras observaçoes, até que o processo se estabilize. Foram descartadas 30 observações.
dados1 <- dados[-c(1:30)]
plot.ts(dados1,main="SÉRIE x2")
hist(dados1,prob=T,main="SÉRIE x2")
summary(dados1)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 28.23 56.89 67.68 67.86 78.97 101.40
var(dados1)
## [1] 254.4089
sd(dados1)
## [1] 15.9502
skewness(dados1)
## [1] -0.005346628
## attr(,"method")
## [1] "moment"
kurtosis(dados1)
## [1] -0.5503245
## attr(,"method")
## [1] "excess"
shapiro.test(dados1)
##
## Shapiro-Wilk normality test
##
## data: dados1
## W = 0.99017, p-value = 0.003123
Aparentemente, a série é estacionária e apresenta distribuição próxima a normal, menos apontada e com ligeira assimetria à direita. Pelo teste de Shapiro-Wilk, a hipótese de normalidade deve ser rejeitada (alfa=0,05).
Acf(dados1,lag=48,main="FAC")
Pacf(dados1,lag=48,main="FACP")
O FAC apresenta decaimento progresivo e o FACP um pico no primeiro lag, indicativos de um processo autorregressivo de ordem 1. O decaimento no FAC, no entanto, é lento, o que sugere não estacionariedade. O aparecimento de autocorrelações significativas por volta dos lags 12, 24 e 36 sugerem sazonalidade.
dif1 <- diff(dados1,lag=12,dif=1)
Acf(dif1,lag=48,main="FAC série X2 diferenciada S=12")
Pacf(dif1,lag=48,main="FACP série X2 diferenciada S=12")
Após a dferenciação para a sazonalidade, os correlogramas parecem indicar um processo autorregressivo de ordem 2.
Vamos propor e testar os seguintes modelos:
* modelo1: dados1 ~ SARIMA (2,0,0)(1,1,0)12
* modelo2: dados1 ~ SARIMA (2,0,0)(0,1,1)12
modelo1 <- Arima(dados1,order=c(2,0,0),seasonal=list(order=c(1,1,0),period=12),include.constant=F)
modelo1
## Series: dados1
## ARIMA(2,0,0)(1,1,0)[12]
##
## Coefficients:
## ar1 ar2 sar1
## 1.8085 -0.8292 -0.4546
## s.e. 0.0262 0.0263 0.0421
##
## sigma^2 estimated as 1.396: log likelihood=-729.16
## AIC=1466.32 AICc=1466.41 BIC=1482.82
coeftest(modelo1)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 1.808546 0.026230 68.949 < 2.2e-16 ***
## ar2 -0.829203 0.026318 -31.507 < 2.2e-16 ***
## sar1 -0.454645 0.042105 -10.798 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tsdiag(modelo1)
tsdisplay(residuals(modelo1))
Os coeficientes atendem as condições de estacionariedade e são estatisticamente significantes. Os correlogramas dos resíduos, no entanto, indicam fortes autocorrelações por volta dos lags 6, 12, 18 e 24. O AIC foi de 1466.32
Vamos ao segundo modelo:
modelo2 <- Arima(dados1,order=c(2,0,0),seasonal=list(order=c(0,1,1),period=12),include.constant=F)
modelo2
## Series: dados1
## ARIMA(2,0,0)(0,1,1)[12]
##
## Coefficients:
## ar1 ar2 sma1
## 1.7956 -0.8020 -0.9646
## s.e. 0.0281 0.0284 0.0444
##
## sigma^2 estimated as 1.008: log likelihood=-668.28
## AIC=1344.56 AICc=1344.64 BIC=1361.06
coeftest(modelo2)
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## ar1 1.795575 0.028124 63.845 < 2.2e-16 ***
## ar2 -0.802001 0.028419 -28.221 < 2.2e-16 ***
## sma1 -0.964631 0.044363 -21.744 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tsdiag(modelo2)
tsdisplay(residuals(modelo2))
Box.test (modelo2$residuals, lag = 48, fitdf=4, type = "Ljung")
##
## Box-Ljung test
##
## data: modelo2$residuals
## X-squared = 50.41, df = 44, p-value = 0.2348
Também no modelo 2 os coeficientes atendem os critérios de estacionariedade e são estatisticamente significantes. Os correlogramas dos resíduos e a estatística de Ljung-Box até o lag 48 indicam que as correlações dos resíduos não são estatisticamente significantes. o AIC para esse modelo é de 1344.56. Vamos prosseguir com a análise dos resíduos para verificar se se trata de ruído branco gaussiano.
plot(fitted(modelo2),scale(modelo2$residuals),main= "Resíduos versus valores ajustados",xlab="Valores Ajustados",ylab="Residuos Padronizados")
plot(1:length(scale(modelo2$residuals)),scale(modelo2$residuals),main="Resíduos versus ordem dos dados",xlab="Ordem da observação",ylab="Resíduos padronizados")
hist(scale(modelo2$residuals),main="Histograma dos resíduos",xlab="Resíduos padronizados")
qqnorm(modelo2$residuals)
shapiro.test(modelo2$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo2$residuals
## W = 0.99571, p-value = 0.2272
Os gráficos e o teste de normalidade corroboram o entendimento de que os resíduos do modelo2 são de fato ruído branco gaussiano.
Optamos, assim, pelo modelo2 x2 ~ SARIMA (2,0,0)(0,1,1)12 que parece traduzir satisfatoriamente o processo, possui vetor de resíduos do tipo ruído branco gaussiano e AIC menor.