首页 文章

来自lmList的广义线性模型的置信区间

提问于
浏览
4

我正在尝试使用 lme4 包中的 lmList 计算具有通用模型的组的置信区间 . 它适用于普通线性模型,但在因变量是二分的时会失败 . 例如,这很好用:

d <- data.frame(
  g = sample(c("A","B","C","D","E"), 250, replace=TRUE),
  y1 = runif(250, max=100),
  y2 = sample(c(0,1), 250, replace=TRUE)
)

library(lme4)

fm1 <- lmList(y1 ~ 1 | g, data=d)

我可以使用 coef(fm1) 提取系数,并使用 confint(fm1) 提取系数的置信区间 . 然后我运行一个具有二分结果的模型:

fm2 <- lmList(y2 ~ 1 | g, data=d, family=binomial)

我仍然可以使用 coef(fm2) 获取系数,但是当我尝试获得置信区间时,我收到一个错误:

> confint(fm2)
Waiting for profiling to be done...
Waiting for profiling to be done...
Error in val[, , i] <- eval(mCall) : incorrect number of subscripts

我原本打算将它发布到stats.stackexchange,因为我认为这可能是我对GLM的置信区间不了解的东西,但后来我发现我仍然可以使用它来获得置信区间

by(d, d$g, function(x) confint(glm(y2 ~ 1, data=x, family=binomial)))

有没有办法用 lmList 做到这一点?

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252  
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                  
[5] LC_TIME=German_Germany.1252   

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

other attached packages:
[1] lme4_0.999375-42 Matrix_1.0-6     lattice_0.20-6 

loaded via a namespace (and not attached):
[1] grid_2.15.0   MASS_7.3-17   nlme_3.1-103  stats4_2.15.0 tools_2.15.0

1 回答

  • 2

    这确实是一个错误,我正在修复 . 事实证明这是相当简单的:基本问题是 confint.lm 返回一个矩阵,而 confint.glm 返回一个数据帧 .

    总的来说,我建议在http://r-forge.r-project.org/tracker/?atid=298&group_id=60&func=browse向bug追踪器发布除了最简单的bug修复之外的所有错误(我抱怨R-core对bug报告的态度,所以为了保持一致,我必须遵循我自己的规则......)感谢您的报告!

相关问题