千家信息网

R语言如何实现Cox回归模型

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"R语言如何实现Cox回归模型"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"R语
千家信息网最后更新 2026年11月03日R语言如何实现Cox回归模型

这篇"R语言如何实现Cox回归模型"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"R语言如何实现Cox回归模型"文章吧。

R语言中的Cox模型分析

单变量Cox回归

summary(res.cox)res.cox <- coxph(Surv(time, status) ~ sex, data =  lung)summary(res.cox)

summary的结果:

Call:
coxph(formula = Surv(time, status) ~ sex, data = lung)
n= 228, number of events= 165
coef exp(coef) se(coef) z Pr(>|z|)
sex -0.5310 0.5880 0.1672 -3.176 0.00149 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(coef) exp(-coef) lower .95 upper .95
sex 0.588 1.701 0.4237 0.816
Concordance= 0.579 (se = 0.021 )
Likelihood ratio test= 10.63 on 1 df, p=0.001
Wald test = 10.09 on 1 df, p=0.001
Score (logrank) test = 10.33 on 1 df, p=0.001

Cox回归结果可以解释如下:

统计显着性。标记为"z"的列给出了Wald统计值。它对应于每个回归系数与其标准误差的比率(z = coef / se(coef))。wald统计评估是否beta(ββ)系数在统计上显着不同于0。从上面的输出,我们可以得出结论,变量性别具有高度统计学意义的系数。

回归系数。Cox模型结果中要注意的第二个特征是回归系数(coef)的符号。一个积极的信号意味着危险(死亡风险)较高,因此对于那些变量值较高的受试者,预后更差。变量性别编码为数字向量。1:男,2:女。Cox模型的R总结给出了第二组相对于第一组,即女性与男性的风险比(HR)。性别的β系数= -0.53表明在这些数据中,女性的死亡风险(低存活率)低于男性。

危害比例。指数系数(exp(coef)= exp(-0.53)= 0.59)也称为风险比,给出协变量的效应大小。例如,女性(性别= 2)将危害降低了0.59倍,即41%。女性与预后良好相关。

风险比的置信区间。总结结果还给出了风险比(exp(coef))的95%置信区间的上限和下限,下限95%界限= 0.4237,上限95%界限= 0.816。

全球统计学意义的模型。最后,输出为模型的总体显着性提供了三个替代测试的p值:可能性比率测试,Wald测试和得分logrank统计。这三种方法是渐近等价的。对于足够大的N,他们会得到相似的结果。对于小N来说,它们可能有所不同。似然比检验对于小样本量具有更好的表现,所以通常是优选的。

批量单变量cox分析
covariates <- c("age", "sex",  "ph.karno", "ph.ecog", "wt.loss")univ_formulas <- sapply(covariates,                        function(x) as.formula(paste('Surv(time, status)~', x)))                        univ_models <- lapply( univ_formulas, function(x){coxph(x, data = lung)})# Extract data univ_results <- lapply(univ_models,                       function(x){                           x <- summary(x)                          p.value<-signif(x$wald["pvalue"], digits=2)                          wald.test<-signif(x$wald["test"], digits=2)                          beta<-signif(x$coef[1], digits=2);#coeficient beta                          HR <-signif(x$coef[2], digits=2);#exp(beta)                          HR.confint.lower <- signif(x$conf.int[,"lower .95"], 2)                          HR.confint.upper <- signif(x$conf.int[,"upper .95"],2)                          HR <- paste0(HR, " (",                                        HR.confint.lower, "-", HR.confint.upper, ")")                          res<-c(beta, HR, wald.test, p.value)                          names(res)<-c("beta", "HR (95% CI for HR)", "wald.test",                                         "p.value")                          return(res)                          #return(exp(cbind(coef(x),confint(x))))                         })res <- t(as.data.frame(univ_results, check.names = FALSE))as.data.frame(res)
           beta HR (95% CI for HR) wald.test p.valueage       0.019            1 (1-1)       4.1   0.042sex       -0.53   0.59 (0.42-0.82)        10  0.0015ph.karno -0.016      0.98 (0.97-1)       7.9   0.005ph.ecog    0.48        1.6 (1.3-2)        18 2.7e-05wt.loss  0.0013         1 (0.99-1)      0.05    0.83

多变量Cox回归

要一次性将单变量coxph函数应用于多个协变量,请输入:

res.cox <- coxph(Surv(time, status) ~ age + sex + ph.ecog, data =  lung)summary(res.cox)Call:coxph(formula = Surv(time, status) ~ age + sex + ph.ecog, data = lung)  n= 227, number of events= 164    (1 observation deleted due to missingness)             coef exp(coef)  se(coef)      z Pr(>|z|)    age      0.011067  1.011128  0.009267  1.194 0.232416    sex     -0.552612  0.575445  0.167739 -3.294 0.000986 ***ph.ecog  0.463728  1.589991  0.113577  4.083 4.45e-05 ***---Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1        exp(coef) exp(-coef) lower .95 upper .95age        1.0111     0.9890    0.9929    1.0297sex        0.5754     1.7378    0.4142    0.7994ph.ecog    1.5900     0.6289    1.2727    1.9864Concordance= 0.637  (se = 0.025 )Likelihood ratio test= 30.5  on 3 df,   p=1e-06Wald test            = 29.93  on 3 df,   p=1e-06Score (logrank) test = 30.5  on 3 df,   p=1e-06

所有3个整体测试(可能性,Wald 和 得分)的p值都是显着的,表明该模型是显着的。这些测试评估了所有的beta(ββ)为0.在上面的例子中,检验统计是完全一致的,综合零假设被完全拒绝。

在多变量Cox分析中,协变量性别和ph.ecog仍然显着(p <0.05)。然而,协变量年龄并不显着(P = 0.17,这比0.05)。

性别p值为0.000986,危险比HR = exp(coef)= 0.58,表明患者性别和死亡风险降低之间有很强的关系。协变量的风险比可以解释为对风险的倍增效应。例如,保持其他协变量不变,女性(性别= 2)将危害降低0.58倍,即42%。我们的结论是,女性与良好的预后相关。

类似地,ph.ecog的p值是4.45e-05,危险比HR = 1.59,表明ph.ecog值与死亡风险增加之间的强关系。保持其他协变量不变,ph.ecog值越高,生存率越差。

相比之下,年龄的p值现在是p = 0.23。风险比HR = exp(coef)= 1.01,95%置信区间为0.99至1.03。由于HR的置信区间为1,这些结果表明,年龄在调整了ph值和患者性别后对HR的差异的贡献较小,并且仅趋向显着性。例如,保持其他协变量不变,额外的年龄会导致每日死亡危险因素为exp(beta)= 1.01或1%,这不是一个重要的贡献。

可视化估计的生存时间分布

已经将Cox模型拟合到数据中,可以在特定风险组的任何给定时间点可视化预测的存活比例。函数survfit()估计生存比例,默认情况下为协变量的平均值。

绘制生存曲线:

kmfit<-survfit(Surv(time, status) ~ sex, data =  lung)ggsurvplot(kmfit,              pval = TRUE, conf.int = TRUE,              risk.table = TRUE,               risk.table.col = "strata",               linetype = "strata",               surv.median.line = "hv",               ggtheme = theme_bw(),               palette = c("#E7B800", "#2E9FDF"))

以上就是关于"R语言如何实现Cox回归模型"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

变量 风险 模型 性别 统计 系数 女性 结果 内容 测试 语言 危险 区间 年龄 比例 预后 分析 良好 上限 下限 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州凡科互联网科技 伴你行互联网科技有限公司 齐家互联网科技有限公司 多迪互联网科技有限公司 互联网科技有限公司 翻译 云创客互联网科技公司 中盈科技互联网信息有限公司 新华互联网科技2019 北京大学互联网科技怎么样 阿里巴巴算科技企业还是互联网 承德科技产业互联网发展 现代互联网科技股 互联网时代科技改变生活 千方科技属于互联网企业吗 哈尔滨屹滨互联网科技有限公司 浙南科技城互联网大厦建设工程 普陀区互联网教育科技管理办法 长沙渺峰互联网科技有限公司 张家口科技产业互联网平台 互联网 科技节活动 微视频大赛 互联网科技活动banner 亿账通互联网科技 互联网科技咨询 哈尔滨新华互联网科技 云创客互联网科技公司 互联网科技人工智能实验室 互联网方面的科技前沿 互联网时代科技型公司的机会 互联网科技平台产品运营 颐高云石互联网科技
0