2011-10-19 18 views
7

Supponiamo di voler eseguire una regressione utilizzando lm e una variabile factor come una variabile a destra. Qual è il modo migliore per scegliere quale livello nel fattore è la categoria di base (quella esclusa per evitare la multicollinearità). Nota che non mi interessa escludere l'intercettazione perché ho molti fattori.Il modo migliore in R per scegliere quale livello è la categoria di base per un fattore in una regressione lm

Vorrei anche una soluzione basata su formule, non una che agisca direttamente sul data.frame, anche se se pensi di avere una soluzione davvero valida, per favore pubblica anche quella.

La mia soluzione è:

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 categoria lasciato fuori dal lm è il primo livello nel fattore quindi questo solo riordina i livelli in modo che quello specificato nella base_cat() è il primo, e mette il resto dopo.

Altre idee?

risposta

5

La funzione relevel fa esattamente questo. Si passa un fattore non ordinato e il nome del livello di riferimento e restituisce un fattore con quel livello come il primo.

+0

Grazie @joran! –