我想引导逻辑模型。整个数据集的模型收敛良好。但是,引导功能选择不再收敛的子集。我该怎么办?
library(boot)
set.seed(2)
y <- c(rep(0,10),rep(1,10))
x <- c(rnorm(10,2,1),rnorm(10,6,1))
dat = data.frame(x, y)
fit <- glm(y ~ x, quasibinomial(), data=dat) # Model with all data workes fine
bs <- function(data, indices) {
d <- data[indices,]
fitboot <- glm(y ~ x, family = quasibinomial(), data=d)
return(coef(fitboot))
}
results <- boot(data=dat, statistic=bs, R=10) # I get warnings
我收到警告说:
1: glm.fit: algorithm did not converge
2: glm.fit: algorithm did not converge
3: glm.fit: algorithm did not converge
4: glm.fit: algorithm did not converge
这似乎是由于选择了子集。
有趣的是,这个子集有效:
fit <- glm(y ~ x, quasibinomial(), data=dat[1:13,])
但这不是:
fit <- glm(y ~ x, quasibinomial(), data=dat[1:14,])
为什么?我该怎么做才能引导这个模型?
答案 0 :(得分:2)
迭代重新加权最小二乘算法未能在默认的25次迭代中收敛。如果增加迭代次数,警告就会消失,如下所示:
fitboot <- glm(y ~ x, family = quasibinomial(), data=d,
control=glm.control(maxit=50))
答案 1 :(得分:0)
也许尝试获取Wilcox包,它有几个允许自举的功能。 http://dornsife.usc.edu/labs/rwilcox/software/。也许它为你提供了其他有用的功能以及将来使用它。