rcox-regressionemmeans

How to identify relevant strings in this emmeans() output


I am interested in plotting the HR from a coxph() model for a categorical-continuous interaction. Basically estimating the binary HR at multiple values of the continuous predictor and then plotting them. I can do the estimation bit, but I am interested to see if there's an easier way to identify and filter the relevant contrasts from the generation of all pairwise contrasts. The code below produces:

library(survival)
library(emmeans)

# Fit model with covariate-covariate interaction
fit <- coxph(Surv(time, status) ~ trt * karno, data = veteran)
summary(fit)

# Estimate trt HR at different values of karno
emm_df <-  emmeans(fit, ~ trt + karno, at = list(karno = seq(0, 100, by = 5)), type = "unlink") |> pairs(rev = T) |> summary(infer = T)

head(emm_df)
 contrast                  ratio     SE  df asymp.LCL asymp.UCL null z.ratio p.value
 trt2 karno0 / trt1 karno0 2.984 1.8095 Inf    0.2785    31.970    1   1.803  0.9996
 trt1 karno5 / trt1 karno0 0.885 0.0346 Inf    0.7592     1.031    1  -3.139  0.4244
 trt1 karno5 / trt2 karno0 0.296 0.1715 Inf    0.0309     2.848    1  -2.102  0.9922
 trt2 karno5 / trt1 karno0 2.438 1.4338 Inf    0.2445    24.314    1   1.516  1.0000
 trt2 karno5 / trt2 karno0 0.817 0.0263 Inf    0.7206     0.927    1  -6.285  <.0001
 trt2 karno5 / trt1 karno5 2.756 1.5413 Inf    0.3095    24.550    1   1.813  0.9996

How would I filter only those contrasts of trt2/trt1 at the same values of karno? e.g. I only want to keep: trt2 karno0 / trt1 karno0 trt2 karno5 / trt1 karno5 trt2 karno10 / trt1 karno10 etc

It would be even handier if I could convert this variable to numeric on the fly (ready for plotting) e.g. converting those categories above to 0,5,10,etc

Thanks


Solution

  • Use the | notation: emmeans(fit, ~ trt | karno, ...)