2

我有一个具有三向交互作用、嵌套随机变量和二项式响应变量的广义线性混合模型:

modelB15=glmer(cbind(resistant, (total-resistant) )~
               time*inoc_source*inoc_resistance+
               (1|block/plot),
               family = binomial,
               data = B15)

生成系数线性组合的相应矩阵(对比矩阵)是:

time1_sourceHY_mix      = c(1,0,0,0,0,0,0,0,0,0,0,0)
time2_sourceHY_mix      = c(1,1,0,0,0,0,0,0,0,0,0,0)
time1_sourceNV_mix      = c(1,0,1,0,0,0,0,0,0,0,0,0)
time1_sourceHY_negative = c(1,0,0,1,0,0,0,0,0,0,0,0)
time1_sourceHY_positive = c(1,0,0,0,1,0,0,0,0,0,0,0)
time1_sourceNV_negative = c(1,0,1,1,0,1,0,0,0,0,0,0)
time1_sourceNV_positive = c(1,0,1,0,1,0,1,0,0,0,0,0)
time2_sourceNV_mix      = c(1,1,1,0,0,0,0,1,0,0,0,0)
time2_sourceHY_negative = c(1,1,0,1,0,0,0,0,1,0,0,0)
time2_sourceHY_positive = c(1,1,0,0,1,0,0,0,0,1,0,0)
time2_sourceNV_negative = c(1,1,1,1,0,1,0,1,1,0,1,0)
time2_sourceNV_positive = c(1,1,1,0,1,0,1,1,0,1,0,1)

然后我可以提取向量来测试不同的假设,例如“时间 1 与时间 2 是否不同”?

time_HYpositive = time2_sourceHY_negative-time1_sourceHY_positive
time_HYnegative = time2_sourceHY_negative-time1_sourceHY_negative
time_HYmix      = time2_sourceHY_mix-time1_sourceHY_mix
time_NVpositive = time2_sourceNV_negative-time1_sourceNV_positive
time_NVnegative = time2_sourceNV_negative-time1_sourceNV_negative
time_NVmix      = time2_sourceNV_mix-time1_sourceNV_mix

timeDiff=rbind(time_HYpositive, time_HYnegative, time_HYmix,
 time_NVpositive,time_NVnegative,time_NVmix)

我想在 library(gmodels) 中使用 estimable() 在每个系数或系数组合的平均值之间进行不同的比较:

estimable(modelB15, timeDiff, conf.int=.991) 

但我收到以下错误消息:

Error in FUN(newX[, i], ...) : 'param' has no names and does not match number of coefficients of model. Unable to construct coefficient vector

estimable() 与 glm 一起工作得很好,但是 a) 如何修改它以与 lmer() 一起工作 b) 如果 estimable 不能与 GLMM 一起工作,还有哪些其他函数可以完成相同的任务?

我试过glmmPQL()了,它也不起作用。

此页面中的作者正在尝试完成类似的事情。

这个页面有点帮助。

4

1 回答 1

0

estimable()不适用glmer()

但是,该lsmeans()包与广义线性混合模型兼容,并且可以通过成对比较生成 LS 均值。这使用户能够比较系数组合,而不会生成混乱的矩阵。

[重新思考植物和土壤科学中非正态数据的分析] Walter W. Stroup 的描述非常出色,补充文档包含有用的示例 R 代码

于 2015-12-16T00:42:17.153 回答