我正在嘗試對〜400k個預測變量中的每一個運行多個邏輯迴歸分析。我想將每次運行的輸出捕獲到輸出表的行/列中。R中的高效循環邏輯迴歸
我的數據分爲兩部分。我有一個400000 x 189的雙矩陣(mydatamatrix
),其中包含我在189個人(P1
)中測量的每個400000個預測變量的每個觀察值/數據。我還有第二個189 x 20數據幀(mydataframe
),其中包含結果變量和另一個預測變量(O1
和P2
)以及另外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測試花了一個多小時)。是否有更有效的方法來運行此分析?
我實際的建議很可能是一個有點失望:不這樣做的。對每個變量運行400k迴歸不太可能產生太多有用的信息。至少,我會研究一些處罰變量選擇的迴歸方法,如套索或LARS。 – joran