Ich versuche eine Überlebensanalyse mithilfe von Entscheidungsbäumen in Rpart durchzuführen, ähnlich wie hier: Using a survival tree from the 'rpart' package in R to predict new observations. Um das Entscheidungsbaum-Überlebensmodell mit anderen Modellen, wie der Cox-Regression, zu vergleichen, möchte ich eine Kreuzvalidierung verwenden, um Dxy zu erhalten und den C-Index zu vergleichen. Wenn ich versuche, validate.rpart mit einer Rpart-Anpassung zu verwenden, die ein Surv-Objekt enthält, erhalte ich einen Fehler. Leihen Sie das Beispiel aus der vorherige Frage:Ich versuche eine Kreuzvalidierung eines Überlebensbaums durchzuführen.
library(rms)
# Make Data:
set.seed(4)
dat = data.frame(X1 = sample(x = c(1,2,3,4,5), size = 100, replace=T))
dat$t = rexp(100, rate=dat$X1)
dat$t = dat$t/max(dat$t)
dat$e = rbinom(n = 100, size = 1, prob = 1-dat$t)
# Survival Fit:
sfit = survfit(Surv(t, event = e) ~ 1, data=dat)
plot(sfit)
# Tree Fit:
require(rpart)
tfit = rpart(formula = Surv(t, event = e) ~ X1 , data = dat, model=TRUE, control=rpart.control(minsplit=30, cp=0.01))
plot(tfit); text(tfit)
validate(tfit)
die Fehler:
Error in unclass(x)[i, , drop = FALSE] :
(subscript) logical subscript too long
Jede Idee für eine Abhilfe für dieses Problem? Gibt es einen anderen Weg, um den C-Index von einem R-Überlebensmodell zu erhalten?
Vielen Dank für das Code-Update, es scheint mir jetzt ein vernünftiges Ergebnis, aber was meinst du mit "das wird nicht sehr helfen, weil validate.rpart eine Methode ist"? Es schien mir wirklich sehr zu helfen! Wenn Sie sich auf die Daten in meinem Beispiel beziehen, habe ich tatsächlich 250.000 Themen in meinen Produktionsdaten. –
Entschuldigung, ich habe das nicht klar geschrieben. Was ich damit meinte, ist, dass wenn Sie einfach source() in der neuen Version der Funktion verwenden, ohne das Paket neu zu erstellen oder viele weitere Code-Dateien im Paket zu verwenden, würde das System die neue Version von "validate.rpart" ignorieren. –
Wenn Sie nur einen zusätzlichen Befehl hinzufügen: 'environment (validate.rpart) <- environment (cph)' nach 'source()' -den neuen Code von RMS Version 4.5-1, dann ist alles in Ordnung. –