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))