如何用stargazer报告coxph模型的指数化系数?
解决Cox模型用Stargazer展示HR(exp(coefs))的方法
Stargazer本身没有内置的exponentiate = TRUE参数直接转换Cox模型的系数,但可以通过两种方式实现展示风险比(HR,即exp(coefs)):
方法一:手动转换系数后传入Stargazer
直接提取模型的系数、标准误和p值,手动转换为HR对应的统计量,再传给Stargazer的参数:
# 提取模型系数并转换为HR hr <- exp(coef(cox.model)) # 计算HR的标准误:原系数标准误 × HR(基于delta方法) hr_se <- exp(coef(cox.model)) * sqrt(diag(vcov(cox.model))) # 提取p值 p_vals <- summary(cox.model)$coefficients[, "Pr(>|z|)"] # 调用stargazer,传入转换后的统计量 stargazer(cox.model, coef = list(hr), se = list(hr_se), p = list(p_vals), title = "Cox比例风险模型结果(风险比HR)", type = "text") # 可根据需求改为"html"或"latex"
方法二:用broom包预处理模型结果
借助broom包的tidy()函数直接生成包含HR的模型结果,再传给Stargazer:
library(broom) # 整理模型结果,自动转换为HR tidy_cox <- tidy(cox.model, exponentiate = TRUE) # 用stargazer展示整理后的结果 stargazer(as.data.frame(tidy_cox), summary = FALSE, title = "Cox比例风险模型结果(风险比HR)", type = "text")
注意事项
- 模型中的
strata(enum)分层项会被Stargazer自动识别,无需额外处理 - 模型指定的
cluster = id聚类标准误已经包含在vcov(cox.model)中,手动转换时会自动沿用
内容的提问来源于stack exchange,提问作者Macosso
相关产品推荐
相关产品推荐

