7

我正在尝试使用 mediate 包在 R 中进行调解分析。我查看了有关如何执行此操作的文档,并通读了 R 提供的示例(即,我已经运行了“示例(中介)”)。尽管如此,我还是无法运行最简单的调解。理想情况下,我想做一个引导程序,如 Preacher & Hayes (2004)。

这是我要运行的代码:

model.m <- lm(desirdata1$zpers1 ~ desirdata1$zdesir1 + desirdata1$age)
model.y <- lm(desirdata1$zpers1 ~ desirdata1$age)
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

请注意,数据集称为desirdata,处理称为age,结果称为zpers1,中介称为“zdesir1”。当我运行它时,我收到以下错误:

Error in `[.data.frame`(m.data, , treat) : undefined columns selected

似乎声称不存在变量(特别是治疗变量)。但是,运行 names(desirdata) 显示该变量存在,并且命名正确,所有其他变量也是如此。前两个模型(model.m 和 model.y)运行良好,输出看起来应该是这样。这只是我无法运行的中介模型。据我所知,我没有打错字,而且我已经检查了一百次。

想法?

4

5 回答 5

2

当我阅读文档中的示例时,model.m中介模型的结果与主回归对象的结果不同model.y。由于您没有描述背景和什么样的数据,因此很难确定这一点,但想知道您是否打算输入:

model.m <- lm(zdesir1 ~  age, data=desirdata1)
model.y <- lm(zpers1 ~ age, , data=desirdata1 )
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

我使用formulaanddata对象对其进行转换,因为某些回归函数在刚给定向量时会分解。也更容易看到错别字。

于 2012-09-18T21:59:24.997 回答
2

你的模型不正确。model.m 应该从 IV 预测中介,model.y 应该从中介和 IV 预测 DV。

model.m <- lm(desirdata1$zdesir1 ~ desirdata1$age)
model.y <- lm(desirdata1$zpers1 ~ desirdata1$zdesir1 + desirdata1$age)
age1test <- mediate(model.m, model.y, treat="age", mediator="zdesir1", boot=TRUE, sims=50)
于 2014-06-30T15:44:49.043 回答
1

试试 MBESS 包。传教士推荐它,您可以使用调解功能。如果您想要引导程序,只需确保它显示引导程序 = TRUE。B 是引导程序的数量。

mediation(x, mediator, dv, S = NULL, N = NULL, x.location.S = NULL,
mediator.location.S = NULL, dv.location.S = NULL, mean.x = NULL,
mean.m = NULL, mean.dv = NULL, conf.level = 0.95,
bootstrap = FALSE, B = 1000, which.boot="both", save.bs.replicates=FALSE)
于 2012-09-19T05:59:34.150 回答
0

我在模拟数据中遇到了同样的问题,所以我运行了 debug(mediate) 并找到了问题所在。我相信问题出在代码的 [treat="age", mediator="zdesir1"] 部分。如果您附加数据,则不应遇到该问题。或者,您可以使用应该解决问题的 [treat="desirdata1$age", mediator="desirdata1$zdesir1"]。

于 2013-01-11T00:29:40.577 回答
0

试试这个:

model.m <- lm(zdesir1 ~ age, data=desirdata1)
model.y <- lm(zpers1 ~ age + zdesir1, data=desirdata1)
age1test <- mediate(model.m, model.y,treat="age", mediator="zdesir1",
                    boot=TRUE, sims=50)

为简单起见,中介模型 (model.m) 应该将中介作为结果。

于 2013-06-07T07:17:50.750 回答