W rzeczywistości zależy to od tego, co chcesz uzyskać. Jeśli regresję logistyczną wykonujesz tylko dla prognoz, możesz użyć dowolnej nadzorowanej metody klasyfikacji odpowiedniej dla twoich danych. Inna możliwość: analiza dyskryminacyjna (lda () i qda () z pakietu MASS)
r <- lda(y~x) # use qda() for quadratic discriminant analysis
xx <- seq(min(x), max(x), length=100)
pred <- predict(r, data.frame(x=xx), type='response')
yy <- pred$posterior[,2]
color <- c("red","blue")
plot(y~x,pch=19,col=color[pred$class])
abline(lm(y~x),col='red',lty=2)
lines(xx,yy, col='blue', lwd=5, lty=2)
title(main='lda implementation')
Z drugiej strony, jeśli potrzebujesz przedziałów ufności wokół swoich prognoz lub standardowych błędów w swoich szacunkach, większość algorytmów klasyfikacji nie pomoże. Można użyć uogólnionych modeli addytywnych (mieszanych), dla których dostępnych jest wiele pakietów. Często używam pakietu mgcv Simona Wooda. Uogólnione modele addytywne zapewniają większą elastyczność niż regresja logistyczna, ponieważ można używać splajnów do modelowania predyktorów.
set.seed(55)
require(mgcv)
n <- 100
x1 <- c(rnorm(n), 1+rnorm(n))
x2 <- sqrt(c(rnorm(n,4),rnorm(n,6)))
y <- c(rep(0,n), rep(1,n))
r <- gam(y~s(x1)+s(x2),family=binomial)
xx <- seq(min(x1), max(x1), length=100)
xxx <- seq(min(x2), max(x2), length=100)
yy <- predict(r, data.frame(x1=xx,x2=xxx), type='response')
color=c("red","blue")
clustering <- ifelse(r$fitted.values < 0.5,1,2)
plot(y~x1,pch=19,col=color[clustering])
abline(lm(y~x1),col='red',lty=2)
lines(xx,yy, col='blue', lwd=5, lty=2)
title(main='gam implementation')
Jest o wiele więcej do zrobienia:
op <- par(mfrow=c(2,1))
plot(r,all.terms=T)
par(op)
summary(r)
anova(r)
r2 <- gam(y~s(x1),family=binomial)
anova(r,r2,test="Chisq")
...
Poleciłbym książkę Simona Wooda o ogólnych modelach addytywnych