दरअसल, यह इस बात पर निर्भर करता है कि आप क्या प्राप्त करना चाहते हैं। यदि आप केवल भविष्यवाणियों के लिए लॉजिस्टिक प्रतिगमन करते हैं, तो आप अपने डेटा के लिए अनुकूल किसी भी पर्यवेक्षित वर्गीकरण पद्धति का उपयोग कर सकते हैं। एक अन्य संभावना: विभेदक विश्लेषण (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 पैकेज का उपयोग करता हूं। सामान्यीकृत योजक मॉडल लॉजिस्टिक प्रतिगमन की तुलना में अधिक लचीलेपन की अनुमति देते हैं, क्योंकि आप अपने भविष्यवक्ताओं के मॉडलिंग के लिए स्प्लिन का उपयोग कर सकते हैं।
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")
...
मैं सामान्यीकृत एडिटिव मॉडल्स के बारे में साइमन वुड की पुस्तक की सिफारिश करूंगा