En fait, cela dépend de ce que vous voulez obtenir. Si vous effectuez une régression logistique uniquement pour les prévisions, vous pouvez utiliser toute méthode de classification supervisée adaptée à vos données. Autre possibilité: analyse discriminante (lda () et qda () du paquet 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')
D'autre part, si vous avez besoin d'intervalles de confiance autour de vos prédictions ou d'erreurs standard sur vos estimations, la plupart des algorithmes de classification ne vous aideront pas. Vous pouvez utiliser des modèles additifs (mixtes) généralisés, pour lesquels plusieurs packages sont disponibles. J'utilise souvent le paquet mgcv de Simon Wood. Les modèles additifs généralisés offrent plus de flexibilité que la régression logistique, car vous pouvez utiliser des splines pour modéliser vos prédicteurs.
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')
Il y a encore beaucoup à faire:
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")
...
Je recommanderais le livre de Simon Wood sur les modèles d'additifs généralisés