【问题标题】:fitting a GLMER model with glmmTMB用 glmmTMB 拟合 GLMER 模型
【发布时间】:2021-05-27 13:33:09
【问题描述】:

我正在尝试用glmmTMB 拟合广义线性混合模型

summary(glmmTMB(cbind(SARA_ph58, 1)~ `Melk T`+VetT+EiwT+
    `VET EIWIT ratio`+LactT+CelT+UrmT+vetg+eiwitg+lactg+
    `DS opname`+`boluses per day`+`chewings per bolus`+
    `rumination (min/d)`+ Activiteit + (1|experiment),
     data = dataset1geenNA, family = binomial()))

当我运行此代码时,我会得到一些输出,但也会收到下一条警告消息:

1: 适合TMB(TMBStruc) : 模型收敛问题;非正定 Hessian 矩阵。见小插图('疑难解答')
2:在 sqrt(diag(vcov)) 中:产生了 NaN

有人知道如何解决这个问题吗?

输出:

 Family: binomial  ( logit )
Formula:          cbind(SARA_ph58, 1) ~ `Melk T` + VetT + EiwT + `VET EIWIT ratio` +      LactT + CelT + UrmT + vetg + eiwitg + lactg + `DS opname` +  
    `boluses per day` + `chewings per bolus` + `rumination (min/d)` +      Activiteit + (1 | experiment)
Data: dataset1geenNA

     AIC      BIC   logLik deviance df.resid 
      NA       NA       NA       NA       79 

Random effects:

Conditional model:
 Groups     Name        Variance  Std.Dev. 
 experiment (Intercept) 5.138e-08 0.0002267
Number of obs: 96, groups:  experiment, 3

Conditional model:
                       Estimate Std. Error z value Pr(>|z|)  
(Intercept)          -1.595e+01  1.605e+01  -0.994   0.3202  
`Melk T`             -2.560e-01  1.330e-01  -1.925   0.0542 .
VetT                 -7.499e+00  3.166e+00  -2.369   0.0178 *
EiwT                  8.353e+00  4.885e+00   1.710   0.0872 .
`VET EIWIT ratio`     2.100e+01  1.545e+01   1.359   0.1742  
LactT                -2.086e+00  8.571e-01  -2.434   0.0149 *
CelT                 -1.430e-04  6.939e-04  -0.206   0.8367  
UrmT                  1.300e-02  3.978e-02   0.327   0.7438  
vetg                  1.166e-03         NA      NA       NA  
eiwitg               -2.596e-03  5.180e-03  -0.501   0.6162  
lactg                 7.862e-03         NA      NA       NA  
`DS opname`          -1.882e-02  8.416e-02  -0.224   0.8231  
`boluses per day`    -3.200e-02  1.226e-01  -0.261   0.7940  
`chewings per bolus`  1.758e-02  6.688e-02   0.263   0.7927  
`rumination (min/d)` -1.468e-03  3.145e-03  -0.467   0.6408  
Activiteit            4.265e-03  4.625e-03   0.922   0.3564
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

【问题讨论】:

  • 我们需要更多信息来帮助您解决这个问题。 glmmTMB 的开发版本有一个 diagnose 功能可能对您有所帮助:有关如何诊断的说明,请参阅 glmmtmb.github.io/glmmTMB。有一个基本的故障排除小插图(警告消息中指出的那个)here。你能至少给我们看看输出吗?
  • @BenBolker 我添加了整个输出的图片,让我知道它是否适合您。
  • 谢谢,但如果您可以将输出包含为 text(即从您的 R 会话中剪切和粘贴)而不是作为屏幕截图,那就更好了。将其放入代码块中;如果您不知道该怎么做,只需输入文本,我或其他人将进行编辑。
  • @BenBolker 你的意思是这样吗?
  • 是的............

标签: r


【解决方案1】:

这里有很多问题。

最近的问题是你有一个(接近的)奇异拟合glmmTMB 试图使方差为零(5.138e-08 尽可能接近)。因为它符合对数方差(实际上是对数标准差)尺度,这意味着它试图去 -∞,这使得参数的协方差矩阵无法估计。

发生这种情况的主要原因是您的随机效应 (experiment) 中的组数非常少 (3)。

这些是混合模型中极为常见的问题:您可以从阅读?lme4::isSingularrelevant section of the GLMM FAQ 开始。

最简单的解决方案是将experiment 视为固定效果,在这种情况下,您将不再有混合模型,您可以回到普通的glm()

您的代码的另一个稍微令人担忧的方面是响应变量cbind(SARA_ph58, 1)。如果SARA_ph58二进制 (0/1) 变量,您可以只使用SARA_ph58。如果你在做的时候传递一个双列矩阵,第一列被解释为成功的次数,第二列被解释为失败的次数;看起来您可能一直在尝试指定每个观察的试验总数为 1(同样,如果是这种情况,您可以使用 SARA_ph58 作为响应)。 p>

最后一点是,lme4::glmerglmmTMB 更能容忍奇异拟合。

【讨论】:

  • 谢谢你的回复,已经比较清楚了,我去研究一下相关资料。另一方面,根据您的知识,现在选择要包含到我最终 GLMER 模型中的属性变量的最快方法是什么?我不仅限于使用 glmmTMB,其他(更简单的命令,我只是 R 的初学者)命令也能解决这个问题吗?再次提前感谢!
  • 抱歉,这是一大堆蠕虫要解决的问题。我提出了更多建议。
  • 如果这解决了您的问题,我们鼓励您点击复选标记接受它。
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多