Справочная группа для фиктивного кодирования

Есть ли способ явно указать, какую группу взять в качестве эталонной группы для фиктивного кодирования при моделировании с помощью функции lm в R с использованием категориальных переменных??


person Prasun Velayudhan    schedule 08.05.2013    source источник
comment
А, судя по всему, функция, которую я предоставил, уже существует. Это также, вероятно, будет реализовано с большей производительностью, но я оставлю свой ниже, чтобы лучше понять, что происходит. Спасибо @Glen_b.   -  person Nick Sabbe    schedule 08.05.2013


Ответы (2)


Самый простой известный мне способ — перекодировать коэффициент заранее, чтобы уровень, который вы хотите использовать в качестве эталона, был первым.

Вы можете сделать это с помощью такой функции:

recodeFactor<-function(f, ref=levels(f)[1])
{
  lvls<-levels(f)
  if(ref== lvls[1]) return(f)

  lvls<-c(ref, setdiff(lvls, ref))
  f<-factor(as.character(f), levels=lvls)
  return(f)
}
person Nick Sabbe    schedule 08.05.2013
comment
Brilliant Stuff .. большое спасибо, Ник Саббе - person Prasun Velayudhan; 08.05.2013

Вы можете просто сделать это в вызове lm:

y <- rnorm(100, 0, 1)
x <- c(rbinom(50,1,.5),(2*rbinom(50,1,.5)))
lm(y ~ factor(x,c(1,0,2))) # one way
lm(y ~ factor(x,c(0,1,2))) # another way, etc.
person Thomas    schedule 08.05.2013