使用循环进行回归并滤除系数

时间:2018-10-27 06:18:47

标签: r regression

我对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多个模型。任何帮助或指导如何使用循环将不胜感激。 谢谢!

0 个答案:

没有答案