0
$\begingroup$

This may be a trivial question, but I couldn't find an explanation anywhere. I am working on a Cox model (in R, using the rms package) to predict survival. One of my variables is the body-mass-index (BMI). A few of the subjects in my data set have a very high BMI.

I'd like to determine if there is a maximum value so that higher values do not have added predictive value. I would then truncate the variable at this maximum value, which would make the nomogram generated from the model easier to use. Does this make sense and how would I do that?

$\endgroup$
1
$\begingroup$

Truncation of a continuous variable is almost never a good idea. A log transform of BMI might accomplish what you want, bringing the very high BMI values closer to the others in that log scale. Another possibility would be to model BMI as a spline, using the rcs() function available in the rms package.

As an additional note, Frank Harrell (who developed rms) would probably recommend against using BMI on its own (he has argued that point on this site); you might be better off using the weight and height values used to calculate BMI separately. If you do a log transform of the weight and height predictors, you could later test a contrast of those predictors that is equivalent to log(BMI).

$\endgroup$
1
$\begingroup$

I would instead try the linear spline or other nonlinear method. I'm assuming you have linear inputs, so by putting a linear spline you will allow for different slopes for different ranges of values of the BMI variable.

$\endgroup$
1
$\begingroup$

as EdM suggests, there are rarely any good reasons to truncate a variable because you suspect its effect diminishes after a certain value. As EdM also suggests, you could fit the model using splines and then plot the hazard function with the built in plot.Predict and then see the relationship betwen BMI and HR directly.

typical coding required:

#define variable distributions
distr <- datadist(data)
options(datadist='distr')

#fit Cox PH with BMI expanded to spline with 4 knots
fit <- cph(outcome ~ rcs(BMI, 4) + age + sex, data=data)

#Visualize the HR in relation to various BMI levels
plot(Predict(fit, BMI))
$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.