自举逻辑模型 - 一些子集不收敛
bootstrapping logistic model - some subsets do not converge
我想要 bootstrap 逻辑模型。具有整个数据集的模型收敛得很好。然而,引导函数选择不再收敛的子集。我能做什么?
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,])
这是为什么?我可以对 bootstrap 这个模型做些什么?
也许尝试获取 Wilcox 包的源代码,它有几个允许引导的功能。 http://dornsife.usc.edu/labs/rwilcox/software/。也许它还为您提供了其他有用的功能,以便将来使用。
迭代重新加权最小二乘算法在默认的 25 次迭代中未能收敛。如果您增加迭代次数,警告就会消失,如下所示:
fitboot <- glm(y ~ x, family = quasibinomial(), data=d,
control=glm.control(maxit=50))
我想要 bootstrap 逻辑模型。具有整个数据集的模型收敛得很好。然而,引导函数选择不再收敛的子集。我能做什么?
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,])
这是为什么?我可以对 bootstrap 这个模型做些什么?
也许尝试获取 Wilcox 包的源代码,它有几个允许引导的功能。 http://dornsife.usc.edu/labs/rwilcox/software/。也许它还为您提供了其他有用的功能,以便将来使用。
迭代重新加权最小二乘算法在默认的 25 次迭代中未能收敛。如果您增加迭代次数,警告就会消失,如下所示:
fitboot <- glm(y ~ x, family = quasibinomial(), data=d,
control=glm.control(maxit=50))