数据框每列的逻辑回归

时间:2016-04-05 09:23:55

标签: r glm

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

对于第4到第10栏,我尝试过:

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

我收到错误消息:&#34; eval中的错误(expr,envir,enclos):   对于&#39;二项式&#39;家庭,y必须是0和1的向量 或者是2列矩阵,其中col 1为no。成功和第二组是没有。故障&#34 ;.我的列是因子,编码为1和2,它们将很乐意单独完成。所以我不确定为什么它不喜欢它。

我也尝试过:

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

然而,这为数据帧的每一列提供了一个系数而不是一个系数。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

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

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")))
})