mediation:: mediation不支持每个模型超过两个级别

  • 本文关键字:mediation 两个 不支持 模型 r
  • 更新时间 :
  • 英文 :


当我使用mediation:: mediation拟合中介模型时,如下所示:

library(mediation)
set.seed(30)
df <- data.frame(x = runif(100), 
x2 = runif(100),
y = runif(100), m = runif(100), 
p_id = sample(1:5, 100, replace = TRUE), 
item = sample(LETTERS, 100, replace = TRUE))
fit.totaleffect <- lmer(y ~ (1|item) + (1|p_id) + x + x2, data = df)
fit.mediator <- lmer(m ~ (1|item) + (1|p_id) + x + x2, data = df)
fit.dv <- lmer(y ~ (1|item) + (1|p_id) + x  + x2 + m, data = df)
results <- mediation::mediate(fit.mediator, fit.dv, treat=c('x1', 'x2'), mediator='m')

我得到错误,"medium不支持每个模型超过两个级别"。

在另一个答案中,有人说:

"中介包中的中介函数只接受二进制文件中介或数字中介。在你的情况下,似乎你的中介者是绝对的,但包含两个以上的层次。你可以将其转换为数字或虚拟代码。">

然而,这不适用于我的数据。基于此,我的数据似乎是合适的(中介是数字的)。

怎么了?

(NB。我的实际数据没有引发边界(奇异)警告,但在其他方面与上面的虚拟数据具有相同的质量)。

产生错误的代码是:

out.group <- names(model.y@flist)
n.out <- length(out.group)
if (n.out > 1) {
stop("mediate does not support more than two levels per model")
}

如果我们看一下model.y@flist,你会看到它有以下值:

> fit.dv@flist
$item
[1] U A A F A Z L B V W C C X P J W X Z A Z A B O N J T K M L A S I V O B Q B T F M S L A N B
[46] O P A Y K U T T Z R O E Y M A B Z S Y U A V Z F J H K X D K V H G S S W E T S M I O Z W R
[91] H N Q M C U T O Y R
Levels: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
$p_id
[1] 3 3 1 3 3 3 1 1 2 4 1 5 4 1 3 3 4 2 1 4 2 4 1 2 4 4 1 5 5 2 2 1 4 1 1 5 3 3 3 2 5 5 1 5 3
[46] 1 2 1 3 5 2 5 4 3 4 3 5 3 2 5 1 1 2 2 5 2 2 1 2 2 1 3 2 3 3 2 4 5 3 5 4 1 3 4 4 1 1 5 5 3
[91] 5 1 4 3 3 4 4 3 2 5
Levels: 1 2 3 4 5
attr(,"assign")
[1] 1 2

"levels"在误差中,指的不是一个因素的水平,而是模型中的随机效应。错误被触发是因为有多个随机效应(表明有两个以上的层次结构,因为第一个层次是由特殊的观察级误差引起的)。

最新更新