2015-02-07 20 views
5

Ich habe folgendes Modell:Wie ein Cox Hazard-Modell mit Splines zeichnen

coxph(Surv(fulength, mortality == 1) ~ pspline(predictor)) 

wo fulength eine Dauer des Follow-up (einschließlich Mortalität), Prädiktor ist ein Prädiktor für Mortalität.

Die Ausgabe des Befehls oben ist dies:

      coef se(coef) se2 Chisq DF p  
pspline(predictor), line 0.174 0.0563 0.0562 9.52 1.00 0.002 
pspline(predictor), nonl      4.74 3.09 0.200 

Wie kann ich dieses Modell plotten, so dass ich die schöne kurvige Linie mit 95% Konfidenzbänder und Hazard Ratio auf der y-Achse zu bekommen? Was ich streben ist etwas ähnlich wie diese:

enter image description here

+0

http : //stat.ethz.ch/R-manual/R-devel/library/graphics/html/curve.html http://www.r-bloggers.com/plotting-95-confidence-bands-in-r- 2/ – efrem

+0

Ich benutze Frank Harrells rms/Hmisc-Pakete, die wahrscheinlich in der Lage sind, etwas ähnliches zu liefern, obwohl ich nichts über die rechte Hand weiß. Ich bin statistisch beleidigt, indem ich eine normale Verteilung unter den männlichen und weiblichen Ergebnissen auftrage. Ich weiß nicht, ob RMS Psplines unterstützt, weil Frank eingeschränkte kubische Splines bevorzugt, aber wenn Sie einige Daten posten, würde ich es gerne ausprobieren. –

+0

Dank BondedDust. Wie hast du diese Pakete installiert? Wenn ich versuche, zu installieren, erhalte ich Fehlermeldungen wie diese Installation des Pakets 'TH.data' hatte nicht Null Ausgangsstatus – Oposum

Antwort

4

Dies ist, wenn Sie erhalten, wenn Sie das erste Beispiel in cph des rms-Paket ausführen:

n <- 1000 
set.seed(731) 
age <- 50 + 12*rnorm(n) 
label(age) <- "Age" 
sex <- factor(sample(c('Male','Female'), n, 
       rep=TRUE, prob=c(.6, .4))) 
cens <- 15*runif(n) 
h <- .02*exp(.04*(age-50)+.8*(sex=='Female')) 
dt <- -log(runif(n))/h 
label(dt) <- 'Follow-up Time' 
e <- ifelse(dt <= cens,1,0) 
dt <- pmin(dt, cens) 
units(dt) <- "Year" 
dd <- datadist(age, sex) 
options(datadist='dd') 
S <- Surv(dt,e) 

f <- cph(S ~ rcs(age,4) + sex, x=TRUE, y=TRUE) 
cox.zph(f, "rank")    # tests of PH 
anova(f) 
plot(Predict(f, age, sex)) # plot age effect, 2 curves for 2 sexes 

enter image description here

Da die rms/Hmisc-Paketkombination Gitterdarstellungen verwendet, müsste eine Annotation mit einem marginalen Altersdichtemerkmal mit Gitterfunktionen durchgeführt werden. Auf der anderen Seite, wenn Sie den Antwortwert auf die relative Gefahr ändern möchten, können Sie nur ein ‚Spaß = exp‘ Argument, um den Anruf Predict hinzufügen und die Grafik relable zu erhalten:

png(); plot(Predict(f, age, sex, fun=exp), ylab="Relative Hazard");dev.off() 

enter image description here

+0

Ich konnte "Hmisc", aber nicht "RMS" installieren. der Fehler, den ich bekomme, ist dies: 'FEHLER: Installieren von Rd-Objekten für das Paket 'quantreg' fehlgeschlagen FEHLER: Abhängigkeit 'TH.data' ist nicht verfügbar für das Paket 'multcomp' Fehler: Abhängigkeiten 'quantreg', 'multcomp' sind nicht verfügbar für Paket 'rms'' – Oposum

+0

Klingt wie das Repository, das Sie verwenden, hat eine kaputte oder fehlende Versionen von multcomp und quantreg. Ich habe gerade versucht, die binäre Mac-Version von multcomp aus dem Berkeley Repo zu installieren und hatte keine Fehler. –

+0

Der alternative Weg gefunden, die fehlenden Pakete zu installieren. Ich überlebe alle Schritte, aber wenn ich versuche, Plot (Vorhersage (f, Prädiktor, Spaß = exp), ylab = "Relative Hazard") '' Ich bekomme den Fehler "Fehler in value.chk (at, was (Name == n), NA, np, lim): Variable Prädiktor hat keine Grenzen von Datadist definiert – Oposum