Как получить простые уклоны для определенных значений в трендах? - PullRequest
0 голосов
/ 04 июня 2019

У меня смешанная модель с двумя категориальными предикторами (X1, X2) и одним непрерывным предиктором (X3).

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

Мне интересно сравнить высокие и низкие черты моего непрерывного предиктора.

Мой план состоит в том, чтобы противопоставить простые уклоны для X3 (при -1 SD, M, +1 SD).

Насколько я понимаю, это можно сделать с помощью функции emtrends () из emmeans, например:

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.

Может кто-нибудь пролить свет на это?

1 Ответ

0 голосов
/ 18 июня 2019
Функция

simple_slopes в пакете reghelper может быть альтернативой emmeans в этом конкретном случае.Следующее моделирование исследует простые наклоны для значений -1,0,1 x3 (который имитировался как имеющий среднее значение = 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")))
...