Почему эта конкретная последовательность в независимой переменной вызывает ошибку в R GLM?

#r #glm

Вопрос:

GLM показывает коэффициент для «Да» и «Нет», что неверно. Функция GLM обычно автоматически фиктивно кодирует двоичные коэффициенты, так что только один из уровней имеет коэффициент.

Поэтому в этом случае он должен указывать коэффициент для «Да», в то время как «Нет» не должно иметь коэффициента, так как это базовый уровень.

У меня не было этой проблемы с другими аналогично закодированными независимыми переменными, похоже, что-то есть в этой конкретной последовательности Да, Нет и NA. Почему он это делает?

 #Generate specific sequence of Yes and No

c <- replicate(5,"No")
d <- c("Yes","No","Yes","No","NA","Yes")

#Concatenate and add into dataframe and generate dependent variable f
df <- data.frame(e=c(c,d),
f=sample(c(0,1,2,3,4), 11, replace = TRUE, prob = NULL))

#Convert e to a factor
df$e <- as.factor(df$e)

nbd_attend<-glm.nb(f ~ e, data = df)
summary(nbd_attend)

 

Комментарии:

1. У вас также есть строка «NA» в качестве уровня фактора. Это рассматривается как уровень перехвата.

Ответ №1:

Вы включили «NA» в качестве привязки ваших данных, а не специальное отсутствующее значение NA . Если бы вы вместо этого использовали

 d <- c("Yes", "No", "Yes", "No", "NA", "Yes")  # bad
d <- c("Yes", "No", "Yes", "No", NA, "Yes")    # good
 

Тогда это сработало бы.

По сути, вы сделали коэффициент с тремя уровнями, и «NA» является первым в алфавитном порядке, поэтому он стал базовым уровнем.

 levels(df$e)
# [1] "NA"  "No"  "Yes"