Trên thực tế, điều đó phụ thuộc vào những gì bạn muốn có được. Nếu bạn chỉ thực hiện hồi quy logistic cho các dự đoán, bạn có thể sử dụng bất kỳ phương pháp phân loại được giám sát nào phù hợp với dữ liệu của mình. Một khả năng khác: phân tích phân biệt (lda () và qda () từ gói 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')
Mặt khác, nếu bạn cần khoảng tin cậy xung quanh dự đoán hoặc lỗi tiêu chuẩn trong ước tính của bạn, hầu hết các thuật toán phân loại sẽ không giúp bạn. Bạn có thể sử dụng các mô hình phụ gia tổng hợp (hỗn hợp), trong đó có một số gói có sẵn. Tôi thường sử dụng gói mgcv của Simon Wood. Các mô hình phụ gia tổng quát cho phép linh hoạt hơn so với hồi quy logistic, vì bạn có thể sử dụng các spline để mô hình hóa các dự đoán của mình.
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')
Còn rất nhiều việc phải làm:
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")
...
Tôi muốn giới thiệu cuốn sách của Simon Wood về các mô hình phụ gia tổng quát