Análisis de Regresión logística en R

Uso: Clasificador probabilístico de variables dicotómicas

Descripción: Tipo de análisis de regresión utilizado para predecir el resultado de una variable dicotómica. Este modelo resulta útil para modelar la probabilidad ocurrencia de un evento en función de otros factores.

Variable dependiente: no métrica (dicotómica)

Variables independientes: métricas y no métricas

Ejemplo en R: Clasificar si las piezas salen o no defectuosa atendiendo a la temperatura de la máquina.

# Cargar los datos para realizar el análisis
temperatura <-c(66,70,69,68,67,72,73,70,57,63,70,78,67,53,67,75,70,81,76,79,75,76,58)
defecto <-c( 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1)
aux <-matrix(c(temperatura,defecto),ncol = 2)
colnames(aux) <- c('temperatura','defecto')
datos<-data.frame(aux)

# Resumen de cuantos elementos hay de cada (tanto defectuosos como correctos)
table(datos$defecto)
##  0  1 
## 18  5
# Representar visualmente los datos
colores <- NULL
colores[datos$defecto == 0] <- "green"
colores[datos$defecto == 1] <- "red"
plot(datos$temperatura, datos$defecto, pch = 21, bg = colores, xlab = "Temperatura", ylab = "Prob. defecto")
legend("bottomleft", c("No defecto", "Si defecto"), pch = 21, col = c("green", "red"))

# Ejecutar el modelo de regresión lineal generalizado y parametrizamos por binomial
reg <- glm(defecto ~ temperatura, data = datos, family = binomial)
summary(reg)
## 
## Call:
## glm(formula = defecto ~ temperatura, family = binomial, data = datos)
## 
## Deviance Residuals: 
##      Min        1Q    Median        3Q       Max  
## -0.84513  -0.38010  -0.09632  -0.02831   2.41364  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept)  32.3381    17.6301   1.834   0.0666 .
## temperatura  -0.5028     0.2643  -1.902   0.0571 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 24.0850  on 22  degrees of freedom
## Residual deviance:  9.8032  on 21  degrees of freedom
## AIC: 13.803
## 
## Number of Fisher Scoring iterations: 7
# Dibujar la recta de probabilidad para cada una de las temperaturas
datos_probab <- data.frame(temperatura = seq(50, 85, 0.1))
datos.predict <- predict(reg, datos_probab, type = "response")  # por defecto calcularía log p_i/(1-p_i), para calcular p_i usamos el argumento type
plot(datos$temperatura, datos$defecto, pch = 21, bg = colores,  xlab = "Temperatura", ylab = "Prob. defecto")
legend("bottomleft", c("No defecto", "Si defecto"), pch = 21, col = c("green", "red"))
lines(datos_probab$temperatura, datos.predict, col = "blue", lwd = 2)