PRESENTACION DEL TRABAJO FINAL

JUAN JOSE ARIAS MONTERROZA

6/7/2021

PRESENTACION

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

ECONOMETRÍA

TEMA DE INVESTIGACIÓN:

“COMPOSICION DEL GASTO DE LAS FAMILIAS DEL AREA URBANA DE AHUACHAPAN, DURANTE EL AÑO 2019”.

DOCENTE:

MSF. Carlos Ademir Pérez Alas.

Integrantes:

ARIAS MONTERROZA, JUAN JOSE.      AM19005.

HERNANDEZ ROMERO, ALAN ERNESTO.      HR15033.

GRUPO:

2-5

CIUDAD UNIVERSITARIA, LUNES 8 DE JULIO DE 2021.

PLANTEAMIENTO DEL PROBLEMA

“COMPOSICION DEL GASTO DE LAS FAMILIAS DEL AREA URBANA DE AHUACHAPAN, DURANTE EL AÑO 2019”

Como entidad, las familias son la unidad de mayor consumo de una sociedad. Por ello, el consumo de nuestro agente económico: La familia, es nuestro fundamento para iniciar este estudio.

Según la Encuesta Nacional de Ingresos y Gastos de los Hogares (ENIGH) se puede establecer el Gasto de consumo “como la totalidad monetaria de mercancías comprada y los servicios pagados por los hogares” Como estos factores se pueden medir en unidades monetarias, lo que permite situar los hogares en posiciones relativas y realizar comparaciones entre los distintos niveles de bienestar de las familias lo que es fundamental en el análisis de desigualdad y disparidad en la distribución de recursos de una sociedad.

JUSTIFICACION

Nuestro proyecto se enfocará en estudiar las necesidades de consumo de las familias en el occidente de nuestro país, en el municipio de Ahuachapán, y profundizamos sobre la relación de las variables de la Encuesta de Hogares de Propósitos Múltiples para ampliar el estudio de este y evaluar su representatividad. Es importante retomar un estudio general y poder llevarlo hasta la parte mas especifica de una investigación, nuestro trabajo permitiría mostrar la conexión existente y los cambios entre los factores que alteran una decisión, en este caso una decisión de consumo.

Dejamos de lado el conocimiento empírico de la sociedad y comprobamos las consecuencias existentes de aumentar el tamaño de una familia y su impacto a las necesidades básicas, por ejemplo, esa relación detallada es nuestro propósito de estudio. Estamos seguros de que muchas familias desconocen sus gastos y la importancia de planificar sus ingresos, este ejercicio estadístico es necesario para ordenar, estimar, proponer y proyectar un orden en nuestro estudio

OBJETIVOS

General:

• Desarrollar un caso practico con datos reales utilizando RStudio como programa estadístico para predecir fenómenos diversos, cuantificar la relación entre sus variables y realizar conclusiones sobre el comportamiento de consumo de las familias en Ahuachapán.

Específicos:

• Estimar un modelo de regresión lineal múltiple con nuestra base de datos identificando en ellas variables con relación y coherencia para formular pronosticos y parametros de importancia.

• Interpretar los resultados de los supuestos de nuestro modelo aplicando nuestros conocimientos estudiados en clase.

MARCO TEORICO DEL FENOMENO

El gasto en consumo que realizan los hogares es uno de los determinantes del estilo de vida de las familias y de la riqueza que posee un hogar, está bastante relacionado con la cantidad de miembros que lo habiten. Por esta razón, es que el uso de los datos obtenidos de la EHPM 2019 es importante a la hora de evaluar la estructura que presenta la distribución en una sociedad. Estas estadísticas son utilizadas para diferentes fines, como, por ejemplo: Estas estadísticas son utilizadas para diferentes fines, como, por ejemplo: • Para estudiar que cantidad de la población en el área urbana de Ahuachapán se encuentran en los niveles más bajos o altos de la distribución y medir su dispersión (desigualdad). • También se utilizan para analizar las características de los grupos de la población correspondientes y de esta forma establecer patrones de consumo

ESPECIFICACION

Variable Endógena: • Gasto Total de los Hogares

Variables Exogenas: • Numero de miembros del hogar. • Gasto del hogar en alimentación. • Gasto del hogar en articulo de servicio • Gasto en educación.

HIPOTESIS

Hipótesis General del Modelo: El gasto total de los hogares de Ahuachapan durante el 2019 es explicado por el número de miembros del hogar, gasto del hogar en alimentación, gasto del hogar en artículos y servicios y el gasto del hogar en educación.

Hipótesis Especificas:

Hipotesis 1: Número de miembros del hogar

Hipotesis 2: Gasto en Alimentación

Hipotesis 3: Gastos en artículos y servicios.

Hipótesis 4: Gastos en educación.

ESPECIFICACION DEL MODELO MATEMATICO.

Y = β + β X + β X + β X + β X

Donde:

Y = Gasto total de los Hogares

X1 = Número de Miembros del Hogar utilizados

X2 = Gasto en Alimentación operativos

X3 = Gasto en Artículos y Servicios

X4 = Gasto en Alimentación

Restricciones de los parámetros.

Número de miembros del hogar

Gasto de los hogares en alimentación

ESPECIFICACION DEL MODELO ESTADISTICO.

Y = β + β X + β X + β X + β X + ε

EVIDENCIA EMPIRICA

gastohog = Gasto total del Hogar r021a = Número de miembros del Hogar ghali = Gasto del Hogar en Alimentación ghu12 = Gasto del Hogar en Artículos y Servicios gmed = Gasto del Hogar en Educación

#Cargando la base de datos
library(haven)
library(haven)
Base_Datos <- read_sav("C:/Users/arias/Downloads/Base Datos.sav")
Datos<-Base_Datos[c(2,3,4,5,6)]
#Para mostras las primeras 5 muestras de los datos
head(Datos,n=5)
## # A tibble: 5 x 5
##   gastohog r021a ghali ghu12  gmed
##      <dbl> <dbl> <dbl> <dbl> <dbl>
## 1    110.      5  4.35  13.2  21.6
## 2    101.      3 24.6   15.2   0  
## 3     90.5     2 25.1    8.5  44.9
## 4    158.      2 31.1   93.3   0  
## 5     73.8     6 32.9   20.5  10

ESTIMACION

ESTIMACION DEL MODELO

library(stargazer)
modelo<-lm(formula = gastohog~r021a+ghali+ghu12+gmed,data = Datos)
stargazer(modelo,title="Modelo lineal de Gasto de los Hogares",type="text")

Modelo lineal de Gasto de los Hogares

                    Dependent variable:    
                ---------------------------
                         gastohog          
r021a -5.862 (3.753)
ghali 1.184*** (0.113)
ghu12 1.459*** (0.127)
gmed 1.297*** (0.083)
Constant 54.881*** (18.695)

Observations 200
R2 0.842
Adjusted R2 0.839
Residual Std. Error 87.874 (df = 195)
F Statistic 259.935*** (df = 4; 195)
=============================================== Note: p<0.1; p<0.05; p<0.01

VERIFICACION DE SUPUESTOS DE MCRLM

Verificación del supuesto de Normalidad

Regla de desición:

Rechazar: Ho si 𝐽𝐵 ≥ 𝑉.𝐶

Rechazar: Ho si 𝑝 ≤ 𝛼

Prueba Jarque Bera (JB)

#Calculando el valor critico
VC_JB<-qchisq(p=0.05,df=2,lower.tail = FALSE)
print(VC_JB)
## [1] 5.991465
#Prueba JB usando libreria normtest
library(normtest)
JB<-jb.norm.test(modelo$residuals)
print(JB)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo$residuals
## JB = 339.75, p-value < 0.00000000000000022
#Grafiacando la prueba
library(fastGraph)
shadeDist(xshade = JB$statistic,ddist = "dchisq",parm1 = 2,lower.tail = FALSE,sub=paste("VC:",VC_JB,"JB:",JB$statistic))

Para un nivel de significancia de 5%

Como 83.52 > 5.991465, se rechaza la hipotesis Ho. Hay evidencia que los residuales no tienen una distribucion normal.

Alternativamenmte

VERIFICACION DE SUPUESTOS DE MCRLM

Prueba Kolmogorov Smirnov - Lilliefors

Regla de desición:

Rechazar: Ho si D ≥ 𝑉.𝐶.

Rechazar: Ho si 𝑝 ≤ 𝛼

#Prueba KS
library(nortest)
lillie.test(modelo$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo$residuals
## D = 0.14589, p-value = 0.0000000000362
#Calculando valor critico
matriz_X<- model.matrix(modelo)
n_ks<-nrow(matriz_X)
VC_KS<-((0.875897)/sqrt(n_ks))
print(VC_KS)
## [1] 0.06193527

Como 0.10676 > 0.06193527, se rechaza la hipotesis Ho. Hay evidencia que los residuales no tienen una distribucion normal.

VERIFICACION DE SUPUESTOS DE MCRLM

Prueba Shapiro - Wilk

Regla de desición:

Rechazar Ho si 𝑊𝑁 ≥ 𝑉.𝐶.

Rechazar Ho si 𝑝 ≤ 𝛼

#Calculando el Valor Critico
VC_SW<-qnorm(p = 0.95)
print(VC_SW)
## [1] 1.644854
SW<-shapiro.test(modelo$residuals)
print(SW)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.83156, p-value = 0.00000000000005949
#Resultados en forma grafica
library(fastGraph)
shadeDist(xshade = 0.9413,ddist = "dnorm",parm1 = 0,parm2 = 1, lower.tail = FALSE, sub=paste("SW:",SW,"VC:",VC_SW,SW$statistic))

Como 0.91388 < 1.644854, se rechaza la hipotesis Ho.Hay evidencia que los residuales no tienen una distribucion normal.

VERIFICACION DE SUPUESTOS DE MCRLM

Verifiación del supuesto de Multicolinealidad

Atravéz del índice de condición

Cálculo de la matriz X’X

library(stargazer)
matriz_x<-model.matrix(modelo)
matriz_xx<-t(matriz_x)%*%(matriz_x)
stargazer(matriz_xx,type = "text")
## 
## =============================================================================
##             (Intercept)    r021a        ghali         ghu12         gmed     
## -----------------------------------------------------------------------------
## (Intercept)     200         823      25,807.630    10,670.800    12,065.290  
## r021a           823        4,015     111,216.900   43,911.920    59,462.060  
## ghali       25,807.630  111,216.900 4,220,057.000 1,718,111.000 2,006,743.000
## ghu12       10,670.800  43,911.920  1,718,111.000 1,185,274.000  826,406.900 
## gmed        12,065.290  59,462.060  2,006,743.000  826,406.900  2,163,404.000
## -----------------------------------------------------------------------------

Procederemos a normalizar X’X, posteriormente se obtienen sus autovalores.

# Matriz de normalización Sn.
library(stargazer)
Sn<-solve(diag(sqrt(diag(matriz_xx))))
stargazer(Sn,type = "text",title = "Matriz de Normalizacion")
## 
## Matriz de Normalizacion
## ==============================
## 0.071   0     0      0     0  
## 0     0.016   0      0     0  
## 0       0   0.0005   0     0  
## 0       0     0    0.001   0  
## 0       0     0      0   0.001
## ------------------------------
# Normalizamos X'X
XX_norm<-(Sn%*%matriz_xx)%*%Sn
stargazer(XX_norm,type = "text", title = " Matriz X'X Normalizada")
## 
## Matriz X'X Normalizada
## =============================
## 1     0.918 0.888 0.693 0.580
## 0.918   1   0.854 0.637 0.638
## 0.888 0.854   1   0.768 0.664
## 0.693 0.637 0.768   1   0.516
## 0.580 0.638 0.664 0.516   1  
## -----------------------------
# Autovalores de X'X
Lamdas<-eigen(XX_norm)$values
stargazer(Lamdas,type = "text", title = "Autovalores")
## 
## Autovalores
## =============================
## 3.889 0.514 0.412 0.117 0.068
## -----------------------------

A continuación se calcula el indice de condición.

K<-sqrt(max(Lamdas)/min(Lamdas))
print(K)
## [1] 7.546261

Un indice de condición con un valor por debajo de 20, sugiere la presencia de multicolinealidad leve en los regresores del modelo, para nuestro caso el valor de este es de 7.57 con lo cual podemos decir que para nuestro modelo la multicolinealidad no es considerada un problema.

VERIFICACION DE SUPUESTOS DE MCRLM

Aplicación de la prueba de Farrar-Glaubar

Normalizamos X, calculamos R y obtenemos su determinante |R|.

# X normalizada
library(stargazer)
Zn<-scale(matriz_x[,-1])
stargazer(head(Zn,n=6),type = "text", title = "Matriz X Normalizada")
## 
## Matriz X Normalizada
## =============================
##   r021a  ghali  ghu12   gmed 
## -----------------------------
## 1 0.498  -1.865 -0.722 -0.456
## 2 -0.627 -1.563 -0.685 -0.710
## 3 -1.190 -1.555 -0.806 -0.182
## 4 -1.190 -1.464 0.719  -0.710
## 5 1.061  -1.438 -0.590 -0.593
## 6 -0.627 -1.380 -0.394 -0.710
## -----------------------------
# Obteniendo R
n.<-nrow(Zn)
R.<-(t(Zn)%*%Zn)*(1/(n.-1))
stargazer(R.,type = "text",digits = 4,title = "Matriz R")
## 
## Matriz R
## =================================
##       r021a  ghali  ghu12   gmed 
## ---------------------------------
## r021a   1    0.2122 0.0001 0.3267
## ghali 0.2122   1    0.4608 0.3980
## ghu12 0.0001 0.4608   1    0.1943
## gmed  0.3267 0.3980 0.1943   1   
## ---------------------------------
# Calculamos |R|
determinante_R.<-det(R.)
stargazer(determinante_R.,type = "text",title = "Determinante de R")
## 
## Determinante de R
## =====
## 0.578
## -----

Obtenemos el estadístico de prueba de Farrar-Glaubar.

# Obtención del estadistico de prueba
m.<-ncol(matriz_x[,-1])
n.<-nrow(matriz_x[,-1])
Chi_FG<--(n.-1-(2*m.+5)/6)*log(determinante_R.)
print(Chi_FG)
## [1] 107.8611

Obtenemos el valor critico.

gl<-m.*(m.-1)/2
Vc<-qchisq(p=0.95,df=gl)
print(Vc)
## [1] 12.59159

Estos resultados nos sugieren que debemos de rechazar la hipótesis nula, y considerar la existencia de evidencias en favor de la presencia de cierto grado de multicolinealidad en los regresores del modelo ya que el estadistico de prueba es mayor al valor critico.

Presentación de los resultados

library(fastGraph)
shadeDist(xshade = Chi_FG, ddist = "dchisq", parm1 = gl, lower.tail = FALSE, sub =paste("VC", Vc, "FG",Chi_FG ),col = c("blue","orange"))

VERIFICACION DE SUPUESTOS DE MCRLM

OBTENCION DE LOS FACTORES INFLACIONARIOS DE LA VARIANZA (VIF).

#Obtención de VIF'S a traves de libreria "mctest"
library (mctest)
mc.plot(mod = modelo,vif = 5.10)

VERIFICACION DE SUPUESTOS DE MCRLM

Verificación del supuesto de Heterocedasticidad

IMPLEMENTAMOS LA PRUEBA DE WHITE PARA DETECION DE HETEROCEDASTICIDAD EN LOS RESIDUOS.

Data_gastos<-Datos
names(Data_gastos)<-c("Y","X1","X2","X3","X4")

Prueba de White

library(lmtest)
options(scipen = 99999)
prueba_White<-bptest(modelo,~I(X1^2)+I(X2^2)+I(X3^2)+I(X4^2)+X1*X2+X1*X3+X1*X4+X2*X3+X2*X4+X3*X4,data = Data_gastos)
print(prueba_White)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 24.513, df = 14, p-value = 0.03969

Se rechaza la Hiótesis nula ya que hemos obtenido un valor p (0.03969) menor que el nivel de significancia (0.05), esto sugiere que existen evidencias en favor de la presencia de heterocedasticidad en la distribución de los residuos del modelo.

Presentacion gráfica de los resultados

library(fastGraph)
gl<-14
vc<-qchisq(p=0.95,df=gl)
shadeDist(xshade = prueba_White$statistic,ddist = "dchisq",parm1 =gl,lower.tail = FALSE,sub=paste("vc",vc,"W",prueba_White$statistic ))

VERIFICACION DE SUPUESTOS DE MCRLM

Verificación del supuesto de Autocorrelación

Prueba Durbin Watson para autocorrelación de primer orden

library(lmtest)
dwtest(modelo,alternative="two.sided",iterations=1000)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 1.948, p-value = 0.6663
## alternative hypothesis: true autocorrelation is not 0

Pra un nivel de significancia de 5%

Como Pvalue > 0.05. En ambos casos se puede rechazar la presencia de autocorrelacion de primer orden.

Pruebas de orden superior

Pruebas de multiplicador de Lagrange de primer orden

library(stargazer)
library(lmtest)
bgtest(modelo,order = 1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo
## LM test = 0.12219, df = 1, p-value = 0.7267
library(stargazer)
library(lmtest)
bgtest(modelo,order = 2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  modelo
## LM test = 0.46634, df = 2, p-value = 0.792

CORRECCIONES AL MODELO

Estimacion Robusta

#Corregido:
options(scipen = 999999)
library(lmtest)
library(sandwich)

estimacion_omega<-vcovHC(modelo,type = "HC0")
coeftest(modelo,vcov. = estimacion_omega)
## 
## t test of coefficients:
## 
##             Estimate Std. Error t value              Pr(>|t|)    
## (Intercept) 54.88077   15.92573  3.4460             0.0006966 ***
## r021a       -5.86242    3.19028 -1.8376             0.0676452 .  
## ghali        1.18375    0.11112 10.6528 < 0.00000000000000022 ***
## ghu12        1.45930    0.25412  5.7426         0.00000003532 ***
## gmed         1.29717    0.10735 12.0834 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Matriz de varianza no escalar a traves de la libreria Sandwich. Utilizamos HC0 debido a qué lo unico que interesa es corregir la Heterocedasticidad.

options(scipen = 999999)
library(robustbase)
library(stargazer)
modelo_robust<-lmrob(gastohog~r021a+ghali+ghu12+gmed,data = Datos)
stargazer(modelo, modelo_robust, type = "text", title = "Comparativa")
## 
## Comparativa
## ================================================================
##                                       Dependent variable:       
##                                ---------------------------------
##                                            gastohog             
##                                          OLS            MM-type 
##                                                          linear 
##                                          (1)              (2)   
## ----------------------------------------------------------------
## r021a                                   -5.862           -0.754 
##                                        (3.753)          (1.970) 
##                                                                 
## ghali                                  1.184***         1.085***
##                                        (0.113)          (0.067) 
##                                                                 
## ghu12                                  1.459***         1.714***
##                                        (0.127)          (0.132) 
##                                                                 
## gmed                                   1.297***         1.108***
##                                        (0.083)          (0.079) 
##                                                                 
## Constant                              54.881***         21.762**
##                                        (18.695)         (9.721) 
##                                                                 
## ----------------------------------------------------------------
## Observations                             200              200   
## R2                                      0.842            0.923  
## Adjusted R2                             0.839            0.922  
## Residual Std. Error (df = 195)          87.874           46.440 
## F Statistic                    259.935*** (df = 4; 195)         
## ================================================================
## Note:                                *p<0.1; **p<0.05; ***p<0.01

En la anterior ajuste presentamos una comparativa utilizando stargazer.

PRUEBAS DE HIPOTESIS

Para las pruebas de hipótesis se ha utilizado un 95% de confianza con un nivel de significancia del 0.05 % para 200 observaciones. Con un grado de libertad de 199 (observaciones - 1) y un área de cola inferior de 0.025 (0.05/2), en zona de no rechazo del hipótesis nula, con límite superior de 1.96 y límite inferior de -1.96.

Para la prueba de hipótesis la regla de decisión es:

Ho: Si el parámetro es igual a cero, la variable explicativa no tiene una relación lineal con la variable dependiente.

HI: Si el parámetro es diferente de cero, la variable explicativa tiene una relación parcial con la variable dependiente.

Hipotesis 1:

El número de miembros del hogar tiene una relacion directamente proporcional a la cantidad gastada por las familias de Ahuachapan durante el 2019.

library(stargazer)
library(dplyr)
Hipotesis_1<-t.test(Datos$gastohog, Datos$r021a)
H1<-cbind(Hipotesis_1$statistic)%>%as.data.frame(row.names = "Resultado")
names(H1)<-c("Miembros del Hogar - Gasto Total")
stargazer(H1, title= "Prueba t- Hipotesis 1", type = "html", summary = FALSE, digits = 5)
Prueba t- Hipotesis 1
Miembros del Hogar - Gasto Total
Resultado 21.67591

Hipotesis 2:

La cantidad mensual gastada en alimentación por el hogar tiene una relacion directamente proporcional a la cantidad gasto de las familias de Ahuachapan durante el 2019.

library(stargazer)
library(dplyr)
Hipotesis_2<-t.test(Datos$gastohog, Datos$ghali)
H2<-cbind(Hipotesis_2$statistic)%>%as.data.frame(row.names = "Resultado")
names(H2)<-c("Gasto del Hogar en Alimentacion - Gasto Total")
stargazer(H2, title= "Prueba t- Hipotesis 2", type = "html", summary = FALSE, digits = 5)
Prueba t- Hipotesis 2
Gasto del Hogar en Alimentacion - Gasto Total
Resultado 13.01178

Hipotesis 3:

La cantidad mensual gastada en artículos y servicios por el hogar tiene una relacion directamente proporcional a la cantidad gasto de las familias de Ahuachapan durante el 2019.

library(stargazer)
library(dplyr)
Hipotesis_3<-t.test(Datos$gastohog, Datos$ghu12)
H3<-cbind(Hipotesis_3$statistic)%>%as.data.frame(row.names = "Resultado")
names(H3)<-c("Gasto en Articulos y Servicios - Gasto Total")
stargazer(H3, title= "Prueba t- Hipotesis 3", type = "html", summary = FALSE, digits = 5)
Prueba t- Hipotesis 3
Gasto en Articulos y Servicios - Gasto Total
Resultado 17.92539

Hipotesis 4:

La cantidad mensual gastada en eduación por el hogar tiene una relacion directamente proporcional a la cantidad gasto de las familias de Ahuachapan durante el 2019.

library(stargazer)
Hipotesis_4<-t.test(Datos$gastohog, Datos$gmed)
H4<-cbind(Hipotesis_4$statistic)%>%as.data.frame(row.names = "Resultado")
names(H4)<-c("Gasto en Educación - Gasto Total")
stargazer(H4, title= "Prueba t- Hipotesis 4", type = "html", summary = FALSE, digits = 5)
Prueba t- Hipotesis 4
Gasto en Educación - Gasto Total
Resultado 16.82279
library(stargazer)
library(dplyr)
Hipotesis<-cbind(Hipotesis_1$statistic,Hipotesis_2$statistic,Hipotesis_3$statistic,Hipotesis_4$statistic)%>%as.data.frame(row.names = "Resultados")
names(Hipotesis)<-c("H1","H2","H3","H4")
stargazer(Hipotesis, title= "Prueba t- Hipotesis", type = "text", summary = FALSE, digits = 5)
## 
## Prueba t- Hipotesis
## ==============================================
##               H1       H2       H3       H4   
## ----------------------------------------------
## Resultados 21.67591 13.01178 17.92539 16.82279
## ----------------------------------------------

SIMULACION

Definición funciones para el cálculo de Theil

#Bias Proportion
Um<-function(pronosticado,observado){
  library(DescTools)
  ((mean(pronosticado)-mean(observado))^2)/MSE(pronosticado,observado) 
}
#Variance Proportion
Us<-function(pronosticado,observado){
  library(DescTools)
  ((sd(pronosticado)-sd(observado))^2)/MSE(pronosticado,observado)
}
#Covariance Proportion
Uc<-function(pronosticado,observado){
  library(DescTools)
  (2*(1-cor(pronosticado,observado))*sd(pronosticado)*sd(observado))/MSE(pronosticado,observado)}
#Coeficiente U de Theil (también aparece en la librería "DescTools")
THEIL_U<-function(pronosticado,observado){
   library(DescTools)
  RMSE(pronosticado,observado)/(sqrt(mean(pronosticado^2))+sqrt(mean(observado^2)))
}

Scrip de Simulación

options(scipen = 999999) #No mostrar notación cientifica.
library(robustbase) #Para usar el modelo robusto
library(dplyr) # Para manejo de datos y activar el operador "pipe" %>%
library(caret) # Permite Realizar muestreo sobre los data frame
library(DescTools) # Contiene las funciones para calcular las medidas de performance
library(stargazer) # Para dar formato, y obtener resumen estadistico de las simulaciones
set.seed(50) # Permite fijar la semilla aleatoria, para reproducir los resultados obtenidos en esta clase
numero_de_muestras<-1000 
# Numero de muestras que se optendran del data frame
# Se crea la lista con las 10000 muestras (indica la posición de la fila en cada data frame)
muestras<-Datos$gastohog %>%
  createDataPartition(p = 0.8,
                      times = numero_de_muestras,
                      list = TRUE)
# Listas vacias, que contendran los datos de entrenamiento, los pronosticos para los datos de prueba, y para las estadisticas de cada muestra
Modelos_Entrenamiento<-vector(mode = "list",
                              length = numero_de_muestras)
Pronostico_Prueba<-vector(mode = "list",
                              length = numero_de_muestras)
Resultados_Performance_data_entrenamiento<-vector(mode = "list",
                              length = numero_de_muestras)
Resultados_Performance<-vector(mode = "list",
                              length = numero_de_muestras)
#Estimación de los modelos lineales para cada muestra, los pronósticos y cálculo de las estadisticas de performance.
for(j in 1:numero_de_muestras){
Datos_Entrenamiento<- Datos[muestras[[j]], ]
Datos_Prueba<- Datos[-muestras[[j]], ]
Modelos_Entrenamiento[[j]]<-lmrob(formula = gastohog~.,data=Datos_Entrenamiento)
Pronostico_Prueba[[j]]<-Modelos_Entrenamiento[[j]] %>% predict(Datos_Prueba)
Resultados_Performance_data_entrenamiento[[j]]<-data.frame( 
            R2 = R2(Modelos_Entrenamiento[[j]]$fitted.values,
                    Datos_Entrenamiento$gastohog),
            RMSE = RMSE(Modelos_Entrenamiento[[j]]$fitted.values,
                        Datos_Entrenamiento$gastohog),
            MAE = MAE(Modelos_Entrenamiento[[j]]$fitted.values,
                      Datos_Entrenamiento$gastohog),
            MAPE= MAPE(Modelos_Entrenamiento[[j]]$fitted.values,
                       Datos_Entrenamiento$gastohog)*100,
            THEIL=TheilU(Modelos_Entrenamiento[[j]]$fitted.values,
                         Datos_Entrenamiento$gastohog,type = 1),
            Um=Um(Modelos_Entrenamiento[[j]]$fitted.values,
                         Datos_Entrenamiento$gastohog),
            Us=Us(Modelos_Entrenamiento[[j]]$fitted.values,
                         Datos_Entrenamiento$gastohog),
            Uc=Uc(Modelos_Entrenamiento[[j]]$fitted.values,
                         Datos_Entrenamiento$gastohog)
            )
Resultados_Performance[[j]]<-data.frame( 
            R2 = R2(Pronostico_Prueba[[j]], Datos_Prueba$gastohog),
            RMSE = RMSE(Pronostico_Prueba[[j]], Datos_Prueba$gastohog),
            MAE = MAE(Pronostico_Prueba[[j]], Datos_Prueba$gastohog),
            MAPE= MAPE(Pronostico_Prueba[[j]], Datos_Prueba$gastohog)*100,
            THEIL=TheilU(Pronostico_Prueba[[j]], Datos_Prueba$gastohog,
                         type = 1), # También se puede usar la función que creamos: THEIL_U
            Um=Um(Pronostico_Prueba[[j]], Datos_Prueba$gastohog),
            Us=Us(Pronostico_Prueba[[j]], Datos_Prueba$gastohog),
            Uc=Uc(Pronostico_Prueba[[j]], Datos_Prueba$gastohog)
            )
} #No olvidar este corchete ;)

Resultados de la Simulacion

bind_rows(Resultados_Performance_data_entrenamiento) %>% 
  stargazer(title = "Medidas de Performance Datos del Modelo",
            type = "html",
            digits = 3)
Medidas de Performance Datos del Modelo
Statistic N Mean St. Dev. Min Pctl(25) Pctl(75) Max
R2 1,000 0.838 0.014 0.787 0.829 0.848 0.883
RMSE 1,000 91.711 4.353 74.580 88.755 94.808 103.325
MAE 1,000 56.379 2.233 50.378 54.915 57.867 62.418
MAPE 1,000 16.221 0.622 14.369 15.802 16.629 18.104
THEIL 1,000 0.119 0.006 0.099 0.115 0.123 0.136
Um 1,000 0.066 0.016 0.032 0.054 0.078 0.212
Us 1,000 0.096 0.057 0.004 0.041 0.151 0.210
Uc 1,000 0.843 0.071 0.685 0.777 0.912 0.961
bind_rows(Resultados_Performance) %>% 
  stargazer(title = "Medidas de Performance Simulación",
            type = "html",
            digits = 3)
Medidas de Performance Simulación
Statistic N Mean St. Dev. Min Pctl(25) Pctl(75) Max
R2 1,000 0.837 0.061 0.616 0.797 0.884 0.956
RMSE 1,000 92.872 16.695 49.623 81.160 104.627 149.535
MAE 1,000 59.186 8.669 35.742 53.446 65.177 86.281
MAPE 1,000 16.811 1.758 11.152 15.671 18.026 23.417
THEIL 1,000 0.120 0.022 0.062 0.104 0.135 0.193
Um 1,000 0.074 0.056 0.00000 0.027 0.111 0.276
Us 1,000 0.162 0.128 0.00000 0.046 0.249 0.566
Uc 1,000 0.788 0.160 0.339 0.666 0.930 1.025

PROYECCIONES

Predicción usando “predict” de “R” base

library(stargazer)
#Data para la predicción X'm
X_m<-data.frame(r021a=2,ghali=100,ghu12=50,gmed=70)
# Intervalos de Confianza del 95% y del 99%
confidense<-c(0.95,0.99)
#Predicción usando predict
predict(object = modelo,
           newdata = X_m,
           interval = "prediction",
           level = confidense,
          se.fit =TRUE)->predicciones
rownames(predicciones$fit)<-as.character(confidense*100)
colnames(predicciones$fit)<-c("Ym","Li","Ls")
stargazer(predicciones$fit,
          title = "Pronósticos e intervalos de confianza",
          type = "html") #Poner results='asis' en opciones del chunk
Pronósticos e intervalos de confianza
Ym Li Ls
95 325.298 150.754 499.843
99 325.298 95.079 555.518