Estoy tratando de ejecutar una regresión de Cox en un conjunto de datos de 2,000,000 de filas de la siguiente manera usando solo R. Esta es una traducción directa de un PHREG en SAS. La muestra es representativa de la estructura del conjunto de datos 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
El desafío principal está en el tiempo de cálculo para el conjunto de datos original (filas de 2 m). Por lo que entiendo, en SAS esto podría tomar hasta 1 día, ... pero al menos termina.
Ejecutar el ejemplo con solo 100,000 observaciones toma solo 9 segundos. A partir de entonces, el tiempo aumenta casi cuadráticamente por cada incremento de 100,000 en el número de observaciones.
No he encontrado ningún medio para paralelizar la operación (por ejemplo, podemos aprovechar una máquina de 48 núcleos si esto fuera posible)
Ni
biglm
ni ningún paquete de Revolution Analytics está disponible para la regresión de Cox, por lo que no puedo aprovecharlos.
¿Hay algún medio para representar esto en términos de una regresión logística (para la cual hay paquetes en Revolution) o si hay otras alternativas a este problema? Sé que son fundamentalmente diferentes, pero es lo más cercano que puedo asumir como una posibilidad dadas las circunstancias.