Cambiar el grupo de referencia para la variable predictora categórica en la regresión logística
Frecuentes
Visto 25,992 veces
12
Estoy ejecutando una regresión logística con una variable predictora categórica con niveles 0-6. Por defecto, R considera el nivel 0 como el grupo de referencia.
¿Cómo puedo decirle a R que use, por ejemplo, el nivel 3 en lugar del nivel 0 como referencia sin cambiar el nombre de los niveles?
4 Respuestas
9
Use el C
función para definir sus contrastes en el marco de datos.
Si su marco de datos es DF
y la variable factorial es fct
, entonces
DF$fct <- C(DF$fct, contr.treatment, base=3)
(no probado).
Respondido el 12 de junio de 12 a las 20:06
5
Esto es muy fácil con los paquetes de Frank Harrell (que permite muchas funciones adicionales).
Por ejemplo, para un marco de datos llamado 'df'
library(Hmisc)
library(rms)
dd=datadist(df)
options(datadist='dd')
(m=lrm(y ~ catvar, data=df)) #uses the mode as the reference group
summary(m, catvar=3) #using level=3 as the reference group
summary(m, catvar=0) #using level=0 as the reference group
(Y, algunos datos de muestra habrían estado bien - siempre puedes usar dput
para generar un pequeño conjunto de datos)
Respondido el 12 de junio de 12 a las 20:06
Interesante solución flexible, gracias. Tendrá que leer sobre lo que representa datadist. - medio paso
4
La C
Ya se ha sugerido la función, también mire contrasts
, relevel
y reorder
, entre otros.
Respondido el 12 de junio de 12 a las 21:06
También es muy útil. Gracias. - medio paso
2
Puede usar la función de renivelación: dataframe$x1 <- relevel(datafrmae$x1, "escriba aquí la categoría de referencia")
contestado el 31 de mayo de 15 a las 07:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas r or haz tu propia pregunta.
¿Hay alguna solución que funcione con las etiquetas? Por ejemplo, si los niveles son
"a", "b", ..., "g"
,R
utiliza el orden alfabético. Cómo utilizar"d"
¿como referencia? Yo he tratadoC(F, contr.treatment, base="a")
pero no funciona. - Mathieu DuboisC(F, contr.treatment, base=which(levels(F) == "d"))
funciona pero no es elegante.` - Mathieu Dubois@MathieuDubois, mi solución perezosa es engañar a la alfabetización dando a las categorías nombres como "aCategory1", "bCategory2", etc. - half-pass