En esta práctica nos preguntamos qué nivel de colesterol aumenta la probabilidad de que suframos una enfermedad coronaria. Para ello, tenemos una base de datos obtenida del repositorio de “machine learning” de UCLA: https://archive.ics.uci.edu/dataset/45/heart+disease. Puedes consultar qué variables contiene y los posibles valores que pueden tomar. Como verás, tiene “missing values”. Perio vayamos por partes:
Busca las variables con valores omitidos y trata de imputar un valor usando alguna de las técnicas aprendidas en clase.
1.- Discute si los valores de las variables parecen razonables (lo que desconozcas lo tendrás que buscar), y cómo de representativa es la muestra disponible.
2.-Analiza de manera descriptiva/visual qué dicen los datos sobre la relación entre tener una enfermedad coronaria y el nivel de colesterol.
Como habrás visto, dicha relación no parece muy clara . Aunque es bien sabido el impacto del colesterol en la salud cardiaca. ¿Ocultan algo los datos? ¿Qué crees que puede estar pasando?
Nuestra sospecha es que la edad es un factor “confusor”. Para ello, escribe un script en R que obtenga el coeficiente de la regresión logística que predice probabilidad de enfermedad cardiaca frente a nivel de colesterol para distintos grupos de edad. Como la muestra no es grande, recomendamos hacer una ventana de edades (empezamos con toda la muestra y vamos eliminando el más joven a cada paso). Haz un gráfico y analiza a partir de qué edad el modelo detecta una relación que no contradice la evidencia médica. Piensa, entonces, si este modelo se puede generalizar a la población o debería hacerse específico para una subpoblación
Pista: se muestra un posible script del que se han omitido algunas indicaciones
coef<-vector() #almacena los distintos coeficientes
age_v<-seq(?,?,1) #genera una secuencia de edades
for (i in 1:length(age_v))
{
heart_sub<-subset(heart,age>age_v[i]) #elige la submuestra correspondiente
model <- glm( target ~chol, data = ?, family = binomial) #estima el logit
coef[i]<-model$coefficients[?] #almacena el coeficiente
}
plot(age_v,coef) #realiza el gráfico
Vuelve a pensar tus respuestas dadas en el ejercicio 2 y en el ejercicio 3.
Para los grupos de edad donde el modelo detecta que el colesterol tiene un efecto negativo, haz un gráfico que muestre la probabilidad de enfermedad cardiaca condicionado al nivel de colesterol.
Pista: se muestra un posible script del que se han omitido algunas indicaciones
age_v2<-seq(?,?,2) #se introduce una secuencia de edades
cholesterol<-seq(150,600,1) #se introduce una secuencia de valores de coloesterol
pred<-matrix(0,length(age_v2),length(cholesterol))#se crea una matriz para almacenar las prediicciones
data_chol<-data.frame(chol=cholesterol)
for (i in 1:length(age_v2))
{
heart_sub<-subset(heart,age>age_v2[i])
model <- glm( target ~chol, data = ?, family = binomial)
pred[i,]<-predict(model,newdata=data_chol, type="response")
}
row.names(pred)<-age_v2
colnames(pred)<-cholesterol
col_set <- rainbow(nrow(pred))
matplot(t(pred), x = seq(150,600,1),type = "b",main="Probability of heart disease at different ages",
ylab="Probabiilty", xlab="cholesterol",col=col_set)
legend("bottomleft", inset=0.01, legend=age_v2, col=col_set,pch=15:19,
bg= ("white"), horiz=F)
Discute cuál de los dos siguientes modelos estimados representa lo que hemos aprendido previamente.
M1<-glm( target ~chol+age, data = heart, family = binomial)
summary(M1)
M2<-glm(target~chol*age, data = heart, family = binomial)
summary(M2)
¿A partir de qué valor de la edad el impacto del colesterol sobre la enfermedad cardiaca se vuelve positivo?
Se suele incidir en que niveles de azúcar altos y de tensión arterial son factores de riesgo para tener enfermedad cardiaca. Discute el impacto del nivel de azúcar y de tensión arterial sobre la probabilidad de enfermedad cardiaca, así como trata de ver la interacción de estas con el colesterol y la edad de los individuos.
Pista: reutiliza los gráficos del ejercicio 5, adaptándolos
Estima y discute el modelo de regresión logística que crees más lógico tras lo aprendido anteriormente. ¿Cómo has incluido las interacciones? ¿Qué grupos de individuos podrían dar lugar a predicciones contraintuitivas?