2016-04-05 36 views
-1

我試圖對多個因變量'特徵'進行邏輯迴歸,'特徵'是數據框中的列,針對單個自變量'分數'。我試圖做這一行代碼或循環 - 但不能成功!對數據框的每一列進行邏輯迴歸

對於剛剛做列4到10,我已經試過:

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

我得到錯誤信息:「錯誤的eval(表達式,ENVIR,enclos): 爲 '二項' 家庭, y必須是0和1的向量 或2列矩陣,其中col 1是no,successes和col 2是no。failures。我的列是因素,編碼爲1和2,它會很樂意單獨做。所以我不確定它爲什麼不喜歡它。

我也試過:

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

但是這給了我一個係數,而不是一個用於數據幀的每一行。

任何幫助將不勝感激!

+0

它公式y先走,例如。 'myData $ Sscore〜data.matrix(myData [,4:10])'。你能提供myData嗎? –

+1

Sscore是自變量,所以他寫的是正確的。 – adaien

+0

作爲一個結果你想要一個數組與你的係數或每個配合的列表? – adaien

回答

3

查找獨立變量的所有名稱使用

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

謝謝,這一直奏效 –