数据框每一列的逻辑回归
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")))
})
我正在尝试 运行 对多个因变量 '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")))
})