¿Cómo trazar el límite de decisión en R para el modelo de regresión logística?

15

Hice un modelo de regresión logística usando glm en R. Tengo dos variables independientes. ¿Cómo puedo trazar el límite de decisión de mi modelo en el diagrama de dispersión de las dos variables? Por ejemplo, ¿cómo puedo trazar una figura como: http://onlinecourses.science.psu.edu/stat557/node/55

Gracias.

usuario2755
fuente
2
El enlace a la figura está muerto.
Nick Stauner

Respuestas:

24
set.seed(1234)

x1 <- rnorm(20, 1, 2)
x2 <- rnorm(20)

y <- sign(-1 - 2 * x1 + 4 * x2 )

y[ y == -1] <- 0

df <- cbind.data.frame( y, x1, x2)

mdl <- glm( y ~ . , data = df , family=binomial)

slope <- coef(mdl)[2]/(-coef(mdl)[3])
intercept <- coef(mdl)[1]/(-coef(mdl)[3]) 

library(lattice)
xyplot( x2 ~ x1 , data = df, groups = y,
   panel=function(...){
       panel.xyplot(...)
       panel.abline(intercept , slope)
       panel.grid(...)
       })

texto alternativo

Debo señalar que aquí se produce una separación perfecta, por lo tanto, la glmfunción le da una advertencia. Pero eso no es importante aquí ya que el propósito es ilustrar cómo dibujar el límite lineal y las observaciones coloreadas de acuerdo con sus covariables.

suncoolsu
fuente
Espero no estar pasado de moda si uso celosía :-)
suncoolsu
2
También espero que si este es un problema de hardware, no simplemente copie y pegue.
suncoolsu
Gracias. Esta no es una pregunta de HW y la respuesta me ayuda a entender mi modelo.
user2755
oh yes you are :)
mpiktas
1
¿Alguien puede explicarme la lógica detrás de la pendiente e interceptar? (con respecto al modelo logístico)
Fernando
22

Quería abordar la pregunta en comentario a la respuesta aceptada de Fernando: ¿Alguien puede explicar la lógica detrás de la pendiente e interceptar?

La hipótesis de la regresión logística toma la forma de:

hθ=g(z)

g(z)z

z=θ0+θ1x1+θ2x2

y=1hθ0.5

θ0+θ1x1+θ2x20

lo anterior es el límite de decisión y se puede reorganizar como:

x2θ0θ2+θ1θ2x1

y=mx+bmb

Andy
fuente
2
Buena explicación que acompaña a la respuesta anterior!
Augustin