R 叠加重叠结果
我正在使用以下代码生成数据,并在一系列变量(covar1和covar2)中估计回归模型。我还为系数创建了置信区间,并将它们合并在一起 我一直在研究这里和其他网站上的各种例子,但我似乎无法实现我想要的。我想将每个covar的结果堆叠到一个数据帧中,用它所归属的covar(即“covar1”和“covar2”)标记每个结果簇。以下是使用Lappy生成数据和结果的代码:R 叠加重叠结果,r,R,我正在使用以下代码生成数据,并在一系列变量(covar1和covar2)中估计回归模型。我还为系数创建了置信区间,并将它们合并在一起 我一直在研究这里和其他网站上的各种例子,但我似乎无法实现我想要的。我想将每个covar的结果堆叠到一个数据帧中,用它所归属的covar(即“covar1”和“covar2”)标记每个结果簇。以下是使用Lappy生成数据和结果的代码: ##creating a fake dataset (N=1000, 500 at treated, 500 at control
##creating a fake dataset (N=1000, 500 at treated, 500 at control group)
#outcome variable
outcome <- c(rnorm(500, mean = 50, sd = 10), rnorm(500, mean = 70, sd = 10))
#running variable
running.var <- seq(0, 1, by = .0001)
running.var <- sample(running.var, size = 1000, replace = T)
##Put negative values for the running variable in the control group
running.var[1:500] <- -running.var[1:500]
#treatment indicator (just a binary variable indicating treated and control groups)
treat.ind <- c(rep(0,500), rep(1,500))
#create covariates
set.seed(123)
covar1 <- c(rnorm(500, mean = 50, sd = 10), rnorm(500, mean = 50, sd = 20))
covar2 <- c(rnorm(500, mean = 10, sd = 20), rnorm(500, mean = 10, sd = 30))
data <- data.frame(cbind(outcome, running.var, treat.ind, covar1, covar2))
data$treat.ind <- as.factor(data$treat.ind)
#Bundle the covariates names together
covars <- c("covar1", "covar2")
#loop over them using a convenient feature of the "as.formula" function
models <- lapply(covars, function(x){
regres <- lm(as.formula(paste(x," ~ running.var + treat.ind",sep = "")), data = d)
ci <-confint(regres, level=0.95)
regres_ci <- cbind(summary(regres)$coefficient, ci)
})
names(models) <- covars
print(models)
##创建一个假数据集(N=1000,治疗组500,对照组500)
#结果变量
结果您可以使用do.call
were de第二个参数是列表():
我(可能)改进了您的lappy
功能。通过这种方式,您可以将估计的参数和变量保存在data.frame
中:
models <- lapply(covars, function(x){
regres <- lm(as.formula(paste(x," ~ running.var + treat.ind",sep = "")), data = data)
ci <-confint(regres, level=0.95)
regres_ci <- data.frame(covar=x,param=rownames(summary(regres)$coefficient),
summary(regres)$coefficient, ci)
})
do.call(rbind,models)
建模代码中的d
是什么?在lappy()
中的lm()
调用中,d
是否意味着是数据?此外,如果您能概述上面的预期输出(预期数据帧的维度和colname)优点,这也会有所帮助,我猜类似于models%>%purrr::map_df(broom::tidy,.id=“covar_id”)
将接近您想要的!这是简洁的,给了我我需要的。非常感谢!
models <- lapply(covars, function(x){
regres <- lm(as.formula(paste(x," ~ running.var + treat.ind",sep = "")), data = data)
ci <-confint(regres, level=0.95)
regres_ci <- data.frame(covar=x,param=rownames(summary(regres)$coefficient),
summary(regres)$coefficient, ci)
})
do.call(rbind,models)