我有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循环?
答案 0 :(得分:2)
如果您不想显式循环,可以使用map
包中的purrr
。这将做你想要的。以下是基于您的信息的示例代码。可能不是最好的代码,但应该让你开始。 glms存储在my_glms
列表对象中。更多信息请阅读purrr
和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
当然所有这些都可以在一行代码中完成,但这会显示步骤,您可以根据需要进行调整。