Cargar Librerias

library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
library(ggplot2)
library(readxl)
library(TTR)

Importacion de Datos

d2s=co2
plot(co2)

El comportamiento de los datos es de forma multiplicativa y tiene tendencia creciente.

d2sl=log(d2s)
plot(d2sl)

Gráfico de la Serie

plot(d2sl,col="blue")

Modelo de Holt Winters

d2slw=HoltWinters(d2sl, seasonal = "multiplicative")
d2slwp=predict(d2slw,4)
d2slwp
##           Jan      Feb      Mar      Apr
## 1998 5.900201 5.902574 5.904801 5.908735
plot(d2slw,d2slwp)

Se pronostica que la serie sera creciente que tendra una subida amplia.

Serie Estacionaria

adf.test(d2sl)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  d2sl
## Dickey-Fuller = -3.2669, Lag order = 7, p-value = 0.0765
## alternative hypothesis: stationary

la serie no es estacionaria por que el p-valor es mayor a alfa.

d2sld=diff(d2sl)
adf.test(d2sld)
## Warning in adf.test(d2sld): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  d2sld
## Dickey-Fuller = -30.215, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary
d2sldd=diff(d2sl,12) 
adf.test(d2sldd)
## Warning in adf.test(d2sldd): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  d2sldd
## Dickey-Fuller = -4.8087, Lag order = 7, p-value = 0.01
## alternative hypothesis: stationary

el p-valor es menor que alfa. Por tanto se procede a realizar el modelo de mejor ajuste. La prueba de Dickey Fuller de la serie en diferencia regular y estacional es estacionario, porque el p-valor es menor que alfa. Por tanto se procede a realizar el modelo de mejor ajuste.

Modelo de mejor ajuste SARIMA

acf(d2sldd,main="función de autocorrelación")

Se observa en la función de autocorrelación un resago de forma significativa en la parte regular (MA(1))y en la parte estacional luego del resago 12 ninguno de los resagos es significativo (SMA(0)).

pacf(d2sldd,main="función de autocorrelación parcial")

auto.arima(d2sl)
## Series: d2sl 
## ARIMA(2,1,2)(2,1,0)[12] 
## 
## Coefficients:
##           ar1    ar2      ma1      ma2     sar1     sar2
##       -0.1775  0.188  -0.1968  -0.2851  -0.6022  -0.3563
## s.e.   0.3763  0.110   0.3744   0.2046   0.0455   0.0457
## 
## sigma^2 = 1.824e-06:  log likelihood = 2530.18
## AIC=-5046.35   AICc=-5046.1   BIC=-5017.51

Además en la función de autocorrelación parcial se observa igualmente ningun resago significativo en la parte regular (AR(2)) Y en la parte estacional luego del resago 12 uno es claramente significativo (SAR(1)).

mod1 = arima(d2sl, order=c(2,1,2), seasonal=list(order=c(1,1,0), period=12))
mod1
## 
## Call:
## arima(x = d2sl, order = c(2, 1, 2), seasonal = list(order = c(1, 1, 0), period = 12))
## 
## Coefficients:
##           ar1     ar2      ma1      ma2     sar1
##       -0.1425  0.2495  -0.2202  -0.2948  -0.4445
## s.e.   0.2734  0.1045   0.2702   0.1355   0.0431
## 
## sigma^2 estimated as 9.732e-07:  log likelihood = 2502.17,  aic = -4992.34
Box.test(d2s,lag = 12,type = "Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  d2s
## X-squared = 5104.1, df = 12, p-value < 2.2e-16
#Modelos SARIMA candidatos
mod2 = arima(d2sl, order = c(0,1,0), seasonal = list(order=c(0,1,0), period=12))
mod3 = arima(d2sl, order = c(0,1,1), seasonal = list(order=c(0,1,0), period=12))
mod4 = arima(d2sl, order = c(1,1,1), seasonal = list(order=c(0,1,0), period=12))
mod5 = arima(d2sl, order = c(1,1,1), seasonal = list(order=c(0,1,1), period=12))

#comparamos aic 
mod1$aic
## [1] -4992.343
Box.test(mod1$residuals)
## 
##  Box-Pierce test
## 
## data:  mod1$residuals
## X-squared = 4.9356, df = 1, p-value = 0.02631
mod2$aic
## [1] -4848.593
Box.test(mod2$residuals)
## 
##  Box-Pierce test
## 
## data:  mod2$residuals
## X-squared = 4.1612, df = 1, p-value = 0.04136
mod3$aic
## [1] -4896.719
Box.test(mod3$residuals)
## 
##  Box-Pierce test
## 
## data:  mod3$residuals
## X-squared = 4.9078, df = 1, p-value = 0.02674
mod4$aic
## [1] -4897.973
Box.test(mod4$residuals)
## 
##  Box-Pierce test
## 
## data:  mod4$residuals
## X-squared = 3.1766, df = 1, p-value = 0.0747
mod5$aic
## [1] -5132.064
Box.test(mod5$residuals)
## 
##  Box-Pierce test
## 
## data:  mod5$residuals
## X-squared = 5.5533, df = 1, p-value = 0.01845