J'essaie d'exécuter une régression de Cox sur un échantillon de données de 2 000 000 lignes comme suit en utilisant uniquement R. Il s'agit d'une traduction directe d'un PHREG dans SAS. L'échantillon est représentatif de la structure de l'ensemble de données d'origine.
##
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
Le principal défi réside dans le temps de calcul de l'ensemble de données d'origine (2 m de lignes). Pour autant que je sache, en SAS, cela peut prendre jusqu'à 1 jour, ... mais au moins ça se termine.
L'exécution de l'exemple avec seulement 100 000 observations ne prend que 9 secondes. Par la suite, le temps augmente presque quadratique pour chaque tranche de 100 000 incréments du nombre d'observations.
Je n'ai trouvé aucun moyen de paralléliser l'opération (par exemple, nous pouvons exploiter une machine à 48 cœurs si cela était possible)
Ni
biglm
aucun package de Revolution Analytics n'est disponible pour la régression de Cox, et je ne peux donc pas en tirer parti.
Existe-t-il un moyen de représenter cela en termes de régression logistique (pour laquelle il existe des packages dans Revolution) ou s'il existe d'autres alternatives à ce problème? Je sais qu'ils sont fondamentalement différents, mais c'est le plus proche que je puisse supposer comme une possibilité compte tenu des circonstances.