Kann mir jemand mein Cox-Modell im Klartext erklären?
Ich habe das folgende Cox-Regressionsmodell mithilfe der Funktion an alle meine Daten angepasst cph
. Meine Daten werden in einem Objekt namens gespeichert Data
. Die Variablen w
, x
und y
sind stetig; z
ist ein Faktor von zwei Ebenen. Die Zeit wird in Monaten gemessen. Bei einigen meiner Patienten fehlen Daten für die Variable z
( Anmerkung : Ich habe den nachstehenden Vorschlag von Dr. Harrell gebührend zur Kenntnis genommen, diese Werte zu unterstellen, um ein Verzerren meines Modells zu vermeiden, und werde dies in Zukunft tun).
> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)
Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event) w x y z
0 0 0 0 14
Model Tests Discrimination
Indexes
Obs 152 LR chi2 8.33 R2 0.054
Events 64 d.f. 4 g 0.437
Center 0.7261 Pr(> chi2) 0.0803 gr 1.548
Score chi2 8.07
Pr(> chi2) 0.0891
Coef S.E. Wald Z Pr(>|Z|)
w -0.0133 0.0503 -0.26 0.7914
x -0.0388 0.0351 -1.11 0.2679
y -0.0363 0.0491 -0.74 0.4600
z=1 0.3208 0.2540 1.26 0.2067
Ich habe auch versucht, die Annahme proportionaler Gefahren mit dem folgenden cox.zph
Befehl zu testen , weiß aber nicht, wie ich die Ergebnisse interpretieren soll. Das Umgehen plot()
des Befehls gibt eine Fehlermeldung aus.
cox.zph(fit, transform="km", global=TRUE)
rho chisq p
w -0.1125 1.312 0.2520
x 0.0402 0.179 0.6725
y 0.2349 4.527 0.0334
z=1 0.0906 0.512 0.4742
GLOBAL NA 5.558 0.2347
Erstes Problem
- Kann mir jemand die Ergebnisse der obigen Ausgabe in einfachem Englisch erklären? Ich habe einen medizinischen Hintergrund und keine formelle Ausbildung in Statistik.
Zweites Problem
Wie von Dr. Harrell vorgeschlagen, möchte ich mein Modell intern validieren, indem ich 100 Iterationen einer 10-fachen Kreuzvalidierung unter Verwendung von durchführe
rms
Paket (soweit ich weiß, müssten100 * 10 = 1000
verschiedene Modelle erstellt und sie dann gebeten werden, die Überlebenszeiten vorherzusagen von Patienten, die sie noch nie gesehen hatten).Ich habe versucht, die
validate
Funktion wie gezeigt zu verwenden.> v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T) > v1 index.orig training test optimism index.corrected n Dxy -0.2542 -0.2578 -0.1356 -0.1223 -0.1320 10 R2 0.0543 0.0565 0.1372 -0.0806 0.1350 10 Slope 1.0000 1.0000 0.9107 0.0893 0.9107 10 D 0.0122 0.0128 0.0404 -0.0276 0.0397 10 U -0.0033 -0.0038 0.0873 -0.0911 0.0878 10 Q 0.0155 0.0166 -0.0470 0.0636 -0.0481 10 g 0.4369 0.4424 0.6754 -0.2331 0.6700 10
Wie führt man das 100x Resampling durch? Ich denke, mein oben genannter Code führt die Kreuzvalidierung nur einmal durch.
Ich wollte dann wissen, wie gut mein Modell in der Vorhersage war. Ich habe folgendes versucht:
> c_index <- abs(v1[1,5])/2 + 0.5 > c_index [1] 0.565984
Bedeutet das, dass mein Modell nur geringfügig besser ist, als eine Münze zu werfen?
Drittes Problem
Dr. Harrell weist darauf hin, dass ich für die kovariaten Effekte eine Linearität angenommen habe und dass die Anzahl der Ereignisse in meiner Stichprobe gerade so groß ist, dass sie für ein zuverlässiges Modell passen, wenn alle kovariaten Effekte zufällig linear sind.
- Bedeutet dies, dass ich eine Art Interaktionsbegriff in mein Modell aufnehmen sollte? Wenn ja, welche Tipps?
cph
, mir die obige Ausgabe in einfachem Englisch zu erklären , oder mich auf einen Verweis verweisen würde, der dies tun würde. Dr. Harrell, vielen Dank für Ihre Hilfe!