2015-11-26 30 views
0

我想引導一個邏輯模型。整個數據集的模型收斂良好。但是,啓動功能選擇不再收斂的子集。我能做什麼?bootstrapping邏輯模型 - 一些子集不收斂

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

迭代重新加權最小二乘算法未能收斂在默認的25次迭代中。如果您增加迭代次數,警告消失,如下所示:

fitboot <- glm(y ~ x, family = quasibinomial(), data=d, 
       control=glm.control(maxit=50)) 
+0

謝謝!這工作!你幫了我很多。我已經花了整整一天的時間,現在它工作。謝謝! – Stefan

0

也許嘗試購買Wilcox軟件包,該軟件包有幾個允許引導的功能。 http://dornsife.usc.edu/labs/rwilcox/software/。也許它會給你其他有用的功能,以及將來使用它。

+0

非常感謝您的回答,但我終於做了上面提出的建議。 – Stefan