gpt4 book ai didi

r - R中的高效循环逻辑回归

转载 作者:行者123 更新时间:2023-12-02 02:44:13 25 4
gpt4 key购买 nike

我正在尝试对大约 400k 预测变量中的每一个运行多个逻辑回归分析。我想将每次运行的输出捕获到输出表的行/列中。

我的数据分为两部分。我有一个 400000 x 189 双矩阵 (mydatamatrix),其中包含在 189 个个体 (P1) 中测量的 400000 个预测变量中每一个的观测值/数据。我还有第二个 189 x 20 数据帧 (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 测试需要一个多小时)。有没有更有效的方法来运行此分析?

最佳答案

如果使用 apply 而不是 for 循环,速度会更快:

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

关于r - R中的高效循环逻辑回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com