2016-10-20 6 views
1

​​3210を使用して生存曲線をプロットしました。しかし、リスクテーブルの数をプロットするのにn.risk = TRUEを使用したとき、Rは各曲線ではなく、データ全体の数を私に与えました。理由を理解できません。例えば"rms"のsurvplot():リスクの数は、各曲線ではなくグループ全体で表示されます。

# 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

、時間= 0で、リスクの数は、現在のプロットは、三つのグループの合計を13694を示している、3042であるべきです。誰が私が間違っているのか把握するのに役立つだろうか?ありがとう?

+0

それはあなたが(私たちはあなたの結果を再現することはできませんので、我々は 'dat'を持っていない)再現性の例を提供しなかったので、手助けすることは困難です。 'ff < - cph(生き残る〜strat(放射線)、data = dat、x = T、y = T)'を試してから、 'survplot'を再実行することができます。 –

答えて

1

@WeihuangWongはおそらく正しいです。私はsurvplotの最初の例を使用するときと同じ出力を得ますが、カテゴリ変数の周囲にstrat()関数を追加すると、期待される出力形式になります。私も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

関連する問題