DESARROLLO DEL PARCIAL DE ECONOMETRÍA 2

A continuación se muestran los códigos necesarios para la estimación de los modelos del parcial aplicado.

Código del Desarrollo del Punto 1

library(xts)
library(tseries)
library(forecast)
library(lmtest)
library(readxl)
library(stargazer)
library(ggplot2)

#|----------------------------------------------------------------------------|#

#| Base de datos incluida en R
DATA <- read_excel("C:/Programacion en R/5. ECONOMETRIA 2/ECO-PARCIAL-1/DATA1.xlsx")

#|----------------------------------------------------------------------------|#

#| Definición de y como ST
ST <- ts(DATA, start = c(1953), frequency = 1)
y <- ST[,2]
y

#|----------------------------------------------------------------------------|#

#| Características de la ST
summary(y)   #| Media: 7.691 Mediana: 7.716
frequency(y) #| Anual: 1
start(y)     #| Comienza en el año 1953
end(y)       #| Termina en el año 2019

#|----------------------------------------------------------------------------|#

#| PASO 1. IDENTIFICACIÓN

par(mfrow=c(1,2))
FACS <-  acf(y, main="FACS", lag.max = 10, ylim=c(-1,1),ylab = "Autocorrelación Simple", xlab = "Rezago", col='red')
FACP <- pacf(y, main="FACP", lag.max = 10, ylim=c(-1,1),ylab = "Autocorrelación Parcial", xlab = "Rezago", col='red')

FACS  
FACP 

#|----------------------------------------------------------------------------|#

#| PASO 2. ESTIMACIÓN

#| Modelos candidatos a PGD

MODEL1 <- arima(y, order=c(2,0,0)) 
coeftest(MODEL1)

MODEL2 <- arima(y, order=c(0,0,2)) 
coeftest(MODEL2)

MODEL3 <- arima(y, order=c(1,0,1)) 
coeftest(MODEL3)

MODEL4 <- arima(y, order=c(0,0,3)) 
coeftest(MODEL4)

#|----------------------------------------------------------------------------|#

#| PASO 3. DIAGNOSTICO

#| Supuesto de No Autocorrelación [Error Estandarizado, FACS, Valores P] 
tsdiag(MODEL1) #| Modelo con NO AC 
tsdiag(MODEL2) #| Modelo con NO AC 
tsdiag(MODEL3) #| Modelo con NO AC 
tsdiag(MODEL4) #| Modelo con NO AC 

#| Supuesto de Normalidad
jarque.bera.test(MODEL1$residuals) #| Normal
jarque.bera.test(MODEL2$residuals) #| Normal
jarque.bera.test(MODEL3$residuals) #| Normal
jarque.bera.test(MODEL4$residuals) #| Normal

#| Prueba de raíces inversas
autoplot(MODEL1) #| Estacionario e Invertible
autoplot(MODEL2) #| Estacionario e Invertible
autoplot(MODEL3) #| Estacionario e Invertible
autoplot(MODEL4) #| Estacionario e Invertible

#| Criterio de Información Akaike - AIC
AIC(MODEL1) #| Mejor Modelo 1
AIC(MODEL2) 
AIC(MODEL3) 
AIC(MODEL4) 

#| Criterio de Información Bayesiano - BIC
BIC(MODEL1) #| Mejor Modelo 1
BIC(MODEL2)
BIC(MODEL3) 
BIC(MODEL4)

#|----------------------------------------------------------------------------|#

#| PASO 4. USO DEL MODELO - PRONOSTICAR

#| Se pronostica 2020 y 2021
PRONOSTICO_y <- forecast(MODEL1, h=2, fan=TRUE)
PRONOSTICO_y 

#|Y(2020): 6.159788
#|Y(2021): 6.007165

plot(PRONOSTICO_y)
plot(PRONOSTICO_y, xlim=c(2000,2022))

#|----------------------------------------------------------------------------|#

openxlsx::write.xlsx(PRONOSTICO_y, file = "C:/Programacion en R/5. ECONOMETRIA 2/ECO-PARCIAL-1/MODELO4_PRED.xlsx")
stargazer(MODEL1,MODEL2,MODEL3, MODEL4, type="text", out="mod1.doc") 

Código del Desarrollo del Punto 2

#|-------------------->>| DESARROLLO PARCIAL APLICADO  |<<--------------------|#

library(xts)
library(tseries)
library(forecast)
library(lmtest)
library(readxl)
library(stargazer)

#|----------------------------------------------------------------------------|#

y <- read.table(file = "clipboard", sep = "\t", header=TRUE)
y <- ts(y[,2], start = c(2001), frequency = 12)
y

#|----------------------------------------------------------------------------|#

#| Características de la ST
summary(y)   #| Media: 11.874 Mediana: 11.378
frequency(y) #| Mensual: 12
start(y)     #| Comienza en el mes 1 de 2001
end(y)       #| Termina en el mes 1 de 2023

#|----------------------------------------------------------------------------|#

#| Transformaciones - Diferencias de (y)

dy = diff(y, differences = 1)          #| Diferencia regular de y
s12y = diff(y, lag=12)                 #| Diferencia estacional de y
d1s12y = diff(s12y, differences = 1)   #| Diferencia regular y estacional de y

#| Transformaciones - Diferencias de log(y)

dly = diff(log(y), differences = 1)    #| Diferencia regular del log(y)
s12ly = diff(log(y), lag=12)           #| Diferencia estacional del log(y)
d1s12ly = diff(s12ly, differences = 1) #| Diferencia regular y estacional del log(y)

#|----------------------------------------------------------------------------|#

#| GRÁFICAS

#| Gráficas de las series en niveles
par(mfrow=c(1,2))
ts.plot(y, main="Serie Original (Y)")          
ts.plot(log(y), main="Log(Y)") 

#| Gráficas de las series diferenciadas regulares
par(mfrow=c(1,2))
ts.plot(dy, main="Diferencia Regular de (Y)") #| Varianza creciente
ts.plot(dly, main="Diferencia Regular del Log(Y)") #| Varianza estable

#| Gráficas de las series diferenciadas estacionales
par(mfrow=c(1,2))
ts.plot(s12y, main="Diferencia Estacional de (Y)")
ts.plot(s12ly, main="Diferencia Estacional del Log(Y)")

#| Gráficas de las series con diferencias regulares y estacionales 
par(mfrow=c(1,2))
ts.plot(d1s12y, main="Diferencia Regular y Estacional de (Y)")
ts.plot(d1s12ly, main="Diferencia Regular y Estacional del Log(Y)")

#|----------------------------------------------------------------------------|#

#| PASO 1. IDENTIFICACIÓN

#| Gráfico de FACS y FACP de log(y)
par(mfrow=c(1,2))
FACS <- acf(log(y), main="FACS de Log(Y)", lag.max = 36, ylim=c(-1,1),ylab = "Autocorrelación Simple", xlab = "Rezago", col='red')
FACP <- pacf(log(y), main="FACP de Log(Y)", lag.max = 36,ylim=c(-1,1),ylab = "Autocorrelación Parcial", xlab = "Rezago", col='red')
FACS
FACP

#| Gráfico de FACS y FACP de log(y) con diferencia regular
FACS <- acf(dly, main="FACS - Diferencia Regular de Log(Y)", lag.max = 36, ylim=c(-1,1),ylab = "Autocorrelación Simple", xlab = "Rezago", col='red')
FACP <- pacf(dly, main="FACP - Diferencia Regular de Log(Y)", lag.max = 36,ylim=c(-1,1),ylab = "Autocorrelación Parcial", xlab = "Rezago", col='red')
FACS
FACP

#| Gráfico de FACS y FACP de log(y) con diferencia estacional
FACS <- acf(s12ly, main="FACS - Diferencia Estacional de Log(Y)", lag.max = 36, ylim=c(-1,1),ylab = "Autocorrelación Simple", xlab = "Rezago", col='red')
FACP <- pacf(s12ly, main="FACP - Diferencia Estacional de Log(Y)", lag.max = 36,ylim=c(-1,1),ylab = "Autocorrelación Parcial", xlab = "Rezago", col='red')
FACS
FACP

#| Gráfico de FACS y FACP de log(y) con diferencia regular y estacional
FACS <- acf(d1s12ly, main="FACS - Diferencia Regular y Estacional - Log(Y)", lag.max = 36, ylim=c(-1,1),ylab = "Autocorrelación Simple", xlab = "Rezago", col='red')
FACP <- pacf(d1s12ly, main="FACP - Diferencia Regular y Estacional - Log(Y)", lag.max = 36,ylim=c(-1,1),ylab = "Autocorrelación Parcial", xlab = "Rezago", col='red')
FACS
FACP

#|----------------------------------------------------------------------------|#

#| PASO 2. ESTIMACIÓN

#| SARIMA(1,0,0)(1,1,0)_12
rpdqParam1 = c(1,0,0)
SPDQParam1 = c(1,1,0)
MODELO1 <- arima(log(y), rpdqParam1, seasonal = list(order = SPDQParam1, period = 12))
coeftest(MODELO1)

#| SARIMA(1,0,0)(0,1,0)_12
rpdqParam2 = c(1,0,0)
SPDQParam2 = c(0,1,0)
MODELO2 <- arima(log(y), rpdqParam2, seasonal = list(order = SPDQParam2, period = 12))
coeftest(MODELO2)

#| SARIMA(2,0,0)(0,1,1)_12
rpdqParam3 = c(2,0,0)
SPDQParam3 = c(0,1,1)
MODELO3 <- arima(log(y), rpdqParam3, seasonal = list(order = SPDQParam3, period = 12))
coeftest(MODELO3)

#|----------------------------------------------------------------------------|#

#| PASO 3. DIAGNOSTICO

#| DIAGNÓSTICO

#| Supuesto de No Autocorrelación [Error Estandarizado, FACS, Valores P] 
tsdiag(MODELO1) #| Modelo con NO AC     
tsdiag(MODELO2) #| Modelo con NO AC   
tsdiag(MODELO3) #| Modelo con NO AC



#| Supuesto de Normalidad
jarque.bera.test(MODELO1$residuals) #| No cumple NORMALIDAD
jarque.bera.test(MODELO3$residuals) #| No cumple NORMALIDAD
jarque.bera.test(MODELO4$residuals) #| No cumple NORMALIDAD


#| Prueba de raíces inversas
autoplot(MODELO1) #| Estacionario e Invertible
autoplot(MODELO2) #| Estacionario e Invertible
autoplot(MODELO3) #| 

#| Criterio Akaike y Bayesiano 
AIC(MODELO1)
AIC(MODELO2)  
AIC(MODELO3)  

BIC(MODELO1) 
BIC(MODELO2) 
BIC(MODELO3) 
 

#|----------------------------------------------------------------------------|#

#| PASO 4. USO DEL MODELO - PRONOSTICAR

#| Se pronostican 12 meses, es decir un año
par(mfrow=c(1,1))
MODELO3_PRED <- forecast(MODELO3, h=12)
MODELO3_PRED

plot(MODELO3_PRED)

MODELO3_PRED$fitted 
#| Si la serie esta en logaritmos para mirar el valor de la serie
#| en un periodo específico, se aplica exponencial y se conoce
#| entonces el dato real y no en logaritmo

PRONOSTICO_y <- exp(MODELO3_PRED$mean)
PRONOSTICO_y

#|----------------------------------------------------------------------------|#


stargazer(MODELO1, MODELO2,MODELO3, type="text", out="RESULTS.doc") 

openxlsx::write.xlsx(PRONOSTICO_y, file = "C:/Programacion en R/5. ECONOMETRIA 2/ECO-PARCIAL-1/MODELO3_PRED.xlsx")

#|----------------------------------------------------------------------------|#