Я довольно новичок в R. У меня есть набор данных с такими переменными, как y, x, c1, c2, m1, m2, m3 .... где,
**y is the key dependent variable
x is the key predictor
c1,c2,c3 are control variables and,
m1,m2,m3..mn are potential moderators( actually there are almost 150 variables in this category).
ID is the cluster
Я хочу создать модели линейной регрессии со случайным перехватом, используя lme4. Ниже приведен образец моих данных и моделей:
y <- rnorm(400, mean=10, sd=3)
x <- rnorm(400, mean=20, sd=2.1)
c1 <- rnorm(400, mean=2, sd=3)
c2 <- rnorm(400, mean=8, sd=3.1)
m1 <- rnorm(400, mean=12, sd=4.5)
m2 <- rnorm(400, mean=25, sd=4)
m3 <- rnorm(400, mean=30, sd=2)
m4 <- rnorm(400, mean=15, sd=3)
m5 <- rnorm(400, mean=12, sd=2.3)
ID <- sample( LETTERS[1:26], 400, replace=TRUE)
data <-as.data.frame(cbind(y,x,c1,c2,m1,m2,m3,m4,m5,ID))
data <- within(data, {
y <- as.numeric(as.character(y))
x <- as.numeric(as.character(x))
c1 <- as.numeric(as.character(c1))
c2 <- as.numeric(as.character(c2))
m1 <- as.numeric(as.character(m1))
m2 <- as.numeric(as.character(m2))
m3 <- as.numeric(as.character(m3))
m4 <- as.numeric(as.character(m4))
m5 <- as.numeric(as.character(m5))
})
m1 <- lmer( y ~ c1 + c2 + x * m1 + (1|ID), data= data)
m2 <- lmer( y ~ c1 + c2 + x * m2 + (1|ID), data= data)
m3 <- lmer( y ~ c1 + c2 + x * m3 + (1|ID), data= data)
m4 <- lmer( y ~ c1 + c2 + x * m4 + (1|ID), data= data)
m5 <- lmer( y ~ c1 + c2 + x * m5 + (1|ID), data= data)
##Expected results (as table or data frame, numbers are only for reference)
Model Var Estimates P-value
m1 x:m1 0.34 0.05
m2 x:m2 0.45 0.001
m4 x:m3 -0.45 0.968
m4 x:m4 -0.45 0.218
m5 x:m5 0.12 0.0001
Я хочу создать таблицу, в которой есть коэффициенты только взаимодействий и значение p взаимодействия всех моделей.
Мне интересно, как сделать это с помощью цикла, потому что у меня есть более 50 моделей, которые мне нужно запустить. Любая помощь или указания о том, как сделать с помощью цикла будет принята с благодарностью.
Спасибо!