不使用for循环的逻辑回归

时间:2018-04-23 17:07:21

标签: r

我有202×500矩阵,其中包含500人(data1.txt)中200个变量的数据。 y是二进制数据(0 =对照,1 =大小写)

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

我想使用R对x_1到X_200(只有一个变量,没有协变量)进行逻辑回归。 y~X_ ,data = sample,family =二项式( = 1··200) 是否有任何简单的方法来运行此分析而不使用for循环?

1 个答案:

答案 0 :(得分:2)

如果您不想显式循环,可以使用map包中的purrr。这将做你想要的。以下是基于您的信息的示例代码。可能不是最好的代码,但应该让你开始。 glms存储在my_glms列表对象中。更多信息请阅读purrrbroom的插图。

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

当然所有这些都可以在一行代码中完成,但这会显示步骤,您可以根据需要进行调整。