/ / Criando um loop que executará uma regressão logística em todas as variáveis ​​independentes - r, regressão logística

Criando um loop que executará uma regressão logística em todas as variáveis ​​independentes - r, regressão logística

Eu gostaria de executar a variável dependente de umregressão logística (no meu conjunto de dados é "s: dat $ admit) com todas as variáveis ​​disponíveis, cada regressão com sua própria variável independente versus variável dependente. O resultado que eu queria obter é uma lista de cada resumo de regressão. Usando o conjunto de dados enviado abaixo, deve haver 3 regressões.

Aqui está um conjunto de dados de amostra (onde admito é a variável dependente de regressão logística):

dat <- read.table(text = "
+ female  apcalc    admit       num
+ 0        0        0         7
+ 0        0        1         1
+ 0        1        0         3
+ 0        1        1         7
+ 1        0        0         5
+ 1        0        1         1
+ 1        1        0         0
+ 1        1        1         6",
+                   header = TRUE)

Eu tenho um exemplo de regressão linear simples, mas quando eu tentei mudar a função de lm para glm eu tenho "list ()" como resultado.
Aqui está o código original - para o conjunto de dados da íris em que "Sepal.Length" é a variável dependente:

sapply(names(iris)[-1],
function(x) lm.fit(cbind(1, iris[,x]), iris[,"Sepal.Length"])$coef)

Como posso criar a função certa para uma regressão logística?

Respostas:

4 para resposta № 1
dat <- read.table(text = "
female  apcalc    admit       num
0        0        0         7
0        0        1         1
0        1        0         3
0        1        1         7
1        0        0         5
1        0        1         1
1        1        0         0
1        1        1         6",
header = TRUE)

Isso talvez seja um pouco condensado demais, mas faz o trabalho. Obviamente, o conjunto de dados de amostra é muito pequeno para obter respostas ...

t(sapply(setdiff(names(dat),"admit"),
function(x) coef(glm(reformulate(x,response="admit"),
data=dat,family=binomial))))