我在R中为二进制响应变量运行一个广义线性混合模型,我收到一条错误信息。
我的代码是:
library('lme4')
m1<-glmer(data=mydata, REPRODUCE~F1TREAT*SO+(1|LINE/MATERNAL_ID), family=binomial)
其中REPORDUCE =二进制,F1TREAT和SO =因子各有2个级别。这将返回警告:
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
unable to evaluate scaled gradient
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Hessian is numerically singular: parameters are not uniquely determined
然而,对象&#39; m1&#39;仍出现在我的值列表中。打字:
summary(m1)
返回错误:
Error in diag(vcov(object, use.hessian = use.hessian)) :
error in evaluating the argument 'x' in selecting a method for function 'diag':
Error in solve.default(h) :
Lapack routine dgesv: system is exactly singular: U[5,5] = 0
有谁知道这是什么问题?有趣的是,如果我排除变量&#39; SO&#39;我可以运行模型。
编辑:
与(MYDATA,表(复制,F1TREAT,SO))
, , SO = o
F1TREAT
REPRODUCE control stress
0 61 167
1 125 8
, , SO = s
F1TREAT
REPRODUCE control stress
0 0 0
1 186 172
glm的结果是: 呼叫: glm(公式= REPRODUCE~F1TREAT * SO,family =二项式,data = mydata)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.49323 -0.30592 0.00005 0.00005 2.48409
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.7174 0.1562 4.594 4.36e-06 ***
F1TREATstress -3.7560 0.3942 -9.529 < 2e-16 ***
SOs 19.8486 1300.0538 0.015 0.988
F1TREATstress:SOs 3.7560 1875.5931 0.002 0.998
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 898.27 on 718 degrees of freedom
Residual deviance: 300.37 on 715 degrees of freedom
AIC: 308.37
Number of Fisher Scoring iterations: 19
答案 0 :(得分:1)
with(mydata,table(REPRODUCE,F1TREAT,SO))
, , SO = o
F1TREAT
REPRODUCE control stress
0 61 167
1 125 8
, , SO = s
F1TREAT
REPRODUCE control stress
0 0 0
1 186 172
有人向我建议我的问题是由于某些组合不存在(complete separation)。你可以看到所有的植物都在&#39;类别开花,因此SO = s,如果完美地提出REPRODUCE。如果我改变了几行,那么一个人控制植物开花了#39;一种压力的植物开花了#39;然后我能够运行模型并获得summary()输出(虽然仍然带有警告消息,可能是由于部分分离)。 gl中SO的非重要性归因于Hauck-Donner phenomenon。
我不知道该如何处理