2017-01-31 2 views
2

Ich möchte Überlebensanalyse (Kaplan-Meier und Cox PH-Modellierung) auf Daten, die links und rechts zensiert ist. Ich schaue auf die Zeit bis zum Auftreten einer Herzrhythmusstörung (AF) in der Gegenwart gegen die Abwesenheit eines bestimmten Gens (Gen 0 oder 1). Bei einigen Versuchspersonen ist die Arrhythmie bei der Rekrutierung bereits vorhanden und sollte daher zensiert werden. Ich habe die Dokumentation des Überlebenspakets gelesen, kann aber nicht herausfinden, wie man die Linkszensierung berücksichtigt. Einige haben unten Beispieldaten zusammengestellt. Probanden 1 und 3 hatten AF zu Beginn der Studie und sollten daher zensiert werden. Subjekt 2 erlebte das Ereignis am Ende des Follow-up nicht und ist somit richtig zensiert. Die Probanden 5 und 6 erlebten beide das Ereignis (nach 8 bzw. 3 Monaten).Linke Zensierung für Überlebensdaten in R

Gene<-c(0,0,1,1,0) 
AF_at_baseline<-c(1,0,1,0, 0) 
Followup_time<-c(11,3,8,15,7) 
AF_time<-c(NA, NA, NA, 8, 3) 
AF_data<-data.frame(Gene, AF_at_baseline, Followup_time, AF_time) 
+0

Linkszensierung ist angebracht, wenn Sie eine Beobachtungsstartzeit haben und Sie nicht die genaue Ereigniszeit kennen, aber Sie haben eine obere Grenze. [Siehe z.B. das Beispiel in dieser Antwort] (http://stats.stackexchange.com/a/144098/7515). Für diese Daten wäre eine Linkszensierung nur dann sinnvoll, wenn Ihre Nullzeit (Beobachtungsbeginn) Geburt war. Sie scheinen Rekrutierung als Beobachtungsstart zu verwenden, so dass Linkszensur nicht wirklich zutrifft. – Gregor

+0

Dies scheint nicht zum Thema der SO zu gehören. Ich würde empfehlen, bei stats.stackexchange weitere Fragen zu stellen, wenn Sie mehr methodische/statistische Anleitungen benötigen. – Gregor

+0

Im Allgemeinen würden Sie die Fälle in AF einfach weglassen, wenn Sie versuchten, die Zeit bis zum Einsetzen von Personen vorherzusagen, die derzeit von der Bedingung frei sind. –

Antwort

0

Ich hatte ein ähnliches Problem und löste es wie folgt aus:

Wie es in der survivalhelp file Sie time und time2 angeben müssen angegeben ist.

Sie von denken kann links von -infinity wie gehen Daten zensiert, bis die time Sie gemessen und von rechtszensierte von bis +infinity vom time Sie gemessen (wahrscheinlich letzten Follow-up) gehen. Infinity ist am besten mit NA codiert.

Was mein Problem gelöst hat, war zwei Vektoren zu erstellen: ein Startvektor time und ein Stoppvektor time2.

Für time möchten Sie alle diese Werte, die links zensiert zu sind. Rechts zensiert Beobachtungen sind mit der Zeit der Messung ausgefüllt, ebenso wie die Ereignisse. Für die time2 ist es umgekehrt.

Ich bekomme jedoch nicht wirklich Ihre Daten. Warum würdest du Themen weiterverfolgen, wenn sie bereits die Veranstaltung hatten? Dies ist, was Sie für Thema 4 und 5 tun, indem Sie sagen, AF-Zeit war 8 und 3, aber Followup_time war 15 und 7.

versucht zu helfen, nehme ich an folgenden:

Sie haben 5 Patienten mit

AF_at_baseline<-c(1,0,1,0,0) #where 1 indicates left censoring 

Follow-up-Zeiten sind Ereigniszeiten (oder zuletzt von Follow-up für links und rechts zensiert)

also die links zensiert Daten Ihr Followup_time würde wie folgt aussehen:

Followup_time <- c(NA, 3, NA, 15, 7) 

Für die zensiert rechts Daten:

Followup_time2 <- c(11, NA, 8 ,15, 7) 
#Since you indicated that only subject 2 didn't experience the event 

Jetzt können Sie rufen Surv

Surv.Obj <- Surv(Followup_time, Followup_time2, type = 'interval2') 
Surv.Obj 
[1] 11- 3+ 8- 15 7 # with '-' indicating left censoring and '+' right censoring 

Dann Sie survfit anrufen und zeichnen Sie die Kaplan-Meier-Kurve:

km <- survfit(Surv.Obj ~ 1, conf.type = "none") 
km 
Call: survfit(formula = Surv.Obj ~ 1, conf.type = "none") 

     n events median 0.95LCL 0.95UCL 
     5  4  7  7  NA 
    enter code here 

summary(km) 
Call: survfit(formula = Surv.Obj ~ 1, conf.type = "none") 

time n.risk n.event survival std.err lower 95% CI upper 95% CI 
    7.0  4 3.00e+00  0.25 0.217  0.0458   1 
    7.5  1 4.44e-16  0.25 0.217  0.0458   1 
15.0  1 1.00e+00  0.00  NaN   NA   NA 


plot(km, conf.int = FALSE, mark.time = TRUE) 

Bis jetzt habe ich nicht herausgefunden, wie man Cox PH mit Intervalldaten macht. Siehe meine Frage here.

0

Wenn Sie sowohl zensierte als auch rechtszensierte Daten haben, können Sie davon ausgehen, dass dies ein Sonderfall von Intervallzensur ist. Dies ist der Fall, wenn Sie die Ereigniszeit nur bis zu einem bestimmten Intervall kennen. Wenn Sie die Zensur verlassen haben, ist dieses Intervall (-Inf, t), bei richtiger Zensierung ist dies (t, Inf).

Als solches können Sie mein R-Paket icenReg verwenden, um Ihre Daten zu modellieren. Für die Cox-PH-Modell, kann dies geeignet sein, wie

fit <- ic_sp(cbind(left, right) ~ covars, 
      data = myData, model = 'ph', 
      bs_samples = 500) 

wo leftright und die linken und rechten Seite des Intervalls, in dem das Ereignis für einen einzelnen aufgetreten ist. Wenn ein Ereignis unzensiert ist, setzen Sie einfach left gleich right für dieses Thema.