bootstrapping逻辑模型 - 一些子集不会收敛

时间:2015-11-26 11:40:07

标签: r boot glm logistic-regression

我想引导逻辑模型。整个数据集的模型收敛良好。但是,引导功能选择不再收敛的子集。我该怎么办?

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,]) 

为什么?我该怎么做才能引导这个模型?

2 个答案:

答案 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/。也许它为你提供了其他有用的功能以及将来使用它。