加速包含 coxph 函数调用的 for 循环

Accelerate for-loop containing coxph function call

好的。所以这是一个类似于我之前发布的 的问题,我仍然没有满意的解决方案。

正如您将在下面看到的,我使用一些示例数据构建了一个 Cox PH 模型,然后将该模型传递给一个自定义函数,该函数包含一个 for 循环和一个函数,predictSurvProb 来自 pec,它最终会填充一个预分配的空向量 prediction.

我尝试使用 compiler 中的 cmpfun。但是,性能没有任何改善。我注定只能忍受这种缓慢的处理速度,还是有什么方法可以加快处理速度?我不会用 C++ 编写代码,所以 Rcpp 不是我想象的一个选项。

谢谢。

require(dplyr, survival, pec)

cox_model <- coxph(Surv(time, status) ~ sex, data = lung)

surv_preds <- function(model, query) {

  prediction <- vector(mode = "numeric", length = nrow(query))
  time <- 30

  for(i in 1:nrow(query)) {
    prediction[i] <- predictSurvProb(model, newdata = query[i, ], times = query[i, "time"] + time)
  }
  prediction
}

surv_preds(cox_model, lung)

在尝试 C++ 和并行计算工作使自己筋疲力尽之后,我发现只需将因子变量转换为整数就可以显着改进我的应用程序。这一改进将处理时间从将近一周减少到大约 60 小时!

我怀疑这仍然不是最有效的解决方案,但现在必须这样做。