Ich versuche, eine Cox-Regression für einen Beispieldatensatz von 2.000.000 Zeilen wie folgt mit nur R auszuführen. Dies ist eine direkte Übersetzung eines PHREG in SAS. Die Stichprobe ist repräsentativ für die Struktur des Originaldatensatzes.
##
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
Die Hauptherausforderung liegt in der Rechenzeit für den Originaldatensatz (2 m Zeilen). Soweit ich weiß, kann dies in SAS bis zu einem Tag dauern, aber zumindest ist es beendet.
Das Ausführen des Beispiels mit nur 100.000 Beobachtungen dauert nur 9 Sekunden. Danach erhöht sich die Zeit fast quadratisch pro 100.000 Inkrement der Anzahl der Beobachtungen.
Ich habe keine Möglichkeit gefunden, den Betrieb zu parallelisieren (z. B. können wir eine 48-Kern-Maschine nutzen, wenn dies möglich ist).
Weder
biglm
ein Paket von Revolution Analytics ist für die Cox-Regression verfügbar, daher kann ich diese nicht nutzen.
Gibt es ein Mittel, um dies in Form einer logistischen Regression darzustellen (für die es Pakete in Revolution gibt) oder ob es andere Alternativen zu diesem Problem gibt? Ich weiß, dass sie sich grundlegend unterscheiden, aber es ist die naheliegendste, die ich unter den gegebenen Umständen als Möglichkeit annehmen kann.