我正在运行具有类似结构的模型:
model <- glmer(protest ~ factora*factorb*numeric+factora+factorb+numeric+1 + (1 + factor1|level1) + (1|level2), data=data, family=binomial(link='logit'))
其中factora
和factorb
是因子变量,numeric
是数值变量。
我很好奇在factora
(1-5)的两个值(在整个数值范围内)之间保持factorb
恒定为3时,交互作用中对比度的统计意义值。
我没有运气就尝试了以下选项:
library(psycho)
get_contrasts(model, formula="factora:factorb:numeric", adjust="tukey")
View(contrasts$contrasts)
这有效,但不幸的是结果保持numeric
不变,并且仅变化factora
和factorb
。因此,它不能回答我的问题。
我也尝试过:
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。
有什么想法吗?
答案 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