Изменить модерирующие переменные, используемые в линейной модели в R? (Двусторонний дисперсионный анализ) - PullRequest
0 голосов
/ 16 июня 2020

Я выполняю двусторонний дисперсионный анализ на языке R для анализа эксперимента. У меня есть длинный список модерирующих переменных, которые мне нужно протестировать для моей партнерской компании в модели (в основном числовые c, элементы непрерывной шкалы).

Это будет базовая c модель эксперимента (без модераторов):

model <-lm(data=StudyData, Outcome ~ Factor1*Factor2)
summary.lm(model) 

Мне было интересно, есть ли быстрый способ определить список модерирующих переменных, а затем «поменять местами» интересующие модерирующие переменные (возможно, используя функцию), где «Модератор» определяется ниже:

model <-lm(data=StudyData, Outcome ~ Factor1*Factor2*Moderator)
summary.lm(model) 

Так, например, функция будет запускать модель один раз с определенным модератором (например, возраст пользователя) и распечатывать / сохранять результаты, а затем использовать их снова с другим модератором. (например, уровень конфиденциальности пользователя) и распечатать / сохранить результаты и т. д.

Это было бы так, чтобы мне не приходилось вручную копировать и вставлять около 50 модерирующих переменных, которые их интересуют.

Любые подсказки были бы весьма признательны! ?.

( небольшое примечание: Я знаю, что может быть не совсем научным c использовать многие модерирующие переменные в модели без теоретических причин, почему ... но это было запрошено компания)

1 Ответ

0 голосов
/ 19 июня 2020

Если кто-то смотрит на это и хочет найти способ сделать это, я понял это:

Определите список модераторов, например:

modlist <- c("mod1", "mod2", "mod3", "mod4")

Затем для каждого x в списке мод, вставьте формулу, которую хотите использовать. Дополнительные команды печати сообщают вам, какую переменную y вы выбрали в своей модели (в качестве напоминания), а print x показывает результаты для каждой модели.

for (x in modlist) {
  lmfit <- lm(as.formula(paste("Outcome ~ Factor1*Factor2*",x)), data= StudyData)
  print("y=Outcome")
  print(x)
  print(summary.aov(lmfit))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...