Хорошо. Итак, это вопрос, аналогичный один, который я задавал ранее, для которого у меня до сих пор нет удовлетворительного решения.
Как вы увидите ниже, я использовал некоторые примерные данные для создания модели Cox PH, которая затем передается пользовательской функции, содержащей цикл for и функцию predictSurvProb из pec, которая в конечном итоге заполняет предварительно выделенный пустой вектор prediction.
Я пробовал использовать cmpfun от compiler. Однако улучшения производительности нет. Суждено ли мне просто жить с такой медленной скоростью обработки или есть какие-то способы ее ускорить? Я не умею кодировать на 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 часов с недели!
Подозреваю, что это все еще не самое эффективное решение, но пока придется.
Я не могу запустить ваш код как есть. Я получаю
Error in coxDesign.coxph(object) : invalid object, а затемset x=TRUE in the call to coxph