我正在尝试对多个因变量' 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)
}
然而,这为数据帧的每一列提供了一个系数而不是一个系数。
非常感谢任何帮助!
答案 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")))
})