En estadística, la regresión logística es un tipo de análisis de regresión utilizado para predecir el resultado de una variable categórica (una variable que puede adoptar un número limitado de categorías) en función de las variables independientes o predictoras. Es útil para modelar la probabilidad de un evento ocurriendo como función de otros factores. El análisis de regresión logística se enmarca en el conjunto de Modelos Lineales Generalizados (GLM por sus siglas en inglés) que usa como función de enlace la función logit. Las probabilidades que describen el posible resultado de un único ensayo se modelan, como una función de variables explicativas, utilizando una función logística.
Regresion
explosion
En 1986, el transbordador espacial Challenger tuvo un accidente catastrófico debido a un incendio en una de las piezas de sus propulsores. Era la vez 25 en que se lanzaba un transbordador espacial. En todas las ocasiones anteriores se habían inspeccionado los propulsores de las naves, y en algunas de ellas se habían encontrando defectos. El fichero challenger contiene 23 observaciones de las siguientes variables: defecto, que toma los valores 1 y 0 en función de si se encontraron defectos o no en los propulsores; y temp, la temperatura (en grados Fahrenheit) en el momento del lanzamiento.
Primero leemos los datos y contamos las frecuencias de casos sin y con defectos:
challenger <- read.table("http://verso.mat.uam.es/~joser.berrendero/datos/challenger.txt", header=TRUE)
table(challenger$defecto)
##
## 0 1
## 16 7
Una representación gráfica de los datos, puede obtenerse mediante:
colores <- NULL
colores[challenger$defecto==0] <- "green"
colores[challenger$defecto==1] <- "red"
plot(challenger$temp, challenger$defecto, pch =21, bg= colores, xlab = "Temperatura",ylab = "Probabilidad de defectos")
legend("bottomleft", c("No defecto", "Si defecto"),pch =21, col=c("green","red") )
Parece razonable, a la vista de los datos, pensar que la temperatura puede influir en la probabilidad de que los propulsores tengan defectos. En esta práctica, vamos a ajustar un modelo de regresión logística para estudiar la posible relación. Para ajustar el modelo se usa el comando glm (para modelos lineales generalizados) indicando que la respuesta es binomial mediante el argumento family:
Regresion
reg <- glm(defecto ~ temp, data = challenger, family=binomial)
summary(reg)
##
## Call:
## glm(formula = defecto ~ temp, family = binomial, data = challenger)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.0611 -0.7613 -0.3783 0.4524 2.2175
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 15.0429 7.3786 2.039 0.0415 *
## temp -0.2322 0.1082 -2.145 0.0320 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 28.267 on 22 degrees of freedom
## Residual deviance: 20.315 on 21 degrees of freedom
## AIC: 24.315
##
## Number of Fisher Scoring iterations: 5
\[D_i = \mp \sqrt{-2 [Y_i\log \hat p_i + (1-Y_i)\log(1-\hat p_i)]}, \]
En los datos estadisticos podemos ver los factores de errores que tuvo NASA atreves de la tripulacion de la nave espacial challenger por desgracia solo tomaron factores de riesgo de un solo punto de despeje pero no consideraron las temperaturas de otro lugar de despeje, por desgracia de cobro las vidas de los tripulantes de esa mision.
En este trabajo podemos ver en que ambiente fue adecuado lanzarlo y el cual no, si lo hubieran lanzado a los 80 grados esta desgracia no hubiera sucedido.
Donde el signo coincide con el signo de \(Y_i - \hat p_i\) en la salida anterior estas cantidades se denominan “deviance residuals”
para calcular estos pseudo-residuos, podemos ejecutar res = resid(reg).
Para representar gráficamente la función logística estimada, calculamos las probabilidades de fallo estimadas (usando el comando predict) para un vector adecuado de nuevas temperaturas (entre 50 y 85 grados):
datos <- data.frame(temp=seq(50,85, 0.1))
probabilidades <- predict(reg, datos, type="response")
plot(challenger$temp,challenger$defecto,pch=21, bg=colores, xlab="Temperatura", ylab="Probabilidad de defectos")
legend("bottomleft", c("No defecto", "Si defecto"),pch =21, col=c("green","red") )
lines(datos$temp, probabilidades, col="blue", lwd=2)
Cuestiones
tiene pocas probabilidades de efecto esta en un un punto intermedio de salvarse y no salvarse.
est <- (-0.2322-0.01)/0.1082
est
## [1] -2.238447
¿Para qué valores de la temperatura la probabilidad estimada de que se produzcan defectos es menor que 0.1? entre los 40 y 45 grados
¿Para qué valores de la temperatura se predice que se van a producir defectos?
entre los 50 y 85 grados
En las pruebas dieron resultados muy similares asi que es sentado decir que la temperatura es un factor muy pero muy importante.