中的R高效循环Logistic回归(efficient looping logistic regre

2019-07-03 21:04发布

我想请针对每个〜400K预测变量的多元回归分析。 我想每次运行的输出捕获到的输出表中的行/列。

两个部分我的数据组织。 我有一个400000 X 189双矩阵( mydatamatrix包含观测/数据为189个个体(测量的每个我的400000个预测变量) P1 )。 我也有一个第二189 20 X数据帧( mydataframe含结果变量和另一个预测变量() O1P2在该特定分析中使用的),加上其他18个变量不。

我的回归模型是O1~ P1+P2 ,其中O1是二进制的。

我得到了下面的循环工作:

创建结果输出文件

output<-data.frame(matrix(nrow=400000, ncol=4))
names(output)=c("Estimate", " Std. Error", " z value", " Pr(>|z|)")

运行回归环路i的预测和存储输出输出文件

for (i in c(1:400000)){
  result<-(glm(mydataframe$O1 ~ mydatamatrix[,i] + as.factor(mydataframe$P2),
               family=binomial))
  row.names(output)<-row.names(mydatamatrix)
  output[i,1]<-coef(summary(result))[2,1]
  output[i,2]<-coef(summary(result))[2,2]
  output[i,3]<-coef(summary(result))[2,3]
  output[i,4]<-coef(summary(result))[2,4]
}

然而,运行时间是巨大的(花了一个多小时,以输出第一20K测试)。 是否有运行此分析更有效的方式?

Answer 1:

这将是更快,如果你使用的apply ,而不是for循环:

t(apply(mydatamatrix, 2,
        function(x)
          coef(summary(glm(mydataframe$O1 ~ x + as.factor(mydataframe$P2), 
                           family=binomial)))[2, 1:4]))


文章来源: efficient looping logistic regression in R