我试图运行一个混合效应泊松模型。当我输入一个特定的变量时,我遇到了模型收敛的问题,我希望能够思考一下为什么会这样。这是我的一段数据。
id gender race gene grade y
1 0 1 -1.5 6 4
1 0 1 -2.1 7 2
1 0 1 1.5 8 6
2 1 2 3.6 6 4
2 1 2 2.1 7 3
2 1 2 1.6 8 1
我使用了下面的代码,并得到下面的错误消息。
m2<-glmer(y ~ gender + race + gene + grade +
(1 | id), data=data_long_1, family = "poisson"(link = "log"), control = glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=2e5)))
Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.00392577 (tol = 0.002, component 1)
问题是“等级”变量,因为当我删除变量时,我没有收到该错误消息。每个人都有三个孙辈(6,7,8人)。理想情况下,我想进行x级基因相互作用,但如果模型中没有这个等级,我就无法做到这一点。
估计系数如下:
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.683e+00 4.653e-02 36.159 < 2e-16 ***
gender1 -3.194e-02 3.584e-02 -0.891 0.37288
race1 1.329e-01 4.249e-02 3.127 0.00177 **
gene 8.298e-03 2.499e-02 0.332 0.73983
grade 2.980e-07 6.552e-03 0.000 0.99996
gene:grade 3.346e-07 6.768e-03 0.000 0.99996
有人能洞察为什么这个变量会是个问题吗?
发布于 2020-09-06 19:11:59
我无法复制您的收敛警告:对于您脱机发送的数据,在Linux上,使用lme4
的开发版本,我没有收到任何收敛警告--这样的平台依赖并不是非常罕见的.
但是,我想我可以根据你发送的数据的结构来解释你的结果。下面是一个典型个人的示例,为保密性而修改了值:
id gender race y gene grade
1 xxxx 1 1 8 -1.543210 6
2 xxxx 1 1 8 -1.543210 7
3 xxxx 1 1 8 -1.543210 8
4 xxxx 1 1 8 -1.543210 9
在数据集中有许多个体( 500到1000之间)
这意味着grade
对y
的平均影响,或者任何与grade
的交互作用,都是零的!
由于这个数据集实际上没有关于每个id
的多个观测值的信息(即每个人重复4次相同的值,除grade
外),所以最好只对每个人进行第一次观察并进行拟合。
glm(y ~ gender + race + gene, data=..., family=poisson)
(我通常省略(link="log")
,因为它是默认的,但如果它使代码更清晰,则可以包含它)。
一个similar question显示,如果你试图用一个剩余方差项(例如LMM/高斯响应)来拟合一个模型,那么它就会变得更加病态。
https://stackoverflow.com/questions/63760090
复制相似问题