与 glmer 的交互对比

interaction contrast with glmer

我是运行结构相似的模型:

model <- glmer(protest ~ factora*factorb*numeric+factora+factorb+numeric+1 + (1 + factor1|level1) + (1|level2), data=data, family=binomial(link='logit'))

其中 factorafactorb 是因子变量,numeric 是数值变量。

我很好奇在 factora 保持在 3 的情况下,在整个 factorb (1-5) 的两个值之间,交互中对比度的统计显着性数值范围。

我尝试了以下选项但没有成功:

library(psycho)
get_contrasts(model, formula="factora:factorb:numeric", adjust="tukey")
View(contrasts$contrasts) 

这是可行的,但不幸的是,结果保持 numeric 不变,仅变化 factorafactorb。因此,它没有回答我的问题。

我也试过:

library(multcomp)
test = glht(model,linfct=mcp("factora:factorb:numeric"="Tukey"))

这会产生

的错误
Error in mcp2matrix(model, linfct = linfct) : 
  Variable(s) ‘factora:factorb:numeric’ have been specified in ‘linfct’ but cannot be found in ‘model’! 

不考虑我指定交互的方式,尽管 get_contrasts 等其他函数以相同的方式找到指定的交互。

我也试过:

library(emmeans)
contrast(m.3[[2]], interaction = c("factora", "factorb", "numeric"))

但这不支持 glmer。

有什么想法吗?

这里有几个问题让您感到困惑。

一个是我们并没有真正将对比应用于数字预测变量。数字预测变量有斜率,没有对比;如果您有一个模型,其中数值预测变量与因子相互作用,这意味着数值预测变量的斜率对于因子的每个水平都是不同的。 emmeans 包中的函数 emtrends() 可以帮助您估计那些不同的斜率。

第二个是 emmeans::contrast() 中的 interaction 参数需要对要使用的 类型 进行规范,例如 "pairwise" .应用它们的因素是第一个参数中 emmGrid 对象中的因素。

所以...我想也许您想尝试这样的事情:

emt <- emtrends(model, ~ factora*factorb, var = "numeric")
emt    # list the estimated slopes

contrast(emt, interaction = "consec")
    # obtain interaction contrasts comparing consecutive levels of the two factors