R语言 生存分析与cox模型的学习笔记

本文是R语言生存分析的学习笔记,介绍了生存函数、风险函数和Kaplan-Meier估计的基础概念,并通过R包`survival`和`survminer`实现K-M曲线可视化和Log-Rank检验。接着,探讨了Cox比例风险模型,解释了其基础概念和R代码实现,并展示了如何验证模型有效性。
摘要由CSDN通过智能技术生成


前言

http://www.sthda.com/ 是个好网站,Clinical Statistics: Introducing Clinical Trials, Survival Analysis, and Longitudinal Data Analysis 是本好书。


提示:

一、基础概念

Survival time and event(生存时间或事件)
常见的event:Relapse(复发),Progression,Death。
Censoring (删失)生存分析主要产生censoring或者drop out的原因是回访时间点,event没有发生,这种情况被称为right-censored,这种情况会导致censored survival times(截尾时间)偏短,我们可能会得到一个低估的数据。
Survival function and hazard function (生存函数和风险函数)用来衡量survial的表现形式和预测手段。

1、解读 Survival function

The survival function 生存函数

S ( t ) S(t) S(t)
通俗的解释,就是某病人活到时间点 t 的概率。假如病人在大写T的时间点,没有出现Event。此病人活过t时间点的概率。假定 F(t) 是病人没有活过时间点的概率,那么
S ( t ) = 1 − F ( t ) = P ( T > t ) S(t) = 1-F (t)=P (T>t) S(t)=1F(t)=P(T>t)
生存函数,换言之,就等于时间点大写T(大T应该大于等于0的随机变量)大于某个时间点小写t。
生存函数是一个分布函数,我们求一个概率密度函数。
S ( t ) = P ( T > t ) = ∫ t ∞   f ( x )   d x = 1 − F ( t ) S(t) = P (T>t)=\int_{t}^{\infty} \ f(x)\, dx= 1-F (t) S(t)=P(T>t)=t f(x)dx=1F(t)

2、解读 Hazard function

The hazard function 风险函数
h ( t ) h(t) h(t)
这是一个描述“瞬间死亡率”的函数,具体指观察对象,在生存到t 时刻的瞬时死亡率。区别于S (t) 生存函数表示超过某时间点t1 概率,风险函数描述在时间点t2 ,观察对象的死亡率。
那么,这个瞬间是什么,就是
T < t + d t ∣ T > t T<t+dt |T>t T<t+dtT>t
这表示,病人在 T > t 的基础上,也就是在时间t,EVENT没有发生。下一个瞬间t+dt马上就发生。
那么这个概率,就等于
P ( T < t + d t ∣ T > t ) = P ( t < T < t + d t ) P ( T > t ) = f ( t ) d t S ( t ) = h ( t ) d t P(T<t+dt |T>t)=\cfrac {P(t<T<t+dt )}{ P (T>t)} =\cfrac {f(t)dt }{ S(t)} =h(t) dt PT<t+dtT>t=P(T>t)Pt<T<t+dt)=Stftdt=h(t)dt

把最后两项的dt出掉,就得到了我们熟悉的。
f ( t ) S ( t ) = h ( t ) \cfrac {f(t)}{ S(t)} =h(t) Stft=h(t)
h(t) 既不是概率密度,也不是累积分布。

3、解读 Kaplan-Meier survival estimate

KM方法是用来估计S (t)的,因为各种各样的原因,实际情况很难准确计算S (t)。
S ( t ) = ∏ i : t i < = t ( 1 − d i n i ) S (t) =\prod_ {i: t_i <= t}( 1- \cfrac {d_i }{n_i} ) S(t)=i:ti<=t(1nidi)
ti 是样本中,每个数据的记录时间,可以肯定的事ti 是离散的,S(t)也必然是离散的。
di 是在ti这个时间点,死亡(event 发生)的人数。
ni 在这个时间点,取出删失后的生存人数。也就是减去删失的,上一个时间点死亡的人数。
可以预见的,在ti 与 ti+1 这个时间段中的t,S (t) 是一个固定值,因为ti是一个离散的数据,所以KM曲线会表现为台阶形。

二、用R来实现

这部分,参考http://www.sthda.com/english/wiki/survival-analysis-basics

1、K-M 曲线可视化

生存分析的R包,用survial,survminer就可以了

#install.packages(c("survival", "survminer"))
library("survival")
library("survminer")、
data <- lung
# data("lung") 已经不适合这个版本了

包里自带的lung数据集
inst: Institution code
time: Survival time in days
status: censoring status 1=censored, 2=dead
age: Age in years
sex: Male=1 Female=2
ph.ecog: ECOG performance score (0=good 5=dead)
ph.karno: Karnofsky performance score (bad=0-good=100) rated by physician
pat.karno: Karnofsky performance score as rated by patient
meal.cal: Calories consumed at meals
wt.loss: Weight loss in last six months

> head(lung)
  inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
1    3  306      2  74   1       1       90       100     1175      NA
2    3  455      2  68   1       0       90        90     1225      15
3    3 1010      1  56   1       0       90        90       NA      15
4    5  210      2  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值