Jak wykreślić granicę decyzji w R dla modelu regresji logistycznej?


Odpowiedzi:


25
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(...)
       })

alternatywny tekst

Muszę zauważyć, że zachodzi tutaj idealna separacja, dlatego glmfunkcja ta ostrzega. Nie ma to jednak znaczenia tutaj, ponieważ celem jest zilustrowanie, jak narysować granicę liniową i obserwacje pokolorowane zgodnie z ich współzmiennymi.


Mam nadzieję, że nie jestem staroświecki, jeśli używam sieci :-)
suncoolsu 13.01.11

2
Mam również nadzieję, że jeśli jest to problem ze sprzętem, nie będziesz po prostu kopiować wklejania.
suncoolsu 13.01.11

Dzięki. To nie jest pytanie sprzętowe, a odpowiedź pomaga mi zrozumieć mój model.
user2755

o tak, jesteś :)
mpiktas,

1
Czy ktoś może wyjaśnić mi logikę za stokiem i przechwycić? (w odniesieniu do modelu logistycznego)
Fernando

22

Chciałem odpowiedzieć na pytanie w komentarzu do zaakceptowanej powyżej odpowiedzi Fernando: Czy ktoś może wyjaśnić logikę stoku i przechwycić?

Hipoteza regresji logistycznej ma postać:

hθ=g(z)

g(z)z

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

y=1hθ0.5

θ0+θ1x1+θ2x20

powyższe stanowi granicę decyzji i można je zmienić w następujący sposób:

x2θ0θ2+θ1θ2x1

y=mx+bmb


2
Dobre wyjaśnienie towarzyszące powyższej odpowiedzi!
Augustin,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.