Estou tentando executar uma regressão de Cox em um exemplo de conjunto de dados de 2.000.000 de linhas da seguinte maneira, usando apenas R. Esta é uma tradução direta de um PHREG no SAS. A amostra é representativa da estrutura do conjunto de dados original.
##
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
O principal desafio está no tempo de computação do conjunto de dados original (2m linhas). Tanto quanto eu entendo, no SAS, isso pode levar até 1 dia, ... mas pelo menos termina.
A execução do exemplo com apenas 100.000 observações leva apenas 9 segundos. Posteriormente, o tempo aumenta quase quadraticamente para cada 100.000 incrementos no número de observações.
Não encontrei nenhum meio de paralelizar a operação (por exemplo, podemos aproveitar uma máquina de 48 núcleos, se isso for possível)
Nenhum
biglmpacote da Revolution Analytics está disponível para regressão de Cox e, portanto, não posso aproveitá-los.
Existe um meio de representá-lo em termos de regressão logística (para a qual existem pacotes no Revolution) ou se existem outras alternativas para esse problema? Eu sei que eles são fundamentalmente diferentes, mas é o mais próximo que posso assumir como uma possibilidade, dadas as circunstâncias.