Я выполняю серию анализов посредничества с использованием пакета R's mediation
.Поскольку модели очень похожи друг на друга, я написал функцию, в которой все, что могло бы измениться, это переменная-посредник, переменная результата и набор данных.Функция ниже:
library(mediation)
data("framing", package = "mediation")
covList <- list("age", "educ", "gender", "income")
meBrokenFunction <- function(MEDIATOR, OUTCOME, DATA) {
treatOnMed <- lm(DATA[[MEDIATOR]] ~ treat + age + educ + gender + income, data = DATA)
medOnOut <- glm(DATA[[OUTCOME]] ~ DATA[[MEDIATOR]] + treat + age + educ + gender + income, data = DATA, family = binomial("probit"))
expt <- mediate(treatOnMed, medOnOut, sims = 100,
treat = "treat", mediator = MEDIATOR,
covariates = covList, robustSE = TRUE)
expt
}
set.seed(2019)
test_first <- meBrokenFunction("emo", "cong_mesg", framing)
Когда я запускаю эту функцию, я получаю следующую ошибку:
Error in `[.data.frame`(y.data, , mediator) : undefined columns selected
Однако, если я запускаю код без использования написанной мной функции, все работает какпредназначен.
test_treatOnMed <- lm(emo ~ treat + age + educ + gender + income,
data = framing)
test_treatOnOut <- glm(cong_mesg ~ treat + age + educ + gender + income,
data = framing, family = binomial("probit"))
test_medOnOut <- glm(cong_mesg ~ emo + treat + age + educ + gender + income,
data = framing, family = binomial("probit"))
test_second <- mediate(test_treatOnMed, test_medOnOut, sims = 100,
treat = "treat", mediator = "emo",
covariates = covList, robustSE = TRUE)
Ошибка, по-видимому, в функции-посреднике, в частности, на mediator = MEDIATOR
, но я не понимаю, почему она не работает или если я неправильно подхожу к проблеме.