 # Reporting survival models with non-linear terms

Dear all,

First time posting here. A great discussion forum!

My question is, how do we report the results of a survival model with non-linear terms? For example, if we fit a model using `cph()` for a continuous variable using `rcs(var, df=3)`, we’ll end up with two coefficients (linear (`var`) and non-linear(`var'`)) in the summary table. Is it acceptable to report the `exp(coef)` as HR for both components in a manuscript or do not report HRs for the variable altogether? The following paper reports coefficients with their SEs (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6005015/), but do not report HR values as the variable has both linear and non-linear components. If the variable is not a key exposure variable, there is little chance of considering the plot of the relative hazard ratio using `Predict()` in a manuscript. In this case, what is the appropriate method of reporting the results in a table format?

Do we have any good guidance or paper/s to refer to in this regard?

1 Like

Very good question. We’ve had some success with multi-panel partial effect plots (e.g. `ggplot(Predict(fit, ...))` in medical journals. I think that is the best way to present nonlinear fits. If you cannot convince them to allow a small graph, then don’t resort to anti-logging individual regression coefficients when a predictor takes multiple terms. If the relationship is monotonic, consider using an inter-quartile-range hazard ratio by subtracting and then anti-logging predictions at the outer quartiles of the predictor. I go into this in the RMS book and course notes.

I think what you meant is to use the `plot(summary(cph_object, antilog = T))` function, if I’m not wrong. Thank you for making your book & course notes freely available. They are very helpful.
The dot charts that result from `plot(summary())` are good for categorical variables and for continuous variables that are linear, but are not optimal in general. For continuous variables we need to show the entire relationship. You can do that on the log relative hazard scale, the relative hazard scale, or at a specific time point using `Predict(..., time=)`.