如何将R中coxme回归结果导出为LaTeX表格?
解决方法:用
broom.mixed+kableExtra生成自定义LaTeX表格 因为stargazer不支持coxme对象,我们可以用**broom.mixed提取模型结果,再用kableExtra**构建类似stargazer风格的LaTeX表格,同时添加自定义拟合优度统计量。
步骤1:安装并加载依赖包
install.packages(c("broom.mixed", "kableExtra")) library(coxme) library(broom.mixed) library(kableExtra)
步骤2:提取固定效应结果
用tidy()函数提取模型的固定效应,并整理成表格需要的格式(包括HR值,即exp(coef)):
# 提取固定效应的结构化结果 fixed_results <- tidy(m1, effects = "fixed") # 整理列名和计算HR值 fixed_table <- fixed_results %>% mutate(HR = exp(estimate)) %>% select(term, estimate, HR, std.error, statistic, p.value) %>% rename( 变量 = term, 系数 = estimate, HR值 = HR, 标准误 = std.error, Z值 = statistic, P值 = p.value )
步骤3:准备自定义拟合优度统计量
从模型对象中提取需要的统计量(比如事件数、样本量、对数似然、AIC、BIC等),整理成表格行格式:
# 提取模型关键统计量 model_stats <- tibble( 变量 = c("事件数/样本量", "拟合对数似然", "AIC", "BIC"), 系数 = c( paste(m1$nevent, "/", m1$n), round(m1$loglik[3], 3), round(m1$aic[3], 3), round(m1$bic[3], 3) ), HR值 = "", 标准误 = "", Z值 = "", P值 = "" )
步骤4:生成LaTeX表格
将固定效应和统计量合并,用kable()生成LaTeX代码,同时添加样式和分隔线:
final_table <- fixed_table %>% bind_rows(model_stats) %>% kable( format = "latex", booktabs = TRUE, escape = FALSE, caption = "Cox混合效应模型固定效应结果" ) %>% kable_styling(latex_options = c("striped", "hold_position")) %>% add_header_above(c(" " = 1, "固定效应估计" = 5)) %>% # 在固定效应和统计量之间添加分隔线 row_spec(nrow(fixed_table), hline_after = TRUE) # 输出或保存LaTeX代码 print(final_table) # 若要保存到文件: # writeLines(final_table, "coxme_table.tex")
输出效果说明
- 表格会显示固定效应的系数、HR值、标准误、Z值和P值
- 表格下方会添加你自定义的拟合优度统计量
booktabs参数会生成符合学术规范的三线表样式,hold_position可以让表格在LaTeX中保持原位不浮动
扩展:添加随机效应统计量
如果需要在表格中加入随机效应的方差/标准差,只需从模型中提取相关值并添加到model_stats中即可:
# 提取随机效应的标准差 rand_sd <- sqrt(diag(m1$vcoef)) model_stats <- bind_rows(model_stats, tibble( 变量 = c("region/id 截距标准差", "region 截距标准差"), 系数 = c(round(rand_sd[1], 3), round(rand_sd[2], 3)), HR值 = "", 标准误 = "", Z值 = "", P值 = "" ))
内容的提问来源于stack exchange,提问作者aerw4
相关产品推荐
相关产品推荐

