生存分析——cox模型及相关参数求解

一.引子

在研究某个人在时间t的生存概率时,影响其生存概率的因素有两大主要因素:

(一):时间:随着时间的推进,一个人会逐渐衰老到死亡,不论外界环境如何时间都是必须考虑的因素。

(二):主观因素:比如一个人不抽烟从常识上来说是比抽烟的人寿命要长的,再比如说从事喷漆类的工作其寿命要比普通工作的人要短,那么这些主观因素也是必须要考虑在内的。

简单的总结:随着时间的推移,死亡概率一定会不断增大,同时受到主观因素的制约,至于该主观因素是提高死亡率还是降低死亡率,每个个体情况是并不相同的。

此处可以给出Cox模型大致思想的表达式:风险率(风险指标)=关于时间的函数 × 关于主观因素的函数。

二. survival analysis 相关知识入门:

(一):生存分析:研究的是对象生存时间的分布情况,从而了解实验条件对生存时间的影响。之所以使用“生存”这个词,是因为这种分析技术常用于描述病人在接受某种治疗后,他们生存时间的分布情况,但在应用方面是绝不仅限于此的。

(二):删失(censor):所有没有观察到的或者没有观察完整的数据都叫做删失,其中删失又分为了左右删失和区间删失:

右删失:比如在对于癌症患者进行生存跟踪研究中,在观察结束时刻t某些患者依然存活,只知道的信息是这某些患者存活时间,这就叫做右删失;

左删失:在进行研究前研究对象就发生了特征事件;

区间删失:在跟踪研究过程中,研究对象比如病人中途一段时间不配合记录相关数据,这种即区间删失。

(三):生存函数S(t):,其中T是对象存活时间,意义是对象存活时间超过某一时间t的概率值。

(四):累计死亡函数F(t):,同上,意义是对象存活时间不超过某一时间t的概率值,即当观察随访到t时刻的累计死亡率。它其实是时间T分布的累计分布函数(Cumulative Distribution Function),显然有

(五):死亡概率函数f(t):根据概率论的知识,这个函数即累积分布的导数,意义是对象在某时刻t的一瞬间死亡的概率,精确的定义为:

(六):风险率:非常重要的概念,因为后续Cox模型基本假设的定义就是使用风险率来给出的,比如t时刻之前有100个存活病人,t时刻一瞬间有10个人死亡,这时候风险率为Cox模型的因变量就是风险率值,精确的定义为:,仔细看它与死亡概率函数的定义是有区别的,多了一个条件时。

三. Cox模型基本形式

此处直接给出Cox模型的基本形式:,(t与X即上述提到的影响生存的两大因素)

符号解释:

(一)::即引子中提到的主观因素,在Cox中叫做协变量,不同的研究个体有不同的协变量,从公式中可看出其对风险率是有影响的。

(二)::协参数,类似线性回归里的参数向量,它也是一个向量,向量的长度同主观因素的个数是相同的(类似线性回归特征个数和参数个数相同),我们建立模型过程大部分的精力就是放在求解协参数β上,求解用到了部分似然估计,具有一定的技巧性。

β与风险函数h(t,X)之间的关系:

①β>0,则X取值越大,h(t,X)值越大,表示患者死亡的风险越大;

②β<0,则X取值越大,h(t,X)值越小,表示患者死亡的风险越小;

③β=0,则X取值对h(t,X)没有影响。

(三)::风险基准函数,就是引子中提到的关于时间t的函数,这个函数只与时间t有关,与特征无关,并且该模型中没有给出风险基准函数的基本形式,只要满足非负连续即可,当为0时,Cox模型只与风险基准函数有关。

四. 求解

在引出似然函数之前,先说一个例子,如果有三个人,分别用三个特征向量来表示:,使三人分别在时刻处死亡;在t=1时刻,我们希望最大概率地使死亡,最大概率地存活;在t=2时,死亡,存活;在t=3时,死亡。

再用数学符号来描述一下刚才每个时刻的语言描述,t=1时:,其中就是Cox模型函数,指的是个体在t=1时刻一瞬间死亡的风险,max这个函数也就达到了"最大概率地使死亡,最大概率地存活"的目的;同理,t=2时:没有问题;但是在t=3时,已经没有存活的对象,分母为0了,于是考虑在分母处加上与分子相同的一项作为平滑项。添加平滑项后的三个时刻的概率表示为:

写出似然函数为:

下面对似然函数抽象化,假如有N个个体,第i个个体的特征向量为,时间为,可得表达式为:

得到对数偏似然函数,之所以叫偏似然函数(partial likelihood funtion)是因为我们把基准风险函数约去了,与时间无关

对β求偏导:

=

求偏导:

最后令导数为0:,求解这个关于β的函数即可,此时求出的β就是在其他参数保持不变时能够使似然函数达到最大概率值的β取值。

五. 参考文献:

[1] Cox D R . Regression Models and Life‐Tables[J]. Journal of the Royal Statal Society: Series B (Methodological), 1972, 34(2).

[2] 周艳巍. Cox模型及其应用[D]. 延边:延边大学理学院数学系, 2009.

[3] 百度百科. “Cox回归”词条[EB]/[OL]. https://baike.baidu.com/item/COX%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B/8894307?fr=aladdin

[4] 知乎 胡保强. "如何理解和使用生存分析?". https://zhuanlan.zhihu.com/p/49482538

[5] Wikipedia. "Proportional Hazards model". https://en.wikipedia.org/wiki/Proportional_hazards_model

[6] 邵斌. 关于Cox回归模型你需要知道的数学. http://blog.sciencenet.cn/blog-927304-876450.html

[7] chenz1hao,生存分析之Cox模型简述与参数求解. https://blog.csdn.net/qq_29941979/article/details/109520443

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
生存分析是一种用于研究时间至事件发生之间关系的统计方法,例如研究疾病患者的生存时间。常用的生存分析模型包括Cox模型、GBM模型、随机生存森林模型CoxBoost模型和SurvivalSVM模型。本文介绍如何使用R语言进行这些模型的Bscore计算和KM生存曲线绘制。 1. Cox模型 Cox模型是一种半参数生存分析模型,它用于分析生存时间或时间至事件的关系。Cox模型的核心概念是风险比(hazard ratio),表示两组患者的风险相对大小。 Bscore计算: ```r library(survival) data(lung) fit.cox <- coxph(Surv(time, status) ~ age + sex + ph.karno + wt.loss, data = lung) bscore.cox <- residuals(fit.cox, type = "score") ``` KM生存曲线绘制: ```r library(survminer) fit.surv <- survfit(Surv(time, status) ~ sex, data = lung) ggsurvplot(fit.surv, data = lung) ``` 2. GBM模型 GBM模型(Gradient Boosting Machine)是一种基于决策树的机器学习模型,用于预测生存时间或时间至事件的关系。GBM模型的优点是可以处理高维数据和非线性关系。 Bscore计算: ```r library(gbm) data(lung) lung$sex <- as.numeric(lung$sex) - 1 fit.gbm <- gbm(Surv(time, status) ~ age + sex + ph.karno + wt.loss, data = lung, distribution = "coxph", n.trees = 1000) bscore.gbm <- predict(fit.gbm, newdata = lung, type = "response") ``` KM生存曲线绘制: ```r library(party) fit.surv <- ctree(Surv(time, status) ~ sex, data = lung) plot(fit.surv) ``` 3. 随机生存森林模型 随机生存森林模型(Random Survival Forest)是一种基于随机森林的生存分析模型,用于预测生存时间或时间至事件的关系。随机生存森林模型的优点是可以处理高维数据和非线性关系。 Bscore计算: ```r library(randomForestSRC) data(lung) lung$sex <- as.numeric(lung$sex) - 1 fit.rsf <- rfsrc(Surv(time, status) ~ age + sex + ph.karno + wt.loss, data = lung, ntree = 1000) bscore.rsf <- predict(fit.rsf, newdata = lung, type = "risk") ``` KM生存曲线绘制: ```r library(ranger) fit.surv <- ranger(Surv(time, status) ~ sex, data = lung) plot(fit.surv) ``` 4. CoxBoost模型 CoxBoost模型是一种基于Boosting的生存分析模型,用于预测生存时间或时间至事件的关系。CoxBoost模型的优点是可以处理高维数据和非线性关系。 Bscore计算: ```r library(coxboost) data(lung) lung$sex <- as.numeric(lung$sex) - 1 fit.coxboost <- coxboost(Surv(time, status) ~ age + sex + ph.karno + wt.loss, data = lung) bscore.coxboost <- residuals(fit.coxboost, type = "score") ``` KM生存曲线绘制: ```r library(gbm) fit.surv <- gbm(Surv(time, status) ~ sex, data = lung, distribution = "coxph", n.trees = 1000) plot(fit.surv) ``` 5. SurvivalSVM模型 SurvivalSVM模型是一种基于支持向量机的生存分析模型,用于预测生存时间或时间至事件的关系。SurvivalSVM模型的优点是可以处理高维数据和非线性关系。 Bscore计算: ```r library(kernlab) data(lung) lung$sex <- as.numeric(lung$sex) - 1 fit.svm <- svm(Surv(time, status) ~ age + sex + ph.karno + wt.loss, data = lung, type = "C-bsvc", kernel = "rbfdot") bscore.svm <- predict(fit.svm, newdata = lung, type = "score") ``` KM生存曲线绘制: ```r library(survival) fit.surv <- survreg(Surv(time, status) ~ sex, data = lung) plot(fit.surv) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值