使用 glm 对多个预测变量进行单变量逻辑回归分析
Univariate logistic regression analysis with glm on multiple predictors
所以我正在尝试对我拥有的一些数据进行单变量逻辑回归分析。
基本上我有一个包含 1 个响应变量和 50 个预测变量的数据框。
为了分析它,我只是使用 glm
函数作为:
glm(response_var~predictor_var1, data = mydata, family = binomial(link=logit))
但是,我不想为所有 50 个预测变量手动执行此操作,而且循环似乎在这里不起作用。我试过这样说:
predictors <- colnames(mydata)[-c(1)]
glm_list <- list()
i <- 1
for (predictor in predictors) {
model <- glm(response_var~predictor, data = mydata, family = binomial(link=logit))
glm_list[[i]] <- model
i <- i + 1
}
所以在这里我只是通过 colnames
.
创建一个列表,其中包含数据框中的预测变量名称
但是在这样做时我得到了错误:
variable lengths differ (found for 'predictors')
我做错了什么?
尝试 lapply 和 as.formula():
"%+%" <- function(x,y) paste(x, y, sep = "")
lapply(predictors, function(x){
glm(as.formula("response_var ~ " %+% x), data = mydata, family = binomial(link = logit))
})
您正在传递一个字符向量,首先您必须将其强制转换为公式。
希望对您有所帮助。
所以我正在尝试对我拥有的一些数据进行单变量逻辑回归分析。
基本上我有一个包含 1 个响应变量和 50 个预测变量的数据框。
为了分析它,我只是使用 glm
函数作为:
glm(response_var~predictor_var1, data = mydata, family = binomial(link=logit))
但是,我不想为所有 50 个预测变量手动执行此操作,而且循环似乎在这里不起作用。我试过这样说:
predictors <- colnames(mydata)[-c(1)]
glm_list <- list()
i <- 1
for (predictor in predictors) {
model <- glm(response_var~predictor, data = mydata, family = binomial(link=logit))
glm_list[[i]] <- model
i <- i + 1
}
所以在这里我只是通过 colnames
.
但是在这样做时我得到了错误:
variable lengths differ (found for 'predictors')
我做错了什么?
尝试 lapply 和 as.formula():
"%+%" <- function(x,y) paste(x, y, sep = "")
lapply(predictors, function(x){
glm(as.formula("response_var ~ " %+% x), data = mydata, family = binomial(link = logit))
})
您正在传递一个字符向量,首先您必须将其强制转换为公式。
希望对您有所帮助。