[R] Re : Re : Nomogram with multiple interactions (package rms)

Marc Carpentier marc.carpentier at ymail.com
Thu May 20 08:42:30 CEST 2010

Thank you for your responses, but I don't think you're right about the doc...
I carefully looked at it before posting and ran the examples, looked in Vanderbilt Biostat doc, and just looked again example(nomogram) :
1st example : categorical*continous : two axes for each sex
f <- lrm(y ~ lsp(age,50)+sex*rcs(cholesterol,4)+blood.pressure)

2nd : continous*continous : one "age" axe for each specified value of cholesterol
g <- lrm(y ~ sex + rcs(age,3)*rcs(cholesterol,3))

3rd and 4th : categorical*continous : two axes for each sex (4th with fun)
f <- psm(Surv(d.time,death) ~ sex*age, dist='lognormal')

5th : categorical*continous : two axes for each sex (with fun)
g <- lrm(Y ~ age+rcs(cholesterol,4)*sex)

I'm desperately trying to represent a case of categorical*(continous+continous) :
f2 <- cph(Surv(d.time,death) ~ sex*(rcs(cholesterol,4)+blood.pressure)
The best solution I can think of is to draw one nomogram for each sex :
Assuming 'male' is the ref level of sex :
1st nomogram : one axe for rcs(cholesterol,4), one axe for blood.pressure
2nd nomogram : one axe for sex:rcs(cholesterol,4), one axe for sex:blood.pressure, both shifted because of the sex own effect.
(I badly draw it in my previous mail)
I didn't see any example of this "adjustement" of nomogram to 'male' or 'female'...

I hope I gave a clearer explanation and I'm not wrong about this unmentioned case.


----- Message d'origine ----
De : Frank E Harrell Jr <f.harrell at vanderbilt.edu>
À : Marc Carpentier <marc.carpentier at ymail.com>
Cc : r-help-request Mailing List <r-help at r-project.org>
Envoyé le : Jeu 20 mai 2010, 0h 55min 32s
Objet : Re: Re : [R] Nomogram with multiple interactions (package rms)

On 05/19/2010 04:36 PM, Marc Carpentier wrote:
> I'm sorry. I don't understand the "omit" solution, and maybe I mislead you with my explanation.
> With the data from the "f" exemple of nomogram() :
> Let's declare :
> f2<- cph(Surv(d.time,death) ~ sex*(age+blood.pressure))
> I guess the best (and maybe the only) way to represent it with a nomogram is to plot two nomograms (I couldn't find better).
> Is there a way to have :
> Nomogram1 : "male" :
> - points 1-100 ---------------
> - age ("men") ---------------
> - blood.pressure ("men") ---------------
> - linear predictor ---------------
> And nomogram2 : "female" :
> - points 1-100 ---------------
> - age ("female") ---------------
> - blood.pressure ("female") ---------------
> - linear predictor ---------------
> As I said I tried and failed (nomogram() still wants me to define
> interact=list(...)) with :
> plot(nomorgam(f2, adj.to=list(sex="male")) #and "female" for the other one
> Marc

I think the documentation tells you how to do this.  But you failed to 
look at the output from example(nomogram).  In one of the examples two 
continuous predictors have two axes each, with male and female in close 
proximity.  Or maybe I'm just missing your point.


> ----- Message d'origine ----
> De : Frank E Harrell Jr<f.harrell at vanderbilt.edu>
> À : Marc Carpentier<marc.carpentier at ymail.com>; r-help-request Mailing List<r-help at r-project.org>
> Envoyé le : Mer 19 mai 2010, 22h 28min 51s
> Objet : Re: [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

More information about the R-help mailing list