数据框每一列的逻辑回归

Logistic regression for every column of a data frame

我正在尝试 运行 对多个因变量 'traits' 进行逻辑回归,这些因变量是数据框中的列,针对单个自变量 'score'。我正在尝试将其作为一行代码或循环执行 - 但没有成功!

为了只做第 4 到第 10 列,我试过:

glm_output <- glm(data.matrix(myData[,4:10]) ~ myData$Sscore, na.action=na.exclude, family=binomial(link= "logit"))

我收到错误消息:“eval(expr, envir, enclos) 出错: 对于 'binomial' 系列,y 必须是 0 和 1 的向量 或 2 列矩阵,其中 col 1 为 no。成功,第 2 列没有。失败”。我的列是因子,编码为 1 和 2,它会很乐意单独处理它们。所以我不确定为什么它不喜欢它。

我也试过:

`for(i in names(myData))
{       
fit <- glm(myData[,i] ~ myData$score, data=myData, na.action=na.exclude) 
 }

然而,这给了我一个系数,而不是数据框的每一列一个系数。

如有任何帮助,我们将不胜感激!

找到所有要使用的自变量的名称

regressors<-setdiff(names(myData),"Sscore")

运行 每个自变量的回归

lapply(regressors,function(name){
glm(myData[,name] ~ myData$Sscore, na.action=na.exclude, family=binomial(link= "logit"))
})

如果您想要数组中的系数,您可以键入:

sapply(regressors,function(name){
coef(glm(myData[,name] ~ myData$Sscore, na.action=na.exclude, family=binomial(link= "logit")))
})