library(foreign)
library(TSA)
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(urca)
library(forecast)
library(ggplot2)

La base que se presenta es indice de confianza del consumidor, la variable esta medida mensualmene y tiene base en enero de 2003. Esta base fue obtenida de inegi y la liga directa de captura: http://www.inegi.org.mx/sistemas/bie/

base<-read.csv(file.choose())
con<-ts(base$ICC, frequency=12, start=2001)
autoplot(con)

Se puede observar que la base no cuenta con una tendencia como tal, pero su media es muy dispersa por lo que sera necesario aplicar diferencias.

plot(log((con)),type="o")

Si aplicamos logaritmo a la serie se puede observar que se suavisa o se hace menos picuda la serie.

lcc<- log(con)
ggtsdisplay(diff(lcc,12))

Con la aplicacion de una diferencia estacional, se observa que los residuos no caen nunca por lo que no es recomendable trabajar con esta propuesta.

summary(ur.df(diff(lcc,12)))
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.228421 -0.023969  0.000441  0.021780  0.176479 
## 
## Coefficients:
##            Estimate Std. Error t value Pr(>|t|)   
## z.lag.1    -0.11632    0.03633  -3.202   0.0016 **
## z.diff.lag -0.05546    0.07124  -0.779   0.4372   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04116 on 194 degrees of freedom
## Multiple R-squared:  0.06267,    Adjusted R-squared:  0.05301 
## F-statistic: 6.486 on 2 and 194 DF,  p-value: 0.001877
## 
## 
## Value of test-statistic is: -3.2016 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
ggtsdisplay(diff(diff(lcc,12)))

Con la aplicacion de una diferencia estacional y otra no estacional se puede apreciar que la serie es más digerible para poder trabajar con ella.

summary(ur.df(diff(diff(lcc,12))))
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.219985 -0.022527 -0.001148  0.023025  0.172574 
## 
## Coefficients:
##            Estimate Std. Error t value Pr(>|t|)    
## z.lag.1    -1.21994    0.10656 -11.448   <2e-16 ***
## z.diff.lag  0.08916    0.07098   1.256    0.211    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04212 on 193 degrees of freedom
## Multiple R-squared:  0.5634, Adjusted R-squared:  0.5588 
## F-statistic: 124.5 on 2 and 193 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -11.4481 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
ggtsdisplay(diff(lcc,1))

Con la aplicacion de una diferencia no estacional podemos observar que los residuos no se diparan tanto de nuestra bandas de confianza y podemos trabajar con ella, por lo que es recomendable tratar esta serie con una sola diferencia no estacional.

summary(ur.df(diff(lcc,1)))
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.224592 -0.019114  0.002659  0.018549  0.163095 
## 
## Coefficients:
##            Estimate Std. Error t value Pr(>|t|)    
## z.lag.1    -1.26094    0.09974 -12.642  < 2e-16 ***
## z.diff.lag  0.18942    0.06847   2.766  0.00618 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03639 on 205 degrees of freedom
## Multiple R-squared:  0.5469, Adjusted R-squared:  0.5425 
## F-statistic: 123.7 on 2 and 205 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -12.6422 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

La prueba Dickey-Fuller refuerza lo dicho en la parte de abajo de la grafica para esta situacion.

eacf(diff(lcc,1))
## AR/MA
##   0 1 2 3 4 5 6 7 8 9 10 11 12 13
## 0 o x o o o o o o o o o  x  o  o 
## 1 x x o o o o o o o o o  x  o  o 
## 2 o o o o o o o o o o o  x  o  o 
## 3 x x o o o o o o o o o  x  o  o 
## 4 x x o x o o o o o o o  x  o  o 
## 5 o x x o o o o o o o o  o  o  o 
## 6 x o x o o o o o o o o  o  o  o 
## 7 x o o x o o o o o o o  o  o  o

La prueba de autocorrelacion extendida nos sugiere que apliquemos un ar(1) junto con un ma(2) o bien podemos aplicar un ar(0) con un ma(2)

fit1<-Arima(lcc, order=c(1,1,2), seasonal=c(1,0,1))
fit1
## Series: lcc 
## ARIMA(1,1,2)(1,0,1)[12] 
## 
## Coefficients:
##           ar1     ma1      ma2    sar1    sma1
##       -0.1903  0.1020  -0.1784  0.0124  0.2679
## s.e.   0.5507  0.5469   0.0802  0.6921  0.6882
## 
## sigma^2 estimated as 0.001255:  log likelihood=403.62
## AIC=-795.24   AICc=-794.83   BIC=-775.19
checkresiduals(fit1)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(1,1,2)(1,0,1)[12]
## Q* = 11.011, df = 19, p-value = 0.9235
## 
## Model df: 5.   Total lags used: 24

En esta propuesta nuestro criterio de AICc es de -794.83 lo cual debemos comparar con el de nuestras demas propuestas para saber si este es el criterio m’as pequeño.

fit2<-Arima(lcc, order=c(1,1,2), seasonal=c(0,0,1))
fit2
## Series: lcc 
## ARIMA(1,1,2)(0,0,1)[12] 
## 
## Coefficients:
##           ar1     ma1      ma2    sma1
##       -0.1865  0.0982  -0.1786  0.2800
## s.e.   0.5463  0.5425   0.0782  0.0793
## 
## sigma^2 estimated as 0.001248:  log likelihood=403.62
## AIC=-797.24   AICc=-796.95   BIC=-780.53
checkresiduals(fit2)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(1,1,2)(0,0,1)[12]
## Q* = 11.032, df = 20, p-value = 0.9454
## 
## Model df: 4.   Total lags used: 24
fit3<-Arima(lcc, order=c(0,1,2), seasonal=c(0,0,1))
fit3
## Series: lcc 
## ARIMA(0,1,2)(0,0,1)[12] 
## 
## Coefficients:
##           ma1      ma2    sma1
##       -0.0862  -0.1637  0.2827
## s.e.   0.0695   0.0723  0.0790
## 
## sigma^2 estimated as 0.001243:  log likelihood=403.57
## AIC=-799.14   AICc=-798.95   BIC=-785.77
checkresiduals(fit3)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,2)(0,0,1)[12]
## Q* = 11.01, df = 21, p-value = 0.9626
## 
## Model df: 3.   Total lags used: 24
fit4<-auto.arima(lcc,stepwise = FALSE, approximation = FALSE)
fit4
## Series: lcc 
## ARIMA(0,1,2)(0,0,1)[12] 
## 
## Coefficients:
##           ma1      ma2    sma1
##       -0.0862  -0.1637  0.2827
## s.e.   0.0695   0.0723  0.0790
## 
## sigma^2 estimated as 0.001243:  log likelihood=403.57
## AIC=-799.14   AICc=-798.95   BIC=-785.77
checkresiduals(fit4)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,2)(0,0,1)[12]
## Q* = 11.01, df = 21, p-value = 0.9626
## 
## Model df: 3.   Total lags used: 24

Coincidimos en que nuestra tercer propuesta es igual a nuestro autoarima por lo que se usara ese criterio para obtener nuestra ecuacion y nuestro pronostico.

ma1 ma2 sma1 -0.0862 -0.1637 0.2827

\[ Y_t= Y_t = \theta (-.0862) e_{t-1} + \theta (-.1637)e_{t-2} \Theta(-.2827) e_{t-12} \]

autoplot(forecast(fit4))