2016-10-20 3 views
1

Je calculais des courbes de survie en utilisant survplot{rms}. Cependant, quand j'ai utilisé n.risk = TRUE pour tracer le nombre de tables de risque, R m'a donné un numéro de l'ensemble des données, pas pour chaque courbe, et je n'arrive pas à comprendre pourquoi.survplot() dans "rms": le nombre de risques est indiqué par le groupe entier, pas pour chaque courbe

# initialize survival commands in R 

survive <- Surv(dat$dx_lastcontact_death_months, dat$event) 

library(rms) 

ff <- cph(survive ~ radiation, data = dat,x = T, y = T) 

survplot(ff,radiation,conf.int = 0.95, 
     lty = c(1,1,1), col = c("red","blue","yellow"), xlab = "", ylab = "", 
     xlim = c(0,60), time.inc = 12, label.curves = F, n.risk = T) 

n.risk.shown.wrong

Par exemple, au temps = 0, le nombre de risques devrait être3042, maintenant l'intrigue montre 13694, la somme des trois groupes. Quelqu'un pourrait-il m'aider à comprendre où va mal? Merci?

+0

Il est difficile d'aider puisque vous n'avez pas fourni un exemple reproductible (nous n'avons 'dat' nous ne pouvons pas reproduire vos résultats). Vous pouvez essayer 'ff <- cph (survivre ~ strat (rayonnement), données = dat, x = T, y = T)', puis relancer 'survplot'. –

Répondre

1

@WeihuangWong est probablement correct. Je reçois le même type de sortie que vous lorsque vous utilisez le premier exemple dans survplot, mais l'ajout d'une fonction strat() autour d'une variable catégorielle aboutit au format de sortie attendu. J'ai également ajouté surv=T.

n <- 1000 
set.seed(731) 
age <- 50 + 12*rnorm(n) 
label(age) <- "Age" 
sex <- factor(sample(c('male','female'), n, TRUE)) 
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') 

f <- cph(Surv(dt,e) ~ strat(sex), x=T,y=T, surv=T) 
survplot(f, sex, label.curves = F, n.risk = T) 

enter image description here