2016-04-05 3 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 не имеет успеха, а col 2 - нет. ". Мои столбцы являются факторами, закодированными как 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

Спасибо, это сработало –

Смежные вопросы