Estoy empezando a incursionar en el uso de glmnet
con Regresión LASSO donde mi resultado de interés es dicotómico. He creado un pequeño marco de datos simulado a continuación:
age <- c(4, 8, 7, 12, 6, 9, 10, 14, 7)
gender <- c(1, 0, 1, 1, 1, 0, 1, 0, 0)
bmi_p <- c(0.86, 0.45, 0.99, 0.84, 0.85, 0.67, 0.91, 0.29, 0.88)
m_edu <- c(0, 1, 1, 2, 2, 3, 2, 0, 1)
p_edu <- c(0, 2, 2, 2, 2, 3, 2, 0, 0)
f_color <- c("blue", "blue", "yellow", "red", "red", "yellow", "yellow",
"red", "yellow")
asthma <- c(1, 1, 0, 1, 0, 0, 0, 1, 1)
# df is a data frame for further use!
df <- data.frame(age, gender, bmi_p, m_edu, p_edu, f_color, asthma)
Las columnas (variables) del conjunto de datos anterior son las siguientes:
age
(edad del niño en años) - continuogender
- binario (1 = hombre; 0 = mujer)bmi_p
(percentil del IMC) - continuom_edu
(nivel de estudios más alto de la madre) - ordinal (0 = menos de estudios secundarios; 1 = diploma de estudios secundarios; 2 = licenciatura; 3 = título de postgrado)p_edu
(nivel educativo más alto del padre) - ordinal (igual que m_edu)f_color
(color primario favorito) - nominal ("azul", "rojo" o "amarillo")asthma
(estado del asma del niño) - binario (1 = asma; 0 = sin asma)
El objetivo de este ejemplo es hacer uso de LASSO para crear un modelo de predicción del estado del asma infantil a partir de la lista de 6 posibles variables predictoras ( age
, gender
, bmi_p
, m_edu
, p_edu
y f_color
). Obviamente, el tamaño de la muestra es un problema, pero espero obtener más información sobre cómo manejar los diferentes tipos de variables (es decir, continuas, ordinales, nominales y binarias) dentro del glmnet
cuando el resultado es binario (1 = asma; 0 = sin asma).
Como tal, ¿alguien estaría dispuesto a proporcionar una muestra R
script junto con las explicaciones de este ejemplo simulado utilizando LASSO con los datos anteriores para predecir el estado del asma? ¡Aunque es muy básico, sé que yo, y probablemente muchos otros en CV, lo apreciaría mucho!
2 votos
Puede que tengas más suerte si publicas los datos como
dput
de un actual objeto de R; ¡no haga que los lectores le pongan glaseado encima además de hornearle un pastel! Si genera el marco de datos apropiado en R, digamosfoo
y luego editar en la pregunta la salida dedput(foo)
.0 votos
¡Gracias @GavinSimpson! ¡He actualizado el post con un marco de datos, así que espero poder comer algo de pastel sin glaseado! :)
2 votos
Al utilizar el percentil del IMC, se desafían en cierto modo las leyes de la física. La obesidad afecta a los individuos en función de las medidas físicas (longitudes, volúmenes, peso) y no en función de cuántos individuos son similares al sujeto actual, que es lo que hace el percentil.
3 votos
Estoy de acuerdo, el percentil del IMC no es una métrica que prefiera utilizar; sin embargo, las directrices de los CDC recomiendan utilizar el percentil del IMC en lugar del IMC (¡también una métrica muy cuestionable!) para niños y adolescentes menores de 20 años, ya que tiene en cuenta la edad y el sexo, además de la altura y el peso. Todas estas variables y los valores de los datos fueron pensados enteramente para este ejemplo. Este ejemplo no refleja nada de mi trabajo actual, ya que trabajo con big data. Sólo quería ver un ejemplo de
glmnet
en acción con un resultado binario.0 votos
Conecte aquí un paquete de Patrick Breheny llamado ncvreg que ajusta modelos de regresión lineal y logística penalizados por MCP, SCAD o LASSO. ( cran.r-project.org/web/packages/ncvreg/index.html )
0 votos
¡Gracias @Benjamin! Estoy deseando probar
ncvreg
¡fuera!