0

我有一个混合模型,其中包含两个分类预测变量(X1、X2)和一个连续预测变量(X3)。

model <- lmer(z ~ x1 * x2 * x3 + (1|group), data = data)

我有兴趣比较我的连续预测器的高低特征。

我的计划是对比 X3 的简单斜率(在 -1 SD、M、+1 SD)。

据我了解,这可以使用 emmeans 的 emtrends() 函数来完成,如下所示:

sd1 <- mean(data$X3, na.rm = T) + sd(data$X3, na.rm = T)
mean <- mean(data$X3, na.rm = T)
sd2 <- mean(data$X3, na.rm = T) - sd(data$X3, na.rm = T)

mylist <- list(X3 = c(sd1, mean, sd2))

emtrends(model, ~ X1 * X2 | X3,
                      var = "X3",
                      at = mylist)

但是,所提供的系数对于 X3 的三个值是相同的。

任何人都可以阐明这一点吗?

4

1 回答 1

0

在这种特定情况下, reghelper 包中的 simple_slopes函数可以替代 emmeans 。以下模拟探测 x3 的 -1,0,1 值的简单斜率(模拟为均值 = 0,sd = 1),但您当然可以使用任何值。对于分类预测变量,计算所有组合以及 x3 在两个分类预测变量的“平均值”处的斜率:

library(lme4)
library(reghelper)
set.seed(42143)

#sample size
n=1000

#generate the factor variables (dummy coded)
x1<-sample(x = c(0,1),size = n,replace=T,prob=c(.90,.10))
x2<-sample(x = c(0,1),size = n,replace=T,prob=c(.90,.10))

#generate the continuous variable
x3<-rnorm(n,mean=0,sd=1)

#generate the group variable
group<-sample(letters,size=n,replace=T)

#generate the dependent variable with some main effect and three-way interaction weights
z<-0.2*x1-0.3*x2+0.4*x3+0.2*x1*x2*x3+rnorm(n)

#collect variables to a data frame
dat<-data.frame(x1,x2,x3,group,z)

#run the model
model <- lmer(z ~ x1 * x2 * x3 + (1|group), data = dat)

#explore simple slopes at specified variables values. 
#"sstest" gives the slopes 

simple_slopes(model,levels=list(x1=c(0,1,mean(dat$x1),"sstest"),
                                x2=c(0,1,mean(dat$x2),"sstest"),
                                x3=c(-1,0,1,"sstest")))
于 2019-06-18T06:44:02.603 回答