# Cargamos la base de datos y le pusimois el nombre de Base1.
Base1 <- read.csv("/Users/jenaromtzg/Desktop/conjunto_de_datos_ilmm_2021_1t2.csv")
# Modelo Logit - Aquí ajustamos un modelo de regresión logística con la variable empleo como variable dependiente y las variables pea y ocupados como variables independientes.
modelo_logit = glm(empleo ~ pea + ocupados, data = Base1, family = binomial(link = "logit"))
summary(modelo_logit)
##
## Call:
## glm(formula = empleo ~ pea + ocupados, family = binomial(link = "logit"),
## data = Base1)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.0732 -0.8466 0.6412 0.7522 1.5867
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.921752 0.073680 -12.510 < 2e-16 ***
## pea 0.066393 0.015813 4.199 2.68e-05 ***
## ocupados -0.015276 0.008852 -1.726 0.0844 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3141.4 on 2312 degrees of freedom
## Residual deviance: 2601.5 on 2310 degrees of freedom
## AIC: 2607.5
##
## Number of Fisher Scoring iterations: 4
# Modelo Probit - Similar al paso anterior, modelo_probit ajusta un modelo de regresión probit con las mismas variables y muestra un resumen mediante summary(modelo_probit).
modelo_probit = glm(empleo ~ pea + ocupados, data = Base1, family = binomial(link = "probit"))
summary(modelo_probit)
##
## Call:
## glm(formula = empleo ~ pea + ocupados, family = binomial(link = "probit"),
## data = Base1)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.0821 -0.8460 0.6428 0.7531 1.5856
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.569123 0.044472 -12.797 < 2e-16 ***
## pea 0.038095 0.009135 4.170 3.05e-05 ***
## ocupados -0.007900 0.005138 -1.538 0.124
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 3141.4 on 2312 degrees of freedom
## Residual deviance: 2601.7 on 2310 degrees of freedom
## AIC: 2607.7
##
## Number of Fisher Scoring iterations: 4
# Criterios de Información - Se calculan los criterios de información (AIC) para los modelos logit y probit utilizando AIC(modelo_logit) y AIC(modelo_probit), respectivamente. En este caso, seleccionamos el modelo logit como un mejor modelo porque tiene el valor más chico.
CIA_Logit = AIC(modelo_logit)
CIA_Probit = AIC(modelo_probit)
CIA_Logit
## [1] 2607.509
CIA_Probit
## [1] 2607.685
# Se calculan las medianas de las variables ocupados y pea en el conjunto de datos Base1 para encontrar los valores representativos para las pred.
median_ocupados <- median(Base1$ocupados)
median_pea <- median(Base1$pea)
median_ocupados
## [1] 94.095
median_pea
## [1] 51.231
# Se calcula la probabilidad usando las probabilidades predichas y los coeficientes del modelo logit.
log.odds <- predict(modelo_logit, data.frame(informales = 48.933, ocupados = 94.095, pea = 51.231 ))
Prob1 = pnorm(log.odds)
Prob1
## 1
## 0.8513503
Prob1*coef(modelo_logit)
## (Intercept) pea ocupados
## -0.78473353 0.05652358 -0.01300507
# Matriz de confusión - Aquí lo usamos para evaluar la precisión del modelo logit en la clasificación de los datos de empleo. Esta matriz compara las predicciones del modelo con las observaciones reales de la variable empleo, mostrando verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos.
predicciones1 <- ifelse(test = modelo_logit$fitted.values > 0.5, yes =1, no = 0)
matriz_confusion1 <- table(predicciones1,modelo_logit$model$empleo,dnn = c( "predicciones","observaciones"))
matriz_confusion1
## observaciones
## predicciones 0 1
## 0 646 279
## 1 317 1071