You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免summary.coxph截断Cox比例风险模型的系数名称?

解决Cox模型惩罚样条系数行名截断问题

问题背景

使用survival包的coxph拟合带惩罚样条(pspline)的Cox比例风险模型后,提取summary$coefficients时,长行名称会被自动截断,例如pspline(covariate2, df = 2)会显示为pspline(covariate2, df = ,无法完整识别参数信息。

解决方案

以下是几种可行的解决方法:

方法1:调整全局打印宽度限制

R默认的打印宽度会截断过长的行名,通过修改全局width参数可以放宽限制:

# 设置足够大的打印宽度(根据需要调整数值)
options(width = 120)
# 重新打印系数矩阵
summary$coefficients

方法2:手动替换为完整行名

从模型对象中提取完整的项标签,替换截断的行名:

# 获取模型的项标签(包含完整参数设置)
term_labels <- attr(terms(mod_survival), "term.labels")
# 构造完整的行名(每个pspline项对应linear和nonlin两个部分)
full_row_names <- c(
  paste0(term_labels[1], ", linear"),
  paste0(term_labels[1], ", nonlin"),
  paste0(term_labels[2], ", linear"),
  paste0(term_labels[2], ", nonlin")
)
# 为系数矩阵赋值完整行名
rownames(summary$coefficients) <- full_row_names
# 打印完整结果
summary$coefficients

方法3:使用格式化输出工具(适合Rmarkdown场景)

如果在Rmarkdown中输出,可以用knitr::kable强制显示完整行名:

library(knitr)
# 格式化输出系数矩阵,自动适配行名长度
kable(summary$coefficients, row.names = TRUE)

验证结果

应用上述方法后,系数矩阵会完整显示行名:

coef se(coef)      se2        Chisq         DF         p
pspline(cov1), linear                   0.01186380 4.180302 4.042494 8.054382e-06  1.0000000 0.9977356
pspline(cov1), nonlin                           NA       NA       NA 1.090602e-01  6.4931508 0.9999908
pspline(covariate2, df = 2), linear    -0.04858999 8.095739 7.212111 3.602306e-05  1.0000000 0.9952112
pspline(covariate2, df = 2), nonlin             NA       NA       NA 2.154301e-10 -0.2063786 0.9964457

内容的提问来源于stack exchange,提问作者Andrew James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:24:40