我正在尝试使用mediate包在R中进行调解分析。我查看了有关如何执行此操作的文档,并阅读了R提供的示例(即,我已经运行了“示例(mediate)”)。尽管如此,我还是无法进行最简单的调解。理想情况下,我想做一个引导程序,一个传教士&海耶斯(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
似乎声称变量(特别是治疗变量)不存在。但是,运行名称(desirdata)显示变量存在,并且正确命名,所有其他变量也是如此。前两个模型(model.m和model.y)运行正常,输出看起来应该如此。它只是我无法运行的中介模型。据我所知,我没有写错字,我已经检查了一百次。
思想?
答案 0 :(得分: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)
答案 1 :(得分:1)
试试MBESS包。传教士推荐它,你可以使用中介功能。如果你想要bootstrap,请确保它说bootstrap = 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)
答案 2 :(得分:0)
我遇到了模拟数据的同样问题所以我运行调试(mediate)并找到了问题所在。我认为问题在于代码的[treat =“age”,mediator =“zdesir1”]部分。如果附加数据,则不应遇到该问题。或者,您可以使用[treat =“desirdata1 $ age”,mediator =“desirdata1 $ zdesir1”]来解决问题。
答案 3 :(得分: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)应该以中介作为结果。