使用R中的中介包进行协变量调解:model.frame.default中的错误...因子具有新的级别

时间:2015-07-09 04:16:51

标签: r statistics

我正在尝试使用包含一个治疗前协变量的介体和结果变量模型来运行基于bootstrap的因果中介分析。协变量分类为16级。 mediation package的文档似乎应该能够执行此操作,但在使用它时出现此错误:

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  factor cov has new levels 13

以下是应该重现错误的示例:

set.seed(542)
treatment <- sample(c("c", "t"),226, replace=TRUE, prob=c(0.5,0.5))
med <- sample(0:6, 226, replace=TRUE)
cov <- as.factor(c(rep(1,16), rep(2,15), rep(3,11), rep(4,13), rep(5,10), rep(6,18), 
                   rep(7,11), rep(8,14), rep(9,9), rep(10,13), rep(11,12), rep(12,19),
                   rep(13,7), rep(14,11), rep(15,11), rep(16,36)))
dv <- sample(0:15, 226, replace=TRUE)
data <- data.frame(treatment, med, cov, dv)

set.seed(542)
med.fit <- lm(med ~ treatment + cov, data=data)
out.fit <- lm(dv ~ med + treatment + cov, data=data)
med.out <- mediation::mediate(med.fit, out.fit, boot=TRUE, treat="treatment", 
                              mediator="med", sims=1000, control.value = "c", treat.value = "t")
summary(med.out)

奇怪的是,如果我只使用100次模拟,似乎不会发生此错误。此外,当我创建示例并让协变量值在16个级别上均匀分布时,错误没有发生,因此我重新创建了我的协变量数据的确切分布。 (也许只有7个观察属于“13”类别?)

我正在寻找任何可以让我将这个协变量包含在我的调解员和结果模型中的解决方案,无论是使用这个包还是其他东西。想法?

如果我还有其他信息,请告诉我们!

0 个答案:

没有答案