Seite 1 von 1
Plot von zwei cuminc (cmprsk) Objekten
Verfasst: Fr Apr 24, 2020 5:16 pm
von Janik
Hallo Leute,
ich möchte zwei cuminc (cmprsk Paket) Objekte im gleichen Plot darstellen um die Kurven direkt gegenüberzustellen. Leider schaffe ich es nicht den Plot zu erstellen. Hier ist ein minimales Beispiel:
Code: Alles auswählen
set.seed(2)
ss <- rexp(100)
gg <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc <- sample(0:2,100,replace=TRUE)
strt <- sample(1:2,100,replace=TRUE)
# Cuminc Objekt 1
xx <- cuminc(ss,cc,gg,strt)
set.seed(3)
ss <- rexp(100)
gg <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc <- sample(0:2,100,replace=TRUE)
strt <- sample(1:2,100,replace=TRUE)
# Cuminc Objekt 2
yy <- cuminc(ss,cc,gg,strt)
#Wie bekomme ich es hin beide Objekte in einem Graph zu plotten?
plot(xx+yy,lty=1,color=1:8)
Ich muss die Base Graphics verwenden, also ggplot ist keine Option. Hoffe es weiß jemand weiter. Freue mich über Antorten.

Re: Plot von zwei cuminc (cmprsk) Objekten
Verfasst: Fr Apr 24, 2020 10:22 pm
von EDi
So hier?
Code: Alles auswählen
set.seed(2)
ss <- rexp(100)
gg <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc <- sample(0:2,100,replace=TRUE)
strt <- sample(1:2,100,replace=TRUE)
# Cuminc Objekt 1
library(cmprsk)
xx <- cuminc(ss,cc,gg,strt)
set.seed(3)
ss <- rexp(100)
gg <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc <- sample(0:2,100,replace=TRUE)
strt <- sample(1:2,100,replace=TRUE)
# Cuminc Objekt 2
yy <- cuminc(ss,cc,gg,strt)
# adapted from internals of cmprsk::plot.cuminc
plot(xx)
yy$Tests <- NULL
for(i in seq_along(yy)) {
lines(yy[[i]][[1]], yy[[i]][[2]], , lty = i, col = 'red')
}
legend("topright", legend = paste('yy_', names(yy)), lty = seq_along(yy),
col = "red",, bty = "n", bg = -999999)
Ist aber sehr unübersichtlich...
Re: Plot von zwei cuminc (cmprsk) Objekten
Verfasst: Sa Apr 25, 2020 11:26 am
von Janik
Hallo EDi,
mega, das ist genau das was ich brauchte.
Dass es etwas unübersichtlich aussieht ist erstmal nicht schlimm. Ich möchte letztendlich nur eines der Events vergleichen und die Kurven trennen sich etwas besser. Sieht erstmal ganz gut aus
Könntest du mir noch helfen das gleiche nochmal mit dem normalen "survfit()" aus dem survival Package zu schaffen?
Hier wieder die Testdaten:
Code: Alles auswählen
set.seed(2)
ss1 <- rexp(100)
gg1 <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc1 <- sample(0:1,100,replace=TRUE)
surv_fit1 <- survfit(Surv(ss1,cc1)~gg1)
set.seed(3)
ss2 <- rexp(100)
gg2 <- factor(sample(1:2,100,replace=TRUE),1:2,c('a','b'))
cc2 <- sample(0:1,100,replace=TRUE)
surv_fit2 <- survfit(Surv(ss2,cc2)~gg2)
plot(surv_fit1)
#mein Versuch
lines(surv_fit2$time[1:unname(surv_fit2$strata)[1]],surv_fit2$surv[1:unname(surv_fit2$strata)[1]])
lines(surv_fit2$time[(unname(surv_fit2$strata)[1]+1):length(surv_fit2$time)],surv_fit2$surv[(unname(surv_fit2$strata)[1]+1):length(surv_fit2$surv)])
Das Problem liegt wieder darin die eigentlichen Koordinaten für die KM-Kurve aus dem survfit-Objekt herauszubekommen. Ich habe auch mal mit seq_along() durchgeguckt, aber da sind diesmal deutlich mehr Listen enthalten und keine davon sieht wirklich brauchbar aus. Mit $time und $surv kriegt man grob den Verlauf der Kurve, aber eben nicht in der typischen KM-Form mit nur Bewegung in entweder x- oder y-Richtung. Hoffe es gibt hierfür auch so eine elegante Lösung.
Danke

Re: Plot von zwei cuminc (cmprsk) Objekten
Verfasst: Sa Apr 25, 2020 11:48 am
von EDi
Dafür biete survival ne eigene Methode an und man muss das nicht selbst schreibe:
https://stat.ethz.ch/R-manual/R-patched ... rvfit.html
Re: Plot von zwei cuminc (cmprsk) Objekten
Verfasst: Sa Apr 25, 2020 4:39 pm
von Janik
Das hat funktioniert. Vielen vielen Dank.
