Vamos a desarrollar paso a paso un modelo de regresión logística usando la base de datos integrada mtcars en R. Este tipo de modelo es adecuado cuando la variable dependiente es binaria (dos categorías, como “sí/no” o “1/0”).
Queremos predecir si un carro tiene transmisión automática o manual, usando otras características del vehículo como predictoras.
La variable am (0 = automática, 1 = manual) será nuestra variable dependiente.
# Cargar base de datos
data(mtcars)
# Convertir am a factor (0 = automática, 1 = manual)
mtcars$am <- factor(mtcars$am, levels = c(0,1), labels = c("Automática", "Manual"))
Se está transformando una variable numérica en una variable categórica (factor), asignándole etiquetas legible, la variable am pasa de ser 010101 a automatica manual automatica manual automatica manual
# Tablas de frecuencia
table(mtcars$am) #Cuenta la frecuencia de cada categoría en la variable mtcars$am. Muestra cuántos autos tienen transmisión automática y cuántos manual en la base de datos mtcars.
##
## Automática Manual
## 19 13
# Visualizar distribución
boxplot(mpg ~ am, data = mtcars, main = "Consumo según tipo de transmisión", ylab = "mpg")
El gráfico muestra una caja por cada tipo de transmisión, comparando visualmente el consumo de combustible.Es común que los autos manuales tengan mayor mpg (más eficientes). El gráfico te permite ver si hay diferencias significativas o superposición entre ambos tipos de transmisión en términos de consumo.
# Modelo con algunas variables predictoras
modelo_logit <- glm(am ~ mpg + hp + wt, data = mtcars, family = binomial)
# Ver resumen del modelo
summary(modelo_logit)
##
## Call:
## glm(formula = am ~ mpg + hp + wt, family = binomial, data = mtcars)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -15.72137 40.00281 -0.393 0.6943
## mpg 1.22930 1.58109 0.778 0.4369
## hp 0.08389 0.08228 1.020 0.3079
## wt -6.95492 3.35297 -2.074 0.0381 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 43.2297 on 31 degrees of freedom
## Residual deviance: 8.7661 on 28 degrees of freedom
## AIC: 16.766
##
## Number of Fisher Scoring iterations: 10
Interpretación de wt: Un aumento de una unidad en el peso del vehículo (1000 libras) reduce significativamente la probabilidad de que el vehículo tenga transmisión manual.
| Variable | Coeficiente (Estimate) | Valor p (Pr(> | z | )) |
|---|---|---|---|---|
| (Intercept) | -15.72 | 0.6943 | ❌ No | No es significativo. |
| mpg | +1.23 | 0.4369 | ❌ No | Un aumento en el consumo (mpg) no es estadísticamente significativo para predecir am. |
| hp | +0.084 | 0.3079 | ❌ No | El aumento en la potencia tampoco es significativo. |
| wt | −6.95 | 0.0381 | ✅ Sí | El peso del vehículo sí es un predictor significativo. A más peso, menor probabilidad de transmisión manual. |
Null deviance: 43.23 → devianza del modelo sin predictores.
Residual deviance: 8.77 → devianza del modelo ajustado. Mucho más baja, lo cual es bueno.
Reducción en devianza: indica que el modelo con predictores explica gran parte de la variabilidad.
AIC: 16.77 → cuanto más bajo, mejor. Útil para comparar modelos.
El peso del vehículo (wt) es el único predictor significativo del tipo de transmisión.
Vehículos más livianos tienen mayor probabilidad de tener transmisión manual.
Aunque mpg y hp tienen relaciones positivas con transmisión manual, no son estadísticamente significativas en este modelo.
# Predicciones
pred <- predict(modelo_logit, type = "response")
# Convertir a clase (manual si > 0.5)
pred_clase <- ifelse(pred > 0.5, "Manual", "Automática")
# Matriz de confusión
table(Predicción = pred_clase, Real = mtcars$am)
## Real
## Predicción Automática Manual
## Automática 18 1
## Manual 1 12
# Calcular exactitud
mean(pred_clase == mtcars$am)
## [1] 0.9375
TP (Verdaderos positivos) = 12 → autos manuales correctamente clasificados.
TN (Verdaderos negativos) = 18 → autos automáticos correctamente clasificados.
FP (Falsos positivos) = 1 → predijo manual, pero era automático.
FN (Falsos negativos) = 1 → predijo automático, pero era manual.
Este logístico está clasificando correctamente el tipo de transmisión en el 93.75% de los casos, lo cual indica un alto nivel de desempeño sobre este conjunto de datos.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Gráfico de probabilidades según mpg
ggplot(mtcars, aes(x = mpg, y = as.numeric(am) - 1)) +
geom_point() +
stat_smooth(method = "glm", method.args = list(family = binomial), se = FALSE) +
labs(title = "Probabilidad de transmisión manual según mpg", y = "Probabilidad (Manual)")
## `geom_smooth()` using formula = 'y ~ x'
cada punto representa un auto.
Si el punto está en y = 0, es un auto automático.
Si está en y = 1, es un auto manual.
la curva muestra cómo varía la probabilidad de que un auto sea manual cuando cambia su consumo (mpg).
El modelo de regresión logística ajustado con las variables mpg (consumo de combustible), hp (potencia del motor) y wt (peso del vehículo) permitió predecir eficazmente el tipo de transmisión de los automóviles en la base de datos mtcars. Entre las variables consideradas, solo el peso (wt) resultó ser un predictor estadísticamente significativo (p < 0.05), mostrando que los vehículos más livianos tienen mayor probabilidad de contar con transmisión manual.
El desempeño del modelo fue alto, con una exactitud del 93.75%, evidenciada por una matriz de confusión balanceada, en la que solo dos predicciones fueron incorrectas. La curva de regresión logística mostró una relación creciente entre el consumo (mpg) y la probabilidad de transmisión manual, aunque este efecto no fue significativo en el modelo final.
En resumen, el análisis sugiere que el peso del vehículo es una variable clave en la predicción del tipo de transmisión, y que el modelo construido es altamente efectivo para clasificar correctamente los casos dentro del conjunto de datos analizado.