0

I have 202×500 matrix that contains data for 200 variables in 500 people(data1.txt). y is binary data(0=control, 1= case)

 case y x_1 x_2 X_3 x_4・・・・x_200
 1   1  
 2   0
 3   1
 4   0
500  0 

I would like to make logistic regression for x_1 to X_200(only one variable and no covariates) using R. y~X_, data=sample,family=binomial(=1・・200) Are there any easy way to run this analysis not using for loop?

1
  • 8
    What's wrong with a for loop? Commented Apr 23, 2018 at 17:09

1 Answer 1

2

If you do not want a explicit loop, you could use map from the purrr package. This will do what you want. Below is example code based on your info. Probably not the best code, but should get you started. The glms are stored in the my_glms list object. More info read the vignettes of purrr and broom.

library(purrr)
sample <- data.frame(Y = c(0,0,0,0,1,1,1,1),
                     x_1 = c(1,2,3,4,5,6,7,8),
                     x_2 = c(2,3,4,5,6,7,8,9))


my_glms <- map(sample[,-1], #remove Y otherwise glm also on Y
               ~ glm(Y ~ .x, data = sample, family = binomial))

#using the tidy function from broom
library(broom)
map(my_glms, tidy)

$x_1
         term   estimate std.error     statistic   p.value
1 (Intercept) -206.12214  365130.9 -0.0005645158 0.9995496
2          .x   45.80492   80643.9  0.0005679899 0.9995468

$x_2
         term   estimate std.error     statistic   p.value
1 (Intercept) -251.92706  445370.6 -0.0005656572 0.9995487
2          .x   45.80492   80643.9  0.0005679899 0.9995468

Of course all this can be done in 1 line of code but this shows the steps and you can adjust where needed.

Sign up to request clarification or add additional context in comments.

2 Comments

Thank you for your answer. I want only y~x_1,y~x_2,y~x3,・・・X200 each P values,95%CI.not y~x_1+x_2+・・・x_200
@ko0101, have you tried the code? the results in the list are Y ~ x_1, Y ~ x_2, etc. I added a bit of code to show the outcome using tidy from the broom package.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.