如何在模拟研究中使用lbreg立即获得系数

时间:2019-08-08 10:45:32

标签: r simulation

我有1000个数据集,我已使用对数二项软件包(lbreg)进行了分析,但结果在列表中,并且我试图将其转换为数据框。我有一个代码,将提供该列表的样子,因为该列表包含1000个数据集的每个输出23个元素

我尝试了很多事情,但是没有进行转换,所以我弄清楚了系数的压缩方式,但是现在我需要将它们打包一次而不是进行1000次

library(lbreg)
nsim = 1000
for(k in 1:nsim){
  dat <- mydata1[mydata1$Sim == k,]
  sp <- split(mydata1, mydata1$Sim)
  model_list <- lapply(sp, function(dat){
    tryCatch(model1 <- lbreg(y ~ x1+x2, family = binomial(link = log), data = dat),
             error = function(e) e)
  })
}
ok <- !sapply(model_list, inherits, 'error')
fitlist <- model_list[ok]

我尝试使用

data.frame(matrix(unlist(fitlist), nrow=1000, byrow=T),stringsAsFactors=FALSE)

但是失败了。

如果我这样做,我会得到系数,但要获得所有系数,我必须做多达1000次

data.frame(coef(fitlist$`1`), coef(fitlist$`2`), coef(fitlist$`3`), coef(fitlist$`4`), coef(fitlist$`4`), coef(fitlist$`5`))

对于数据集,如果要检出 https://github.com/Seanlove89/logitdata

1 个答案:

答案 0 :(得分:0)

#Using base R
do.call("rbind",lapply(fitlist, function(x) data.frame(t(coef(x)))))
#or using `purrr`
purrr::map_df(set_names(fitlist, nm=1:length(lstfit)), 
              ~data.frame(t(coef(.x))), 
             .id = "model")