我正在尝试仅使用 R 在样本 2,000,000 行数据集上运行 Cox 回归,如下所示。这是 SAS 中 PHREG 的直接翻译。样本代表了原始数据集的结构。
##
library(survival)
### Replace 100000 by 2,000,000
test <- data.frame(start=runif(100000,1,100), stop=runif(100000,101,300), censor=round(runif(100000,0,1)), testfactor=round(runif(100000,1,11)))
test$testfactorf <- as.factor(test$testfactor)
summ <- coxph(Surv(start,stop,censor) ~ relevel(testfactorf, 2), test)
# summary(summ)
##
user system elapsed
9.400 0.090 9.481
主要挑战在于原始数据集(2m 行)的计算时间。据我了解,在 SAS 中,这可能需要长达 1 天的时间,......但至少它完成了。
运行仅包含 100,000 个观测值的示例仅需 9 秒。此后,观察次数每增加 100,000 次,时间几乎呈二次方增长。
我还没有找到任何方法来并行化操作(例如,如果可能的话,我们可以利用 48 核机器)
Revolution Analytics 的任何软件包都
biglm
不能用于 Cox 回归,因此我无法利用这些。
有没有一种方法可以用逻辑回归(Revolution 中有包)来表示这个问题,或者这个问题是否还有其他替代方案?我知道它们在根本上是不同的,但鉴于这种情况,这是我能假设的最接近的可能性。