How to plot a Cox hazard model with splines

前端 未结 1 401
梦如初夏
梦如初夏 2021-02-06 13:30

I have a following model:

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

where is fulength is a duration of follow-up (including mo

1条回答
  •  借酒劲吻你
    2021-02-06 13:59

    This is when you get when you run the first example in ?cph of the rms-package:

    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

    Because the rms/Hmisc package combo uses lattice plots, annotation with a marginal age-density feature would need to be done with lattice-functions. On the other hand, if you want to change the response value to relative hazard you can just add a 'fun=exp' argument to the Predict call and relable the graph to get:

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

    enter image description here

    0 讨论(0)
提交回复
热议问题