Marc Carpentier
2010-May-19 20:17 UTC
[R] Nomogram with multiple interactions (package rms)
Dear list, I'm facing the following problem : A cox model with my sex variable interacting with several continuous variables : cph(S~sex*(x1+x2+x3)) And I'd like to make a nomogram. I know it's a bit tricky and one mights argue that nomogram is not a good a choice... I could use the parameter interact=list(sex=("male","female"),x1=c(a,b,c))... but with rcs or pol transformations of x1, x2 and x3, the choice of the categorization (a,b,c,...) is arbitrary and the nomogram not so useful... Considering that sex is the problem, I thought I could draw two nomograms, one for each sex... based on one model. These would be great. Do you think it's possible ? Taking the exemple of the help of nomogram() (package "rms") : f <- psm(Surv(d.time,death) ~ sex*age, dist=if(.R.)'lognormal' else 'gaussian') Let's add the previously defined blood.pressure effect with an interaction with sex too (with cph) : f2 <- cph(Surv(d.time,death) ~ sex*(age+blood.pressure)) I thought of the parameter adt.to : plot(nomorgam(f2, adj.to=list(sex="male")) #and "female" for the other one But nomogram() still wants me to define interact=list(...) Thanks for any advice you might have (with adj.to or any alternative...) Marc Carpentier
Frank E Harrell Jr
2010-May-19 20:28 UTC
[R] Nomogram with multiple interactions (package rms)
On 05/19/2010 03:17 PM, Marc Carpentier wrote:> Dear list, I'm facing the following problem : A cox model with my sex > variable interacting with several continuous variables : > cph(S~sex*(x1+x2+x3)) And I'd like to make a nomogram. I know it's a > bit tricky and one mights argue that nomogram is not a good a > choice... I could use the parameter > interact=list(sex=("male","female"),x1=c(a,b,c))... but with rcs or > pol transformations of x1, x2 and x3, the choice of the > categorization (a,b,c,...) is arbitrary and the nomogram not so > useful... Considering that sex is the problem, I thought I could draw > two nomograms, one for each sex... based on one model. These would be > great. Do you think it's possible ?Yes, you can specify constant predictors not to draw with the omit= argument. But try first to draw everything. Shouldn't you just get 2 axes each for x1 x2 x3?> > Taking the exemple of the help of nomogram() (package "rms") : f<- > psm(Surv(d.time,death) ~ sex*age, dist=if(.R.)'lognormal' else > 'gaussian')Drop the if(.R.) which was just corrected in the documentation. Use dist='lognormal' Frank> > Let's add the previously defined blood.pressure effect with an > interaction with sex too (with cph) : f2<- cph(Surv(d.time,death) ~ > sex*(age+blood.pressure)) > > I thought of the parameter adt.to : plot(nomorgam(f2, > adj.to=list(sex="male")) #and "female" for the other one > > But nomogram() still wants me to define interact=list(...) Thanks for > any advice you might have (with adj.to or any alternative...) > > Marc Carpentier >-- Frank E Harrell Jr Professor and Chairman School of Medicine Department of Biostatistics Vanderbilt University