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