#craga de datos y estimacion del modelo
options(scipen = 999999)
library(wooldridge)
library(dplyr)
library(stargazer)
data("lawsch85")
lawsch85<-na.omit(lawsch85)
modelo_salario<-lm(formula =lsalary~LSAT+GPA+libvol+cost+rank,data = lawsch85)
stargazer(modelo_salario,title = 'modelo de regresion salario',type = "html")
| Dependent variable: | |
| lsalary | |
| LSAT | 0.007 |
| (0.005) | |
| GPA | 0.221** |
| (0.111) | |
| libvol | 0.0002** |
| (0.0001) | |
| cost | 0.00001 |
| (0.00000) | |
| rank | -0.003*** |
| (0.0004) | |
| Constant | 8.871*** |
| (0.680) | |
| Observations | 90 |
| R2 | 0.837 |
| Adjusted R2 | 0.827 |
| Residual Std. Error | 0.111 (df = 84) |
| F Statistic | 85.997*** (df = 5; 84) |
| Note: | p<0.1; p<0.05; p<0.01 |
Definición funciones para el cálculo de Theil y su descomposición, debe estar instalada la librería DescTools:
#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)))
}
scrib
options(scipen = 999999)
library(dplyr)
library(caret)
library(DescTools)
library(stargazer)
set.seed(100)
numero_de_muestras<-175
muestras<- lawsch85$lsalary %>%
createDataPartition(p = 0.75,
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<- lawsch85[muestras[[j]], ]
Datos_Prueba<- lawsch85[-muestras[[j]], ]
Modelos_Entrenamiento[[j]]<-lm(formula = lsalary~LSAT+GPA+llibvol+lcost+rank,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$lsalary),
RMSE = RMSE(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary),
MAE = MAE(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary),
MAPE= MAPE(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary)*100,
THEIL=TheilU(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary,type = 1),
Um=Um(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary),
Us=Us(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary),
Uc=Uc(Modelos_Entrenamiento[[j]]$fitted.values,
Datos_Entrenamiento$lsalary)
)
Resultados_Performance[[j]]<-data.frame(
R2 = R2(Pronostico_Prueba[[j]], Datos_Prueba$lsalary),
RMSE = RMSE(Pronostico_Prueba[[j]], Datos_Prueba$lsalary),
MAE = MAE(Pronostico_Prueba[[j]], Datos_Prueba$lsalary),
MAPE= MAPE(Pronostico_Prueba[[j]], Datos_Prueba$lsalary)*100,
THEIL=TheilU(Pronostico_Prueba[[j]], Datos_Prueba$lsalary,
type = 1), # También se puede usar la función que creamos: THEIL_U
Um=Um(Pronostico_Prueba[[j]], Datos_Prueba$lsalary),
Us=Us(Pronostico_Prueba[[j]], Datos_Prueba$lsalary),
Uc=Uc(Pronostico_Prueba[[j]], Datos_Prueba$lsalary)
)
}
resultados
bind_rows(Resultados_Performance_data_entrenamiento) %>%
stargazer(title = "Medidas de Performance Datos del Modelo",
type = "html",
digits = 3)
| Statistic | N | Mean | St. Dev. | Min | Pctl(25) | Pctl(75) | Max |
| R2 | 175 | 0.835 | 0.014 | 0.808 | 0.825 | 0.844 | 0.877 |
| RMSE | 175 | 0.108 | 0.005 | 0.091 | 0.105 | 0.111 | 0.117 |
| MAE | 175 | 0.086 | 0.004 | 0.074 | 0.084 | 0.089 | 0.094 |
| MAPE | 175 | 0.815 | 0.036 | 0.701 | 0.791 | 0.840 | 0.890 |
| THEIL | 175 | 0.005 | 0.0002 | 0.004 | 0.005 | 0.005 | 0.006 |
| Um | 175 | 0.000 | 0.000 | 0 | 0 | 0 | 0 |
| Us | 175 | 0.046 | 0.004 | 0.033 | 0.043 | 0.049 | 0.054 |
| Uc | 175 | 0.969 | 0.004 | 0.960 | 0.966 | 0.972 | 0.981 |
bind_rows(Resultados_Performance) %>%
stargazer(title = "Medidas de Performance Simulación",
type = "html",
digits = 3)
| Statistic | N | Mean | St. Dev. | Min | Pctl(25) | Pctl(75) | Max |
| R2 | 175 | 0.824 | 0.053 | 0.633 | 0.795 | 0.860 | 0.946 |
| RMSE | 175 | 0.113 | 0.016 | 0.072 | 0.101 | 0.124 | 0.160 |
| MAE | 175 | 0.091 | 0.014 | 0.062 | 0.081 | 0.101 | 0.138 |
| MAPE | 175 | 0.865 | 0.130 | 0.591 | 0.765 | 0.952 | 1.294 |
| THEIL | 175 | 0.005 | 0.001 | 0.003 | 0.005 | 0.006 | 0.008 |
| Um | 175 | 0.054 | 0.068 | 0.00000 | 0.006 | 0.088 | 0.418 |
| Us | 175 | 0.082 | 0.089 | 0.00000 | 0.013 | 0.118 | 0.528 |
| Uc | 175 | 0.914 | 0.113 | 0.468 | 0.868 | 1.000 | 1.052 |