This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
library(prettydoc)
setwd("~/estadistica aplicada")
Challenger
Antecedentes
El accidente del transbordador espacial Challenger se produjo el martes 28 de enero de 1986 a las 16:39:13 UTC, cuando el transbordador espacial Challenger (mision STS-51-L) se desintegro 73 segundos tras el lanzamiento, provocando la muerte de los siete miembros de la tripulacion -Francis "Dick" Scobee, Michael J. Smith, Ronald McNair, Ellison Onizuka, Gregory Jarvis, Judith Resnik y Christa McAuliffe. La nave se desintegro sobre el oceano Atlantico, frente a la costa del centro de Florida (Estados Unidos) a las 11:38 EST (16:38 UTC). Ha sido calificado como el accidente mas grave en la conquista del espacio.
La desintegracion del vehiculo entero comenzo despues de que una junta teorica de su cohete acelerador solido (SRB) derecho fallara durante el despegue. El fallo de la junta teorica causa la apertura de una brecha, permitiendo que el gas caliente presurizado del interior del motor del cohete solido saliera al exterior y contactara con la estructura adyacente de conexion con el SRB y el tanque externo de combustible. Esto provoca la separacion de la conexion posterior del SRB derecho y el fallo estructural del deposito externo. Las fuerzas aerodinamicas destruyeron rápidamente el orbitador.
La Regresión Logística Simple, desarrollada por David Cox en 1958, es un método de regresión que permite estimar la probabilidad de una variable cualitativa binaria en función de una variable cuantitativa. Una de las principales aplicaciones de la regresión logística es la de clasificación binaria, en el que las observaciones se clasifican en un grupo u otro dependiendo del valor que tome la variable empleada como predictor. Por ejemplo, clasificar a un individuo desconocido como hombre o mujer en función del tamaño de la mandíbula.
Es importante tener en cuenta que, aunque la regresión logística permite clasificar, se trata de un modelo de regresión que modela el logaritmo de la probabilidad de pertenecer a cada grupo. La asignación final se hace en función de las probabilidades predichas.
¿Por qué regresión logística y no lineal?
Si una variable cualitativa con dos niveles se codifica como 1 y 0, matemáticamente es posible ajustar un modelo de regresión lineal por mínimos cuadrados:
\[ y = \beta_0 + \beta_1 x\] El problema de esta aproximación es que, al tratarse de una recta, para valores extremos del predictor, se obtienen valores de Y menores que 0 o mayores que 1, lo que entra en contradicción con el hecho de que las probabilidades siempre están dentro del rango [0,1].
*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
Representando los defectos vs no defectos de una forma grafica
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'))
Hemos usado los argumentos pch y bg para mejorar la apariencia del gráfico. También hemos usado el comando legend para incluir una leyenda explicativa.
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:
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
En el modelo de regresión logística la raíz de las desviaciones representa el papel de los residuos:
\[ D_i = \mp \sqrt{-2 [Y_i\log \hat p_i + (1-Y_i)\log(1-\hat p_i)]},\]
Donde el signo coincide con el signo de $Y_i - p_i $
En la salida anterior estas cantidades se denominan deviance residuals. Para calcular estos pseudo-residuos, podemos ejecutar res = resid(reg).
res <- resid(reg)
res
## 1 2 3 4 5 6 7
## -1.0611168 1.7145343 -0.7996042 -0.8817559 -0.9690847 -0.5865724 -0.5267644
## 8 9 10 11 12 13 14
## -0.7229433 0.5506685 1.0063470 1.7145343 -0.3018707 -0.9690847 0.3540506
## 15 16 17 18 19 20 21
## -0.9690847 -0.4229076 -0.7229433 -0.2143127 -0.3782680 -0.2694144 2.2175345
## 22 23
## -0.3782680 0.6127353
En el contexto de la regresión lineal, llamamos residuos a las diferencias entre los valores de la variable dependiente observados y los valores que predecimos a partir de nuestra recta de regresión.
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")
#gráfica
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=3)