Ich konnte nicht auf den oben erwähnten Artikel von Simon und Makuch zugreifen, habe aber das gefundene Thema recherchiert:
Steven M. Snapinn, Qi Jiang und Boris Iglewicz (2005) veranschaulichen die Auswirkungen einer zeitlich variierenden Kovariate mit einem erweiterten Kaplan-Meier-Schätzer , The American Statistician , 59: 4, 301-307.
In diesem Artikel wird ein zeitabhängiger Kaplan-Meier-Plot (KM) vorgeschlagen, indem die Kohorten einfach zu allen Ereigniszeiten aktualisiert werden. Es wird auch der Artikel von Simon und Makuch zitiert, in dem eine ähnliche Idee vorgeschlagen wird. Das reguläre KM erlaubt dies nicht, es erlaubt nur eine feste Aufteilung in Gruppen. Die vorgeschlagene Methode teilt die Überlebenszeit tatsächlich nach dem Kovariatenstatus auf - genau wie bei der Schätzung eines Cox-Modells mit stückweise konstanten Kovariaten. Für das Cox-Modell ist dies eine praktikable und eine Standardidee. Bei der Erstellung eines KM-Diagramms ist dies jedoch komplizierter. Lassen Sie es mich anhand eines Simulationsbeispiels veranschaulichen.
Nehmen wir an, wir haben keine Zensur, sondern ein Ereignis (z. B. Geburt), das vor dem Zeitpunkt des Todes eintreten könnte oder nicht. Nehmen wir der Einfachheit halber auch konstante Gefahren an. Wir gehen auch davon aus, dass die Geburt die Sterberisiko nicht verändert. Wir werden nun das im obigen Artikel beschriebene Verfahren befolgen. In dem Artikel wird klar angegeben, wie dies in R gemacht wird. Teilen Sie Ihre Probanden einfach zum Zeitpunkt der Geburt so auf, dass sie in Ihrer Gruppierungsvariablen konstant sind. Verwenden Sie dann die Zählprozessformulierung in der Surv
Funktion. In Code
library(survival)
library(ggplot2)
n <- 10000
data <- data.frame(id = seq(n),
preg = rexp(n, 1),
death = rexp(n, .5),
enter = 0,
per = NA,
event = 1)
data$exit <- data$death
data0 <- data
data0$exit <- with(data, pmin(preg, death))
data0$per <- 0
data0$event[with(data0, preg < death)] <- 0
data1 <- subset(data, preg < death)
data1$enter <- data1$preg
data1$per <- 1
data <- rbind(data0, data1)
data <- data[order(data$id), ]
Sfit <- survfit(Surv(time = enter, time2 = exit, event = event) ~ per, data = data)
autoplot(Sfit, censSize = 0)$plot
Ich teile es mehr oder weniger "von Hand" auf. Wir könnten auch gebrauchen survSplit
. Das Verfahren gibt mir tatsächlich eine sehr schöne Schätzung.
Wir erhalten fast identische Schätzungen für die beiden Gruppen, wie wir sollten. Aber eigentlich war meine Simulation vielleicht etwas unrealistisch. Nehmen wir an, eine Frau kann aus irgendeinem Grund nicht in den ersten beiden Zeiteinheiten gebären. Dies ist in Ihrem Beispiel zumindest sinnvoll: Zwischen zwei Schwangerschaften, die derselben Frau entsprechen, liegt eine gewisse Zeit. Eine kleine Ergänzung zum Code
data <- data.frame(id = seq(n),
preg = rexp(n, 1) + 2,
death = rexp(n, .5),
enter = 0,
preg = NA,
event = 1)
Wir erhalten die folgende Handlung:
Das gleiche würde mit Ihren Daten passieren. Sie werden zumindest für einen ersten Zeitraum keine 3. Schwangerschaft sehen, was bedeutet, dass Ihre Schätzung für diese Gruppe und diesen Zeitraum 1 beträgt. Dies ist meiner Meinung nach eine falsche Darstellung Ihrer Daten. Betrachten Sie meine Simulation. Die Gefahren sind identisch, aber für jeden Zeitpunkt ist die per1
Schätzung größer als die per0
Schätzung.
Sie könnten verschiedene Abhilfemaßnahmen für dieses Problem in Betracht ziehen. Sie schlagen vor, sie irgendwann zusammenzufügen (lassen Sie die per1
Kurve an einem bestimmten Punkt auf der per0
Kurve beginnen). Ich mag diese Idee. Wenn ich es mit den Simulationsdaten mache, erhalten wir:
In unserem speziellen Fall denke ich, dass dies Daten viel besser darstellt, aber ich kenne keine veröffentlichten Ergebnisse, die diesen Ansatz unterstützen. Heuristisch kann man das Argument verwenden, das ich in einer anderen Antwort vorgestellt habe:
KM-Diagramm mit zeitlich variierendem Koeffizienten