Modelo

Para realizar el modelo se seleccionaron las variables de Edad, Ingreso Mensual, Satisfacción Ambiental, Antigüedad, Trabajos Anteriores y Distancia Casa.

De todas las variables la única que no tiene significancia en el modelo es la Antigüedad.

library(broom)
library(kableExtra)
library(dplyr)

# Ajustar el modelo
mod <- glm(y ~ Edad + Ingreso_Mensual + Satisfaccion_Ambiental + Antiguedad + Trabajos_Anteriores + Distancia_Casa,
           data = Datos_Rotacion, family = "binomial")

# Convertir el resumen del modelo en un data frame y agregar significancia
tabla_resumen <- tidy(mod) %>%
  mutate(
    Significancia = case_when(
      p.value < 0.001 ~ "***",
      p.value < 0.01  ~ "**",
      p.value < 0.05  ~ "*",
      p.value < 0.1   ~ ".",
      TRUE           ~ ""
    )
  ) %>%
  select(term, estimate, std.error, statistic, p.value, Significancia)

# Crear la tabla bonita
tabla_resumen %>%
  kable("html", caption = "Resumen del Modelo de Regresión Logística", align = c("l", "c", "c", "c", "c", "c")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                font_size = 14) %>%
  column_spec(1, bold = TRUE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#4C4C4C")
Resumen del Modelo de Regresión Logística
term estimate std.error statistic p.value Significancia
(Intercept) 0.5925525 0.3673734 1.612943 0.1067568
Edad -0.0407232 0.0101999 -3.992520 0.0000654 ***
Ingreso_Mensual -0.0000847 0.0000261 -3.242998 0.0011828 **
Satisfaccion_Ambiental -0.2700983 0.0665664 -4.057580 0.0000496 ***
Antiguedad -0.0295629 0.0188669 -1.566923 0.1171326
Trabajos_Anteriores 0.1074378 0.0303974 3.534436 0.0004086 ***
Distancia_Casa 0.0274222 0.0086959 3.153458 0.0016135 **

Predicciones del modelo

Evaluar la probabilidad de que rote una persona con las siguientes características

  • Edad = 45

  • Ingreso Mensual = 3500

  • Satisfacción Ambiental = 3

  • Antigüedad = 9

  • Trabajos Anteriores = 3

  • Distancia Casa = 12

predict(mod,list(Edad=45,Ingreso_Mensual=3500,Satisfaccion_Ambiental=3,Antiguedad=9,Trabajos_Anteriores=3,Distancia_Casa=12),type = "response")
##         1 
## 0.1233105

Una persona con estas caracteristicas tiene una probabilidad del 12,33% de rotar.

Matriz de confusión

Con el modelo se calculan las probabilidades de todos los individuos de rotar y se utiliza un hyperparametro de 0,2. De esta manera se construye la matriz de confusión, que ayuda a identificar los Verdaderos Positivos (VP), Verdaderos Negativos (VN), Falsos Negativos (FN) y Falsos Positivos (FP)

library(kableExtra)

# Calcular las probabilidades y predicciones
probas <- mod$fitted.values
predi <- probas > 0.2
real <- Datos_Rotacion$Rotacion

# Crear el data frame con los valores reales y predichos
resultado <- data.frame(real, predi)

# Crear la tabla de confusión
tabla_confusion <- table(resultado)

# Convertir la tabla de confusión en un data frame
df_confusion <- as.data.frame.matrix(tabla_confusion)

# Crear la tabla bonita manteniendo los nombres originales
df_confusion %>%
  kable("html", caption = "Matriz de Confusión", align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE,
                font_size = 14) %>%
  column_spec(1, bold = TRUE) %>%
  column_spec(2, bold = TRUE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#4C4C4C")
Matriz de Confusión
FALSE TRUE
No 926 307
Si 100 137

Capacidad de clasificación del modelo

Accuracy

  • VP = 137

  • VN = 926

  • Total = 1063

(926+137)/1470
## [1] 0.7231293

El modelo clasifica bien el 72,31% de los registros

Tasa de error

1-0.7238095
## [1] 0.2761905

El modelo se equivoca clasificando en el 27,69% de los registros

Sensibilidad

  • VP =137

  • Total Positivos = 237

137/(100+137)
## [1] 0.5780591

El modelo clasifica bien el 57,8% de los positivos

Especificidad

  • VN = 926

  • Total Positivos = 1233

926/(926+307)
## [1] 0.7510138

El modelo clasifica bien el 75,10% de los negativos