【问题标题】:Confidence intervals for generalized linear model from `lmList`来自“lmList”的广义线性模型的置信区间
【发布时间】:2012-06-23 20:39:32
【问题描述】:

我正在尝试使用 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 

【问题讨论】:

  • 我认为这是 lmList 的 "!missing(family)" 分支中的错误,或者是由 confint.lmList 处理的错误。请注意,当您尝试“family=gaussian”时,它也会在confint 中产生错误。在这种情况下使用 by() 或 ddply 没有任何问题。
  • 啊哈,好的。不错的收获。那么我将使用by() 方法。感谢您的评论。
  • @BenBolker 我们应该就这个小问题提交错误报告,还是让道格拉斯专注于更重要的事情?

标签: r lme4


【解决方案1】:

这确实是一个错误,我正在努力修复。结果很简单:基本问题是confint.lm 返回一个矩阵,而confint.glm 返回一个数据框。

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

【讨论】:

  • 谢谢!老实说,我认为这是我做错或遗漏的事情,所以我没想过提交错误报告。
  • 让我澄清一下:我的意思是,一旦你非常确定某事是一个错误(例如,在询问 r-help 或堆栈溢出以澄清你是否不确定),你应该提交错误报告。当您不确定时要求澄清是一个好主意。 (我的这部分回答主要是回应@Dieter Menne 的评论。)
猜你喜欢
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
相关资源
最近更新 更多