最近布置的任务里需要用到Cox模型去评估企业风险趋势分析并建模,讨论Cox模型在企业风险量化建模过程中有实际的意义;从知网关键词检索结果可以看出Cox模型主要集中使用在医学信息工程、金融统计学领域,比如:研究多对基因对癌症发病的影响、分析癌症病人存活时间、银行客户资产风险评估等;Cox模型对企业风险趋势预测是一个相对比较新的idea。

1、引子

先抛开定义、公式,直观地来看,假设你要研究某个对象(假如就是一个人)在时间t的生存概率,影响他生存概率的因素可以总结为两大类:

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

b:主观因素:具象地来说一个不抽烟的人从常识上来看会比抽烟的人寿命要长,一个长期生活在核辐射下的人必定会比普通人有着更短的寿命,所以,这些主观的因素、特征也是研究一个人生存(死亡)概率一定要考虑的。

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

这两大因素我认为正是Cox基本模型的直观思想,大胆地写出这种思想下的表达式:风险率=关于时间的函数 x 关于主观因素的函数,至于每个部分的具体表达形式,之后Cox模型中会给出。

2、生存分析一些基础知识

1、生存分析:研究的是对象生存时间的分布情况,从而了解实验条件对生存时间的影响。这里的“生存时间”并不狭义地被认为是生物体的生存时间,也可以分析企业从建立到破产的经历、一件产品从出厂到发生故障的过程,之所以使用“生存”这个词,是因为这种分析技术常用于描述病人在接受某种治疗后,他们生存时间的分布情况,但在应用方面是绝不仅限于此的。

2、删失:这个词是censor音译过来的,所有没有观察到的或者没有观察完整的数据都叫做删失,其中删失又分为了左右删失和区间删失:

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

左删失:在进行研究前研究对象就发生了特征事件,这其实对于企业风险评估并没有什么帮助,因为如果在研究该企业前该企业就已经破产/倒闭了,那就没有任何研究的必要了,所以对左删失我也没有作过多的了解;

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

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

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

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

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

3、Cox模型基本形式

有了前面的铺垫,直接给出Cox模型的基本形式:  (t与X就是之前提到的影响寿命的两大因素)

符号解释:

1、:是引子中提到的主观因素,在Cox模型中叫做协变量,不同的研究个体有不同的协变量,从公式中可以看出他对于风险率是有影响的。

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

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

Cox模型的前提条件(判断能否用来预测企业风险趋势的关键):

1、比例风险假定:各主观因素的作用不随时间的变化而变化;因此,该模型又叫做比例风险率模型(Proportional Hazard Model)。换句话说,如果某个因素对于企业发展的影响力在第一年、第二年、第三年等随着时间变化也在变化时,那么Cox模型就不可用了,在医学上的意义来说,如果在观察初对象A的死亡风险是对象B死亡风险的常数C倍,那么在之后任意一个时间点:A与B的死亡风险之比都应该是常数C。

2、对数线性假定:模型中的协变量与对数风险比呈现线性关系,将原模型简单变形即可得: 

其他关于Cox的一些总结:

1、Cox比例风险回归模型其实非常类似于Logistic回归的,可以说Cox模型是加入了时间的Logistic回归,Logistic回归是删去了时间的Cox回归模型。

2、Cox是一个半参数模型,其中前半部分(与时间有关的函数)是完全没有给定的是属于非参部分,后半部分(关于主观因素的函数)是给定的线性函数,是属于参数部分,两者综合叫做半参数模型。

4、β 求解

之所以专门写参数β的求解是因为原论文在这里有一些小技巧在,直接看的话不容易看明白。

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

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

写出似然函数为:

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

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

对β求偏导:

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

5、更多思考

从似然函数中可以看出来Cox模型并没有考虑在同一时刻多个对象死亡的情况,假设都是在每个独立的时间死亡,这种情况其实主要在理论上会遇到,在现实中,可以通过提高时间精度来解决:例如如果按照天数来计算时间的话可以增加精度到小时,以此类推。如果不增加时间精度,也可以通过"Exact Method" 精确模型,这种方法原理是把在同一时刻死亡的对象做排列组合,给他们"强行排序",把所有可能的排序加到似然函数中,但是在数据样本相当大的时候作全排列时间复杂度相当高,这时候就只有用专业处理 tied times 的方法比如:Breslow、Efron;这些方法我也还没有研究过,以后如果需要用再说。

6、参考资料

[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

生存分析之Cox模型简述与参数求解相关推荐

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

    一.引子 在研究某个人在时间t的生存概率时,影响其生存概率的因素有两大主要因素: (一):时间:随着时间的推进,一个人会逐渐衰老到死亡,不论外界环境如何时间都是必须考虑的因素. (二):主观因素:比如 ...

  2. R语言生存分析之COX比例风险模型构建及列线图(nomogram)、校准曲线(calibration curve)绘制示例

    R语言生存分析之COX比例风险模型构建及列线图(nomogram).校准曲线(calibration curve)绘制示例 列线图(Alignment Diagram),又称诺莫图(Nomogram图 ...

  3. SPSS教程之生存分析的Cox回归模型(比例风险模型)

    最近有同学问师兄,"最近我要做生存分析,可是我不太会,也不太懂,师兄能不能教教我",好吧,今天开一贴,讲讲这个.有同样的问题的同学可以一起来看看,毕竟在临床.科研上,这方面知识还是 ...

  4. R语言生存分析:Cox回归

    上次介绍了生存分析中的寿命表.K-M曲线.logrank检验.最佳切点的寻找等,本次主要介绍Cox回归. 本推文不涉及理论,只有实操,想要了解生存分析的理论的请自行学习. Cox回归 使用surviv ...

  5. 【Bioinfo Blog 012】【R Code 010】——生存分析(Kaplan-Meier Cox)

    目录 一.生存分析(Survival Analysis)基本概念 1.1 随访研究 1.2 起始事件与终点事件 1.3 生存时间 1.4 生存函数(Survival Function) 1.5 常用指 ...

  6. Surv单因素批量生存分析使用 cox批量生存回归分析有点像deseq2的design差异分析designG:\r\2021_1203_geo\GEO-master\GSE11121_survival

    批量生存分析 input codes output input: 表达矩阵 和 meta 信息 表达矩阵 meta信息 phe = as.data.frame(apply(phe,2,as.numer ...

  7. R语言如何在生存分析与Cox回归中计算IDI,NRI指标

    在诊断试验中,我们比较两个模型的优劣时,除了可以比较两个模型roc外,还可以用定量的指标来比较一个模型比另外一个模型诊断准确率改进的程度.我们围绕生存分析技术进行一些咨询,帮助解决独特的业务问题.   ...

  8. python数据分析实战:生存分析与电信用户流失预测

    文章目录 1.背景 1.1 生存分析.KM曲线及Cox回归 1.2 案例背景 2.AIC向前逐步回归法进行特征选择 3.Cox模型搭建 3.1 特征重要性分析 3.2 模型校准 3.3 对个体进行预测 ...

  9. 一篇项目走进生存分析(Survival Analysis)的世界【Python版

    转载自AI Studio 项目链接https://aistudio.baidu.com/aistudio/projectdetail/3410026 开篇语 生存分析在医学研究中占有很大的比例,而且进 ...

  10. 重复事件(表现形态:活跃、留存、复购)建模(生存分析)的案例学习笔记

    医学中,重复事件较多,那么放在一些大场景中就会有,用户重复点击/浏览(留存),重复购买(复购)这些场景. 最近也看到一些类似的case就简单整理一下: 笔者之前生存分析的文章: 生存分析--泊松回归( ...

最新文章

  1. php.ini Xdebug配置
  2. Android基础教程pdf
  3. android里面画布快照,自定义 View - Canvas - 画布操作和快照
  4. 前端翻译:Activating Browser Modes with Doctype
  5. c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球
  6. K8s CKA认证学习全套笔记
  7. Pandas系列(十一)Pandas中concat合并两个dataframe
  8. [Postman]响应(7)
  9. 【LBS】高德地图、百度地图的经纬度科普|MySQL和编程语言是如何计算两个坐标之间的距离?
  10. 用户故事与敏捷方法笔记---Scrum与用户故事
  11. 前端通过localstorage统计浏览量
  12. 凯撒加密的python语言程序_python语言编程实现凯撒密码、凯撒加解密算法、
  13. Quartus II 安装
  14. 大学学嵌入式技术的优势
  15. 关于多对多关系(即E-R图中m:n)中的界面展示优化
  16. 浪漫的c语言表白代码1
  17. 【基于QMediaPlayer的简易视频播放器】— 3、结合QSlider实现播放进度控制和音量控制
  18. Windows下Idea,AndroidStudio的字体美化
  19. stm32f103vet6利用fsmc控制LIL9341液晶屏
  20. mpvue的使用(一)必要的开发环境

热门文章

  1. 关于计算机职业发展方向,计算机专业的职业发展方向有哪些
  2. 嵌入式三大职业发展方向
  3. 老人与老浏览器-李开复与成熟度最高的VRML浏览器SGI Cosmo
  4. 2018校招笔试真题汇总 精
  5. 计算机切换用户快捷键,电脑操作中如何快速切换用户?
  6. ubuntu22.04LTS 外接hdmi没有声音
  7. 定能解决No instances available for provider
  8. 有道云笔记怎么保存html,有道云笔记怎么保存网页?有道云笔记保存网页技巧...
  9. 基于python的第三方库Pyautogui实现程序自动控制鼠标与键盘
  10. 提示非标准语法;请使用 ““ 来创建指向成员的指针