我有一个具有三向交互作用、嵌套随机变量和二项式响应变量的广义线性混合模型:
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()
了,它也不起作用。
此页面中的作者正在尝试完成类似的事情。
这个页面有点帮助。