与glmer的互动对比

时间:2018-08-13 08:32:20

标签: r data-modeling lme4 interaction

我正在运行具有类似结构的模型:

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

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

我很好奇在factora(1-5)的两个值(在整个数值范围内)之间保持factorb恒定为3时,交互作用中对比度的统计意义值。

我没有运气就尝试了以下选项:

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。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这里有几个问题使您不满意。

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

第二个是interaction中的emmeans::contrast()参数需要使用对比度的类型规范,例如"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