如何让gtsummary对Weibull模型的系数进行指数化处理?
解决survreg Weibull回归系数指数化无效问题
用survival包的survreg()拟合Weibull回归时,直接给gtsummary的tbl_regression()设置exponentiate=TRUE只会把表头改成exp(B),不会实际对beta系数和置信区间执行指数化——这是因为该参数默认适配coxph这类风险比模型,未针对survreg的参数逻辑做处理。
要实现真正的指数化,有两种可行方法:
方法1:用transform参数指定变换函数
library(survival) library(gtsummary) fit_w <- survreg(Surv(time, status) ~ sex, dist='weibull', data=lung) # 通过transform指定指数化,exponentiate负责调整表头显示 tbl_regression(fit_w, transform = exp, exponentiate = TRUE)
方法2:用modify_table_body手动修改表格数据
fit_w <- survreg(Surv(time, status) ~ sex, dist='weibull', data=lung) tbl_regression(fit_w) %>% modify_table_body( mutate, # 对系数、置信上下限统一执行指数化 across(c(estimate, conf.low, conf.high), ~exp(.x)), # 更新对应表头标签 label = "exp(B)" )
补充说明
survreg拟合的Weibull模型中,exp(beta)的意义是:协变量每增加1单位,中位生存时间的变化倍数(因模型以log(生存时间)为因变量),和coxph输出的风险比含义不同,解读时需要注意区分。
内容的提问来源于stack exchange,提问作者John Ryan
相关产品推荐
相关产品推荐

