Предположим, у меня есть набор данных, содержащий две категориальные предикторные переменные (a, b) и двоичную целевую (y) переменную.Как игнорировать линейно коррелированные переменные, введенные кодированием опорных ячеек фактора
> df <- data.frame(
> a = factor(c("cat1","cat2","cat3","cat1","cat2")),
> b = factor(c("cat1","cat1","cat3","cat2","cat2")),
> y = factor(c(T,F,T,F,T))
>)
следующие логические отношения существуют в данных:
if (a = cat3) then (b = cat3 and y = true)
else if (a = b) then (y = true) else y = false
Я хочу использовать glm
построить модель для моего набора данных. glm
будет автоматически применять кодирование опорных ячеек для моих категориальных переменных a и b. Он также позаботится о поиске правильного количества кодов для каждой фактор-переменной, так что не будут введены переменные alias
(объяснено here).
Однако, как и для набора данных выше, может существовать линейная связь между одним ссылочным кодом, сгенерированным для переменной a и одним ссылочным кодом переменной b.
Смотрите вывод моей модели:
> model <- glm(y ~ ., family=binomial(link='logit'), data=df)
> summary(model)
...
Coefficients: (1 not defined because of singularities)
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.965e-16 1.732e+00 0.000 1.000
acat2 -2.396e-16 2.000e+00 0.000 1.000
acat3 1.857e+01 6.523e+03 0.003 0.998
bcat2 0.000e+00 2.000e+00 0.000 1.000
bcat3 NA NA NA NA # <- get rid of this?
Как мне справиться с этим делом? Есть ли способ сказать glm опустить некоторые сгенерированные коды ссылок? В настоящей проблеме значение "cat3"
соответствует NA
. У меня есть две значимые переменные фактора, которые являются NA
в точно таких же экземплярах моего набора данных.
EDIT:
Проверенный ответ решает этот вопрос, однако, в данном конкретном случае особенности могут быть просто проигнорированы, как указано в комментариях.
@ZheyuanLi: Спасибо, что подняли вопрос. Я не был уверен, что особенности могут иметь какое-либо негативное влияние на модель (или, например, скорость конвергенции алгоритма), поэтому, если я правильно вас понимаю, я могу просто игнорировать эти особенности и использовать созданную модель для предсказаний, как есть? – fab