2011-10-19 7 views
7

Supongamos que deseo ejecutar una regresión usando lm y factor como una variable del lado derecho. Cuál es la mejor manera de elegir qué nivel del factor es la categoría base (la que se excluye para evitar la multicolinealidad). Tenga en cuenta que no estoy interesado en excluir el intercepto porque tengo muchos factores.La mejor manera en R para elegir qué nivel es la categoría base para un factor en una regresión de lm

También me gustaría una solución basada en fórmulas, no una que actúe en el data.frame directamente, aunque si crees que tienes una solución realmente buena para eso, publícala también.

Mi solución es:

base_cat <- function(x) c(x,1:(x-1),(x+1):100) 
a_reg <- lm(y ~ x1 + x2 + factor(x3, levels=base_cat(30)) #suppose that x3 has draws from the integers 1 to 100. 

La categoría dada por lm es el primer nivel en el factor por lo que este solo reordena los niveles para que la especificada en base_cat() es la primera, y pone el resto después.

¿Alguna otra idea?

Respuesta

5

La función relevel hace precisamente esto. Le pasa un factor desordenado y el nombre del nivel de referencia y devuelve un factor con ese nivel como el primero.

+0

Gracias @joran! –

Cuestiones relacionadas