【发布时间】:2021-03-20 18:02:54
【问题描述】:
glmer 用于估计数据聚类时对 y 的 logit 规模的影响。在以下模型中
fit1 = glmer(y ~ treat + x + ( 1 | cluster), family = binomial(link = "logit"))
treat 的系数的exp 是二元0-1 处理变量的优势比,x 是协变量,cluster 是一个聚类指标,我们通过它模拟随机效应(截距)。 glm 中估计风险比率的标准方法是使用 log 链接,即 family=binomial(link = "log")。但是在glmer 中使用它会出错
Error in (function (fr, X, reTrms, family, nAGQ = 1L, verbose = 0L, maxit = 100L, :
(maxstephalfit) PIRLS step-halvings failed to reduce deviance in pwrssUpdate
调用后
fit1 = glmer(y ~ treat + x + ( 1 | cluster), family = binomial(link = "log"))
网络搜索显示其他人与 Gamma 家族有类似问题。
这似乎是一个普遍的问题,如下面的可重现示例所示。因此,我的问题是:如何使用像 glmer 这样的混合效应模型来估计风险比率?
可重现的示例 以下代码模拟了复制问题的数据。
n = 1000 # sample size
m = 50 # number of clusters
J = sample(1:m, n, replace = T) # simulate cluster membership
x = rnorm(n) # simulate covariate
treat = rbinom(n, 1, 0.5) # simulate random treatment
u = rnorm(m) # simulate random intercepts
lt = x + treat + u[J] # compute linear term of logistic mixed effect model
p = 1/(1+exp(-lt)) # use logit link to transform to probabilities
y = rbinom(n,1,p) # draw binomial outcomes
d = data.frame(y, x, treat)
# First fit logistic model with glmer
fit1 = glmer( y ~ treat + x + (1 | as.factor(J)),
family = binomial(link = "logit"), data = d)
summary(fit1)
# Now try to log link
fit2 = glmer( y ~ treat + x + (1 | as.factor(J)),
family = binomial(link = "log"), data = d)
【问题讨论】:
-
我认为您会在 CrossValidated 上获得更多帮助,因为这是一个比编码问题更具统计性的问题。附言如果您可以制作一个可重现的示例来帮助人们确定错误的原因。
-
@emilliman5 是的,我怀疑自己在哪里有更好的出路……一个可复制的例子需要一点时间才能产生。告诉我这在
glmer中通常是不可能的答案/评论也会有所帮助。 -
一个可重现的例子会很棒。一般问题(仍然未解决)(我认为)与此处详细记录的问题相同:github.com/lme4/lme4/issues/573。当您使用不将预测限制在分布的可行空间内的链接函数时(例如,log-link 允许概率 > 1),glmer 是脆弱的。您可以尝试的事情:(1) 也许 glmmTMB 会起作用吗? (2)调整起始值? (3) 跳过 nAGQ0 初始化步骤(见链接)?
-
@BenBolker 谢谢!我会尝试想出一些东西。您认为带有对数链接的二项式家庭通常是解决这个估计问题的方法吗?
-
这当然是一种合理的方式。据推测,您还可以通过使用基于拟合 logit 模型的适当预测进行计算来生成风险比事后(我相信这是可能的,但需要一些时间来弄清楚如何做到这一点@ 987654322@bmcmedresmethodol.biomedcentral.com/articles/10.1186/…