Как сохранить двоичные значения в факторной переменной? - PullRequest
0 голосов
/ 16 февраля 2020

Я выполняю игрушечный пример логистики c Регрессия. Я хотел бы сделать следующее: сохранить факторную переменную a_fac в качестве двоичной переменной .

Вот мой код:

set.seed(8)
a = rbinom( n = 10, size = 1, prob = 0.5)
d = seq(1:length(a))

a_fac = factor(a, labels=c("class1", "class2"))
plot(d, a_fac)

##Logistic Regression
lr = glm(a_fac~d, family=binomial(link="logit"))       ##cannot perform the log regression with factor var.
lr = glm(a~d, family=binomial(link="logit"))

##plotting
plot(d,a_fac, main = "logistic regression",  ylim = c(0,2))
lines(d,lr$fitted.values)

##this is the correct plot i want to obtain with the factor variable
plot(d,a, main = "logistic regression")
lines(d,lr$fitted.values)

enter image description here

Могу ли я сделать это или мне нужно оставить объект той же переменной? Спасибо

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Ваша первая модель glm НЕ является логистической c регрессией, поскольку вы не включили аргумент семейства и не указали "binomial".

lr = glm(a_fac~d) # Error!

Ошибка вызвана тем, что R пытается выполнить линейную регрессию на нечисловой c результат. Правильная команда должна быть:

lr = glm(a_fac~d, family=binomial(link="logit"))

При построении графиков факторы рассматриваются как целые числа, начиная с 1 для первого уровня. Поэтому, если вы хотите использовать 0 и 1 для оси y, но иметь прикрепленные метки, используйте a версию своего вектора результатов, подавьте метки галочек (yaxt="n"), а затем добавьте ось со своими собственными этикетки.

plot(d, a, main = "logistic regression", yaxt="n", ylab="Outcome")
lines(d, lr2$fitted.values, col="red")
axis(side=2, at=c(0,1), labels=levels(a_fac), las=1)
0 голосов
/ 16 февраля 2020

Полагаю, вам нужно преобразовать factor в numeric для glm, т. Е.

glm(as.numeric(a_fac)-1~d)

, чтобы

> glm(as.numeric(a_fac)-1~d)

Call:  glm(formula = as.numeric(a_fac) - 1 ~ d)

Coefficients:
(Intercept)            d  
    0.13333      0.08485  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      2.4 
Residual Deviance: 1.806    AIC: 17.26
...