Насправді це залежить від того, що ви хочете отримати. Якщо ви здійснюєте логістичну регресію лише для прогнозів, ви можете використовувати будь-який контрольований метод класифікації, який підходить для ваших даних. Інша можливість: дискримінантний аналіз (lda () та qda () з пакету 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')
З іншого боку, якщо вам потрібні інтервали довіри навколо ваших прогнозів або стандартні помилки ваших оцінок, більшість алгоритмів класифікації вам не допоможуть. Можна використовувати узагальнені моделі добавок (змішані), для яких доступна низка пакетів. Я часто використовую mgcv пакет Simon Wood. Узагальнені моделі добавок дозволяють отримати більшу гнучкість, ніж логістична регресія, оскільки ви можете використовувати сплайни для моделювання ваших прогнозів.
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')
Є ще багато чого:
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")
...
Я рекомендую книгу Саймона Вуда про узагальнені моделі добавок