Das hängt davon ab, was Sie erhalten möchten. Wenn Sie nur für die Vorhersagen eine logistische Regression durchführen, können Sie jede für Ihre Daten geeignete überwachte Klassifizierungsmethode verwenden. Eine andere Möglichkeit: Diskriminanzanalyse (lda () und qda () aus Paket 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')
Wenn Sie dagegen Konfidenzintervalle für Ihre Vorhersagen oder Standardfehler in Ihren Schätzungen benötigen, helfen Ihnen die meisten Klassifizierungsalgorithmen nicht. Sie können verallgemeinerte additive (gemischte) Modelle verwenden, für die eine Reihe von Paketen verfügbar sind. Ich benutze oft das mgcv-Paket von Simon Wood. Verallgemeinerte additive Modelle bieten mehr Flexibilität als logistische Regression, da Sie Splines zur Modellierung Ihrer Prädiktoren verwenden können.
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')
Es gibt noch viel mehr zu tun:
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")
...
Ich würde das Buch von Simon Wood über verallgemeinerte additive Modelle empfehlen