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
biglm
pacote 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.