生存分析 订阅
《生存分析》是2004年中国人民大学出版社出版的图书,作者是彭非。该书讲述了近来生存分析一些主面的最新研究进展情况,如对截尾声和双删失数据以及对任意删失和截尾数据的生存函数估计;对单调平均剩余寿命的估计方法等诸多方面内容。 展开全文
《生存分析》是2004年中国人民大学出版社出版的图书,作者是彭非。该书讲述了近来生存分析一些主面的最新研究进展情况,如对截尾声和双删失数据以及对任意删失和截尾数据的生存函数估计;对单调平均剩余寿命的估计方法等诸多方面内容。
信息
作    者
彭非
定    价
38.00元
装    帧
平装
书    名
生存分析
出版时间
2004年1月1日
开    本
16
出版社
中国人民大学出版社
ISBN
9787300059563
生存分析内容简介
生存分析是研究生存现象和响应时间数据及其统计规律的一门学科。该学科在生物学、医学、保险学、可靠性工程学、人口学、社会学、经济学等方面都有重要应用。目前这方面的教材,国内还不太多,而且大多局限于生存分析的某一特定应用领域。在现有的几本教科书中,或者偏重于工程学,或者偏重于生物学和医学。上述教材的共同特点是通过生存分析的方法体系来说明基本应用范围,而不是围绕生存分析的问题类型及特点来寻找理论方法。本书的主要内容包括:第一,介绍生存数据的类型及特征、常用的生存分布统计模型以及表征生存变量特征的有关函数及性质;第二,针对不同数据类型、分组数据及含有协变量的变量,介绍其生存分布,或相关参数的估计和检验问题所要使用到的方法;第三,重点介绍三种估计的非正规方法以及对不同估计的诊断、比较与改进方法;第四,介绍多变量生存分布的估计和检验问题及与此有关的一些方法。在编著本书时,我们希望达到如下四方面目的:针对性、实用性、通俗性、广泛性。 本教材可以作为在生物学、医学、保险精算学、可靠性工程学、人口学、社会学、经济学等学科领域需要使用生存分析方法的教学参考书,也可以作为相关专业的研究生教材。 [1] 
收起全文
精华内容
下载资源
问答
  • 生存分析

    千次阅读 2019-09-17 20:30:43
    1 KM法计算生存率——非参数模型2 log-rank秩检验比较不同组的生存率2.1 输入数据2.2 建立假设2.3 log-rank秩精确性检验 1 KM法计算生存率——非参数模型 乘积极限法适用于离散数据,它用于建立时刻 ttt 上的生存...

    1 KM法计算生存率——非参数模型

    乘积极限法适用于离散数据,它用于建立时刻 t t t 上的生存函数,根据 t t t 时刻之前的所有时期的生存概率的乘积,来估计时刻 t t t 的生存函数 S ( t ) S(t) S(t)和它的标准误 S E ( S ( t ) ) SE(S(t)) SE(S(t))
    生存概率 P :观察对象活过某个时期的概率。
    P = 1 − d / n P =1-d/n P=1d/n

    • d d d :期内死亡人数
    • n n n:期初观察人数

    生存率 S ( t i ) \bf{S(t_i)} S(ti):观察对象从起始时刻 t 0 t_0 t0 t i t_i ti 时刻活过多个时期的概率。
    S ^ ( t i ) = ∏ j = 1 i p j , j = 1 , 2 , ⋯   , i \hat{S}(t_i)=\prod_{j=1}^ip_j,\quad j=1,2,\cdots,i S^(ti)=j=1ipj,j=1,2,,i
    生存率标准误:
    S E ( S ^ ( t i ) ) = S ^ ( t i ) ∑ j = 1 i d j n j ( n j − d j ) , j = 1 , 2 , ⋯   , i SE(\hat{S}(t_i))=\hat{S}(t_i)\sqrt{\sum_{j=1}^i\frac{d_j}{n_j(n_j-d_j)}}\quad ,\quad j=1,2,\cdots,i SE(S^(ti))=S^(ti)j=1inj(njdj)dj ,j=1,2,,i
    置信区间: 通常取 95% 置信区间 u α / 2 = 1.96 u_{\alpha/2}=1.96 uα/2=1.96
    S ^ ( t i ) ± u α / 2 ⋅ S E ( S ^ ( t i ) ) \hat{S}(t_i)\pm u_{\alpha/2}\cdot SE(\hat{S}(t_i)) S^(ti)±uα/2SE(S^(ti))
    实例:

    • 使用肺癌患者数据集,计算生存率。

      library(DT)
      library(survival) 
      datatable(lung)
      

      在这里插入图片描述
      数据集中time表示生存时间,status表示生存状态,1表示存活,为截尾数据,2表示死亡,为完整数据。
      用 survival 包来进行生存分析,survfit()函数计算生存率,surv()函数对生存时间进行排序,并将存活的患者生存时间改为截尾数据,用 + 号表示。

      fit = survfit(Surv(time,status)~1,data = lung) # ~1表示不对数据分组
      summary(fit)
      

      部分结果:
      在这里插入图片描述
      上图中:

      • time:生存时间
      • n.risk:期初观察人数
      • n.event:期内死亡人数
      • survival:生存率
      • std.err:生存率标准误
      • lower 95% CI:95% 置信区间下界
      • upper 95% CI:95% 置信区间上界

      可视化:

      library(survminer)
      ggsurvplot(fit,lung)
      

    在这里插入图片描述

    2 log-rank秩检验比较不同组的生存率

    2.1 输入数据

    取 lung 数据集前 20 行作为输入数据。

    df = lung[1:20,]
    head(df)
    
     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  57   1       1       90        60     1150      11
    5    1  883      2  60   1       0      100        90       NA       0
    6   12 1022      1  74   1       1       50        80      513       0
    

    2.2 建立假设

    H 0 H_0 H0: 男性患者和女性患者的生存率相同
    H 1 H_1 H1: 男性患者和女性患者的生存率不同
    检验水准: α = 0.05 \alpha = 0.05 α=0.05

    2.3 log-rank秩精确性检验

    序号时间(天)MaleFemaleall_nall_d
    n 1 i n_{1i} n1i d 1 i d_{1i} d1i T 1 i T_{1i} T1i n 2 i n_{2i} n2i d 2 i d_{2i} d2i T 2 i T_{2i} T2i n i n_i ni d i d_i di
    1611500.75510.25201
    2711510.7894737400.2105263191
    3881410.7777778400.2222222181
    41441310.7647059400.2352941171
    51661210.75400.2500000161
    61701110.7333333400.2666667151
    72101010.7142857400.2857143141
    8218910.6923077400.3076923131
    9306810.6666667400.3333333121
    10310700.6363636410.3636364111
    11361700.7000000310.3101
    12455710.7777778200.222222291
    13567610.7500000200.250000081
    14613510.7142857200.285714371
    15654400.6666667210.333333361
    16707410.8000000100.200000051
    17728300.7500000110.2541
    1888331100031
    19101020000020
    20102220000020

    卡方计算:
    V k i = n k i n i ( 1 − n k i n i ) ( n i − d i n i − 1 ) d i χ 2 = 2 ⋅ ( ∑ d k i − ∑ T k i ) 2 ∑ V k i V_{ki}=\frac{n_{ki}}{n_i} (1-\frac{n_{ki}}{n_i}) (\frac{n_i-d_i}{n_i-1}) d_i \\[3ex] \chi^2=2\cdot \frac{(\sum{d_{ki}}-\sum{T_{ki}})^2}{\sum{V_{ki}}} Vki=ninki(1ninki)(ni1nidi)diχ2=2Vki(dkiTki)2

    n1_i = c(15,15,14,13,12,11,10,9,8,7,7,7,6,5,4,4,3,3,2,2)
    n_i = c(rev(2:20),2)
    d_i = c(rep(1,18),rep(0,2))
    T1_i = d_i/n_i*n1_i
    d1_i = c(0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0)
    
    sum1 = (sum(d1_i)-sum(T1_i))^2
    sumVk = sum((n1_i/n_i)*(1 - n1_i/n_i) * (n_i- d_i)/(n_i-1) * d_i)
    
    chisq = 2*sum1/sumVk
    chisq
    
    [1] 0.1138165
    

    经过计算: χ 2 ≈ 0.1 \chi^2 \approx 0.1 χ20.1 ,查表得 P ≈ 0.8 P\approx 0.8 P0.8
    通常用 survival 包中 survdiff()函数计算 P P P值:

    survdiff(Surv(time,status)~sex,data = df)
    
    Call:
    survdiff(formula = Surv(time, status) ~ sex, data = df)
           N Observed Expected (O-E)^2/E (O-E)^2/V
    sex=1 15       13    13.43    0.0140    0.0569
    sex=2  5        5     4.57    0.0412    0.0569
    
     Chisq= 0.1  on 1 degrees of freedom, p= 0.8 
    

    2.4 可视化

    fit = survfit(Surv(time,status)~sex,data = df)
    library(survminer)
    ggsurvplot(fit, 
               data = df,
               #conf.int = TRUE,
               pval = TRUE,                     # logrank秩检验
               fun = "pct",                     # 生存率转换为百分数
               risk.table = TRUE,               # 添加风险表
               size = 1,
               linetype = "strata",
               palette = c("#E7B800","#2E9FDF"),
               legend = "bottom",
               legend.title = "Sex",
               legend.labs = c("Male","Female")) # 1代表Male,2代表Female
    

    在这里插入图片描述
    从上图可以看出男性和女性患者生存率并没有区别。

    本博客内容将同步更新到个人微信公众号生信玩家。欢迎大家关注~~~
    在这里插入图片描述

    展开全文
  • 生存分析概念

    2019-05-06 23:39:16
    书本上的一些关于生存分析的相关知识的整理,用于分析数据情况与建模。
  • 4e生存分析

    2020-12-23 17:54:57
    这是整理发布的一款4e生存分析,4e生存分析能给你需要了解的知识与资料,欢迎大家下载参考!P...该文档为4e生存分析,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 生存分析数据

    2018-06-14 10:53:31
    R语言生存分析数据时间序列分析及应用R语言(中文版,原英文第2版,另含随书程序与数据集及勘误表
  • 欧春泉生存分析ppt

    2019-07-12 14:22:57
    生物统计系欧春泉生存分析ppt,对生存分析的相关概念如生存曲线,cox回归,结合例子讲解透彻清晰,大力推荐
  • 生存分析及SAS程序

    2018-11-23 19:38:00
    生存分析:对一个或多个非负随机变量进行统计推断,研究生存现象和响应时间数据及其统计规律的一门学科。 生存分析:既考虑结果又考虑生存时间的一种统计方法,并可充分利用截尾数据所提供的不完全信息,对生存时间...
  • 精算模型1 一元生存分析1 生存分析的基本函数 生存函数危险率函数死亡力 这个系列介绍精算模型(Actuarial Modelling),个人认为翻译成精算建模更恰当。大概分为五个部分介绍:生存分析基础、风险模型、破产模型、...

    精算模型1 一元生存分析1 生存分析的基本函数

    这个系列介绍精算模型(Actuarial Modelling),个人认为翻译成精算建模更恰当。大概分为五个部分介绍:生存分析基础、风险模型、破产模型、精算的统计方法、精算的统计计算方法。第一个部分是寿险精算的基础、第二个部分是非寿险精算的基础、第三个部分是保险公司经营模型的基础、第四个部分和第五个部分提供对真实精算数据的建模与计算方法。这一篇是生存分析基础的第一篇,介绍生存分析的基本函数。

    生存分析是对某个事件持续时间的分析与推断,在寿险精算中,一般指生命的持续时间,用 T T T表示某个生命体的存续时间(从初始时刻到失效的时间),它是一个随机变量,做生存分析的前提是了解 T T T的一些性质,这就需要生存分析的基本函数。

    生存函数

    定义1 生存函数(survival function) S ( t ) S(t) S(t)满足
    S ( t ) = P ( T > t ) , ∀ t ≥ 0 S(t) = P(T>t),\forall t \ge 0 S(t)=P(T>t),t0

    它表示生命体活过 t t t岁的概率。根据概率的性质, S S S非增,并且 S ( 0 ) = 1 , S ( ∞ ) = 0 S(0)=1,S(\infty)=0 S(0)=1,S()=0

    定义二 选择生存函数(selective survival function)。称我们关注的生命体现在的年龄 x x x为选择年龄,并记这个个体为 ( x ) (x) (x),记它的生存函数为 S ( t ; x ) S(t;x) S(t;x),称 x x x为伴随变量, t t t为主变量,需要注意的是任何可能影响 T T T的分布的变量都叫伴随变量,称考虑了伴随变量的生存函数为选择生存函数。当 x = 0 x=0 x=0时,选择生存函数写为 S ( x ) S(x) S(x),表示新生儿的生存函数(PS 不同纠结这里的符号,就是约定俗成新生儿用 x x x而已)。

    定理1 生存函数的性质:

    1. F ( t ) + S ( t ) = 1 F(t)+S(t)=1 F(t)+S(t)=1
    2. f ( t ) = − S ′ ( t ) f(t)=-S'(t) f(t)=S(t)
    3. ∫ 0 ∞ t f ( t ) d t = ∫ 0 ∞ S ( t ) d t \int_0^{\infty} tf(t)dt = \int_0^{\infty} S(t)dt 0tf(t)dt=0S(t)dt

    证明
    性质1显然正确。根据性质1, F ′ ( t ) + S ′ ( t ) = f ( t ) + S ′ ( t ) = 0 F'(t)+S'(t)=f(t)+S'(t)=0 F(t)+S(t)=f(t)+S(t)=0,因此性质2成立。性质3是随机变量的期望的两个计算方法:
    E T = ∫ 0 ∞ t f ( t ) d t = ∫ 0 ∞ t d F ( t ) = − ∫ 0 ∞ t d S ( t ) = − t S ( t ) ∣ 0 ∞ + ∫ 0 ∞ S ( t ) d t = ∫ 0 ∞ S ( t ) d t ET = \int_0^{\infty} tf(t)dt = \int_0^{\infty} tdF(t) = -\int_0^{\infty} tdS(t) \\ = -tS(t)|_0^{\infty}+\int_0^{\infty}S(t)dt = \int_0^{\infty}S(t)dt ET=0tf(t)dt=0tdF(t)=0tdS(t)=tS(t)0+0S(t)dt=0S(t)dt

    危险率函数

    定义3 危险率函数(hazard function) h ( t ) h(t) h(t)满足
    h ( t ) = f ( t ) S ( t ) h(t) = \frac{f(t)}{S(t)} h(t)=S(t)f(t)

    注意到
    h ( t ) = f ( t ) S ( t ) = lim ⁡ Δ t → 0 P ( t < T < Δ t ) P ( T > t ) Δ t = lim ⁡ Δ t → 0 P ( t < T < Δ t ∣ T > t ) / Δ t h(t)=\frac{f(t)}{S(t)} = \lim_{\Delta t \to 0 } \frac{P(t<T<\Delta t)}{P(T>t)\Delta t} \\= \lim_{\Delta t \to 0 } P(t<T<\Delta t|T>t)/\Delta t h(t)=S(t)f(t)=Δt0limP(T>t)ΔtP(t<T<Δt)=Δt0limP(t<T<ΔtT>t)/Δt

    因此危险率函数表示活过 t t t时刻的生命体活不过下一时刻的概率。

    定义4 累计危险率函数(cumulative hazard function)。定义
    H ( t ) = ∫ 0 t h ( y ) d y H(t) = \int_0^t h(y)dy H(t)=0th(y)dy

    它与危险率函数的关系类似PDF与CDF的关系。我们活到 t t t岁,时时刻刻( ∀ y ∈ [ 0 , t ] \forall y \in [0,t] y[0,t])都在面临不同的危险(即在下一刻死去的概率 h ( y ) h(y) h(y)), H ( t ) H(t) H(t)相当于我们活到 t t t岁面临的这些危险的总和(积分)。

    定理2 危险率函数的性质:

    1. h ( t ) = − [ ln ⁡ S ( t ) ] ′ h(t)=-[\ln S(t)]' h(t)=[lnS(t)]
    2. S ( t ) = e − H ( t ) S(t)=e^{-H(t)} S(t)=eH(t)

    根据定义即可导出这两个性质。

    死亡力

    通常我们将随机变量 T T T解释为剩余寿命,但它是一个随机变量,在业务中一般用平均剩余寿命( T T T的均值,个体 ( x ) (x) (x)的平均剩余寿命记为 e ˚ [ x ] \mathring{e}_{[x]} e˚[x])与中位平均寿命( T T T的中位数)。

    定义5 死亡力(force of mortality)。称新生儿的危险率函数是死亡力,记为 μ ( x ) \mu(x) μ(x)
    μ ( x ) = − d ln ⁡ S ( x ) d x \mu(x) = -\frac{d\ln S(x)}{dx} μ(x)=dxdlnS(x)

    定义6 新生儿平均寿命 e ˚ 0 \mathring{e}_0 e˚0,
    e ˚ 0 = ∫ 0 ∞ S ( x ) d x = ∫ 0 ∞ x f ( x ) d x \mathring{e}_0 = \int_0^{\infty} S(x)dx = \int_0^{\infty} xf(x)dx e˚0=0S(x)dx=0xf(x)dx

    展开全文
  • 生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及C-index 1. 生存分析 生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。常见的有1)癌症患者生存时间...

    生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及C-index


    1. 生存分析

    生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。常见的有1)癌症患者生存时间分析2)工程中的失败时间分析等等。

    1.1 定义

    给定一个实例 i i i,我们用一个三元组来表示 ( X i , δ i , T i ) (X_i, \delta_i, T_i) (Xi,δi,Ti),其中 X i X_i Xi表示该实例的特征向量, T i T_i Ti表示该实例的事件发生时间。

    如果该实例发生了我们感兴趣的事件,那么 T i T_i Ti表示的是事件发生时间点到基准时间点之间的时间,同时 δ i = 1 \delta_i = 1 δi=1
    如果该实例未发生我们感兴趣的事件,那么 T i T_i Ti表示的是事件发生时间点到观察结束时间点的时间,同时 δ i = 0 \delta_i = 0 δi=0

    生存分析的研究目标就是对一个新的实例 X j X_j Xj,来估计它所发生感兴趣事件的时间。

    1.2 删失(censored)

    在生存分析研究中,对于某些实例,会出现在我们的研究期间,并没有出现任何感兴趣的时间,我们将这种情况称之为删失(censored)。

    出现这种情况的可能原因有:
    1)实例在研究阶段就是没有出现感兴趣的事件(right-censored)
    2)在研究阶段,丢失了该实例
    3)该实例经历了其他的事件导致无法继续跟踪

    2 生存概率(Survival probability)

    生存概率也叫作生存方程 S ( t ) = P r ( T &gt; t ) S(t) = Pr(T&gt;t) S(t)=Pr(T>t),生存方程指的是实例出现感兴趣的事件的时间 T T T不小于给定的时间 t t t的概率。

    2.1 Kaplan-Meier survival estimate

    KM方法是一种无参数方法(non-parametric)来从观察的生存时间来估计生存概率的方法。

    对于研究中的第 n n n个时间点 t n t_n tn,生存概率可以计算为:
    S ( t n ) = S ( t n − 1 ) ( 1 − d n r n ) S(t_n) = S(t_{n-1})(1-\frac{d_n}{r_n}) S(tn)=S(tn1)(1rndn)
    其中, S ( t n − 1 ) S(t_{n-1}) S(tn1)指的是在 t n − 1 t_{n-1} tn1时间点的生存概率; d n d_n dn指的是在时间点 t n t_n tn所发生的事件数; r n r_n rn指的是在快要到时间点 t n t_n tn时,还存活的人(如果在 t n − 1 t_{n-1} tn1 t n t_n tn之间有实例censored,那么在计算 r n r_n rn时应该将该患者剔除出去); t 0 = 0 , S ( 0 ) = 1 t_0=0, S(0)=1 t0=0,S(0)=1

    R语言实现KM生存分析示例

    在这里插入图片描述

    上图为构建的KM生存分析模型可视化结果。其中,

    1)曲线上垂直下降的部分表明,在该时刻有感兴趣的事件发生(通过观察 S ( t n ) S(t_n) S(tn)我们能够看到,只有当 d n d_n dn不为零的时候,才会从 S ( t n − 1 ) S(t_{n-1}) S(tn1)的值才会减小得到 S ( t n ) S(t_n) S(tn);否则,没有事件发生, S ( t n − 1 ) = S ( n ) S(t_{n-1})=S(n) S(tn1)=S(n)

    2)曲线上的垂直stick表示的是,在该时刻,有实例成为了censored,如果在 t n − 1 t_{n-1} tn1 t n t_n tn之间有实例censored,那么在计算 r n r_n rn时应该将该患者剔除出去

    2.2 Log-Rank test 比较不同的生存曲线

    在利用KM方法得到多条生存曲线后,只通过直接的观察来确定多条曲线之间是否具有显著性差异是不充分的。因此,log-rank test被广泛的用来比较两条或多条生存曲线。

    1)log-rank test是一种非参数检验,因此对于生存概率的分布没有任何假设;
    2)同时,log-rank test 的null hypothesis(原假设)为两个曲线代表的两个组之间,在生存率上没有显著性差异。
    3)log-rank test比较的是每个组中观察到的事件数,与在原假设为真的情况下,每个组期望的事件数。
    4)log-rank test统计量类似于卡方检验(Chi-square test)的统计量


    3 风险概率(hazard probability)

    风险概率指的是在时间 t t t之前还没有发生任何事件的情况下,在时间 t t t发生感兴趣的时间的概率。
    h ( t ) = lim ⁡ δ ( t ) → 0 P r ( t ≤ T ≤ t + δ ( t ) ∣ T ≥ t ) δ ( t ) h(t) = \lim_{\delta(t)\rightarrow0}\frac{Pr(t\leq T\leq t+\delta(t)|T\geq t)}{\delta(t)} h(t)=δ(t)0limδ(t)Pr(tTt+δ(t)Tt)

    3.1 累积风险(cummulative hazard)

    在针对单因子进行生存分析时,我们已经得到了生存方程 S ( t ) S(t) S(t),那么,根据 S ( t ) S(t) S(t),累积风险为:
    H ( t ) = − log ⁡ ( S ( t ) ) H(t) = -\log(S(t)) H(t)=log(S(t))
    下图为上述生存方程 S ( t ) S(t) S(t)变换得到的累积风险 H ( t ) H(t) H(t)
    在这里插入图片描述


    4 Cox 比例风险回归模型

    4.1 为什么要用Cox 比例风险回归

    上述生存分析模型,即Kaplan-Meier survival estimate,是单变量分析(univariable analysis),在做单变量分析时,模型只描述了该单变量和生存之间的关系而忽略其他变量的影响。(为什么要考虑multi-variables?比如在比较两组病人拥有和不拥有某种基因型对生存率的影响,但是其中一组的患者年龄较大,所以生存率可能受到基因型 或/和 年龄的共同影响)

    同时,Kaplan-Meier方法只能针对分类变量(治疗A vs 治疗B,男 vs 女),不能分析连续变量对生存造成的影响。

    为了解决上述两种问题,Cox比例风险回归模型(Cox proportional hazards regression model)就被提了出来。

    4.2 Cox 模型的定义

    h ( t , X i ) = h 0 ( t ) × exp ⁡ ( X i β ) h(t, X_i) = h_0(t) \times \exp(X_i \beta) h(t,Xi)=h0(t)×exp(Xiβ)
    其中, h 0 ( t ) h_0(t) h0(t)是基准风险方程,可以是任意一个针对时间 t t t的非负方程; X i X_i Xi是实例 i i i的特征向量; β \beta β是参数向量,该向量是通过最大化cox部分似然得到的。

    4.3 partial likelihood

    实例 i i i以及其所发生事件的时间 T i T_i Ti,那么实例 i i i发生事件的概率为:
    L i ( β ) = h ( T i , X i ) ∑ j : T j ≥ T i h ( T i , X j ) L_i(\beta) = \frac{h(T_i, X_i)}{\sum_{j:T_j \geq T_i}h(T_i, X_j)} Li(β)=j:TjTih(Ti,Xj)h(Ti,Xi)
    其中,分子上的项,主要要确定实例 i i i发生事件的时间 T i T_i Ti,有了 T i T_i Ti才能为计算分母来选取实例。

    根据时间 T i T_i Ti,分母中首先找到在时间 T i T_i Ti之前还没有发生事件的实例(censored应该不计入了吧,同时应该包含 h ( T i , X i ) h(T_i,X_i) h(Ti,Xi)本身),然后分别计算他们在 T i T_i Ti时刻的风险值并求和作为分母。

    这样就得到了针对发生过事件的实例 i i i的发生事件概率 L i ( β ) L_i(\beta) Li(β)
    L i ( β ) = h ( T i , X i ) ∑ j : T j ≥ T i h ( T i , X j ) = h 0 ( T i ) × exp ⁡ ( X i β ) ∑ j : T j ≥ T i h 0 ( T i ) × exp ⁡ ( X j β ) = exp ⁡ ( X i β ) ∑ j : T j ≥ T i exp ⁡ ( X j β ) L_i(\beta) = \frac{h(T_i, X_i)}{\sum_{j:T_j \geq T_i}h(T_i, X_j)} = \frac{h_0(T_i)\times \exp(X_i \beta)}{\sum_{j:T_j \geq T_i}h_0(T_i) \times \exp(X_j \beta)} = \frac{\exp(X_i \beta)}{\sum_{j:T_j \geq T_i} \exp(X_j \beta)} Li(β)=j:TjTih(Ti,Xj)h(Ti,Xi)=j:TjTih0(Ti)×exp(Xjβ)h0(Ti)×exp(Xiβ)=j:TjTiexp(Xjβ)exp(Xiβ)
    因此,该概率和时间无关,并不需要来对 h 0 ( t ) h_0(t) h0(t)进行建模,所以称之为partial likelihood。

    在得到针对单个实例的事件发生概率之后,为了估计使得所有样本出现我们数据中这样的样本的概率最大,我们需要使用极大似然估计来估计参数。假设每个实例的是独立同分布的,那么我们可以得到针对我们样本的似然概率:

    L ( β ) = ∏ i : δ i = 1 exp ⁡ ( X i β ) ∑ j : T j ≥ T i exp ⁡ ( X j β ) L(\beta) =\prod_{i:\delta_i=1} \frac{\exp(X_i \beta)}{\sum_{j:T_j \geq T_i} \exp(X_j \beta)} L(β)=i:δi=1j:TjTiexp(Xjβ)exp(Xiβ)

    该公式的意思为,需要将所有出现过感兴趣事件的实例的概率相乘,即 ∏ i : δ i = 1 \prod_{i:\delta_i = 1} i:δi=1

    得到上述似然概率,我们只需要选择使得 L ( β ) L(\beta) L(β)得到最大值的 β \beta β值即可,即:
    arg ⁡ max ⁡ β { L ( β ) } \arg\max_\beta\{ L(\beta)\} argβmax{L(β)}

    R语言实现Cox比例风险回归模型
    Cox比例风险回归模型wiki


    5 C-index

    英文全称为concordance index。对于存在censored实例的生存数据,一些标准的评估方法是不合适的,比如均方误差等等。

    5.1 计算方法

    1)将所有样本两两配对,共组成 N × ( N − 1 ) / 2 N \times (N-1)/2 N×(N1)/2
    2)排除其中无法判断出谁先出现感兴趣事件的配对。比如配对中两个实例都没有出现感兴趣的事件;配对中的两个实例A、B,如果A是censored(非right-censored),时间为 T A T_A TA,B是发生事件的,其发生时间为 T B T_B TB,并且 T A &lt; T B T_A &lt; T_B TA<TB。排除无法判断谁先出现事件的配对后,得到总的可比较对数为 M M M
    3)在剩下的 M M M对中,预测结果和实际结果相一致的配对数为 K K K,即我预测的生存率 S ( X A ) &lt; S ( X B ) S(X_A) &lt; S(X_B) S(XA)<S(XB),实际的 T A &lt; T B T_A &lt; T_B TA<TB,即为相一致。
    4)则 c − i n d e x = K M c-index = \frac{K}{M} cindex=MK

    C-index的计算可由下列公式描述:
    1 M ∑ i : δ i = 1 ∑ j : T i &lt; T j I [ S ( T i , X i ) &lt; S ( T j , X j ) ] \frac{1}{M}\sum_{i:\delta_i=1}\sum_{j:T_i &lt; T_j} I[S(T_i, X_i) &lt; S(T_j, X_j)] M1i:δi=1j:Ti<TjI[S(Ti,Xi)<S(Tj,Xj)]

    其中,函数 I [ C ] I[C] I[C]指的是如果 C C C为真,则 I [ C ] = 1 I[C] = 1 I[C]=1,否则 I [ C ] = 0 I[C] = 0 I[C]=0
    第一个求和函数 ∑ i : δ i = 1 \sum_{i:\delta_i = 1} i:δi=1表示配对中至少要有一个实例发生了事件;
    第二个求和函数 ∑ j : T i &lt; T j \sum_{j:T_i &lt; T_j} j:Ti<Tj表示配对中,另一个的记录时间 T j T_j Tj必须长于第一个实例事件发生时间;两个求和函数选择出了能够用于比较的所有配对组合。

    5.2 bootstrap 重抽样

    为了得到更加robust的评估结果,希望通过多次重复采样的方法来计算多组评估结果,从而得到更为有说服力的结果。

    1)从原始样本中允许重复抽取的抽取一定数量的样本
    2)根据抽取得到的新样本,计算统计量 T T T,这里为C-index
    3)重复上述N次(一般大于1000),得到N个统计量 T T T
    4)计算上述N个统计量 T T T的样本方差

    展开全文
  • 数据分析之生存分析

    千次阅读 2019-07-11 10:57:36
    最近在读一篇医学信息处理相关的论文,由于在医学图像和医学信息相关的计算机处理方面还是个新手,遇到了一个生存分析预后的概念,提到KM生存曲线、COX回归模型这样的部分时读的一知半解,索性就上网学习了一下,留...

    原文转自https://blog.csdn.net/jaen_tail/article/details/79081954
    最近在读一篇医学信息处理相关的论文,由于在医学图像和医学信息相关的计算机处理方面还是个新手,遇到了一个生存分析预后的概念,提到KM生存曲线、COX回归模型这样的部分时读的一知半解,索性就上网学习了一下,留个记录吧。

    什么是生存分析?

    生存分析是对生存资料的分析。所谓生存资料是指描述寿命或者一个发生时间的数据。通俗来讲,“一个个体能活多久”这个问题扁鹊再世也无法回答,但通过对某一具有相同特质的群体进行数据分析,我们可以得到这类人活过一定时间的概率。这就叫做生存分析。一个人的生存时间长短与许多因素有关,研究各个因素与生存时间有无关系以及关联程度大小,这也是生存分析。推广来说,疾病的复发可以看做“健康期”的生存,机器的故障可以看做“机器”的生存,甚至下岗职工再就业可以看做“失业期”的生存,生存分析可以被推广至很多问题的分析中去。

    一些相关的基本概念

    起始事件:反应研究对象开始生存过程的起始特征事件。如研究某一治疗对病人生存的影响的起始时间是“开始接受该治疗”。

    终点事件(死亡事件):出现研究者所关心的特定结局。如“病人因该疾病死亡”。

    观察时间:从研究开始观察到研究观察结束的时间。由于研究时长无法无限延伸下去,所以研究一定会在某个特定时刻截止,而研究截止时,所有观察对象并不一定全都出现终点事件。换言之,有的研究对象在观察结束之前出现终点事件,有的直到观察结束时也没有出现终点事件,还有一些特例中途因为某些原因,如失访、意外死亡等,被迫提前结束了观察研究。

    生存时间:观察到的存活时间,用符号t表示。

    完全数据:从观察起点到死亡事件所经历的时间,生存时间是完整的。

    截尾数据(删失值):观察时间不是由于终点事件而结束的,而是由于(1)失访(2)死于非研究因素(3)观察结束而对象仍存活以上三种原因结束的。常在截尾数据的右上角放一个“+”表示其实该对象可能活的更久。

    变量:生存分析的变量有两个:生存时间t和结局变量(0-1)。其中结局变量1表示死亡事件,0表示截尾。

    生存分析的主要方法

    1、非参数法

    这类方法的特点是,不管分布形式如何,只根据样本的顺序统计量对生存率进行估计。对于两个及多个生存率进行比较,其无效假设只是假定两组或多组生存时间分布相同,而不对其具体的分布形式和参数进行推断。log-rank乘法极限法和寿命表法都是非参数法。

    2、参数法

    特点是假定生存时间服从特定的参数分布,然后根据已知的分布特点对生存时间进行分析。如指数分布法、Weibull分布法、对数正态回归分布法和logistic回归法。

    3、半参数法

    Cox比例风险回归模型就是半参数法,具体介绍它时再说为什么叫半参数法。

    生存分析研究的主要内容

    1、描述生存过程

    研究生存时间的分布特点,估计生存率(如1年生存率、5年生存率)及其标准误、绘制生存曲线。常用方法有乘积极限法(K-M法)和寿命表法。

    2、比较生存过程

    获得生存率及其标准误的估计值后,可以进行两组或多组生存曲线的比较,也就是得到了其生存过程的比较。常用方法有对数秩检验(log-rank检验)。举例说明这种对比的作用,比如针对某种疾病有两种治疗方式,对比这两种治疗下患者的生存曲线,就可以得出哪种治疗方式更有效。

    3、影响生存时间的因素分析

    含义顾名思义。常用的多因素生存分析方法:Cox比例风险回归模型。这里是我主要会用到的部分,可能后面会多啰嗦几句。

    下面具体介绍以上三个研究部分

    1、描述生存过程

    对生存过程进行描述所用到的描述指标有生存率及其标准误,中位生存期,生存曲线。

    生存率记为S(tk)是指观察对象活过tk时刻的概率,当没有截尾数据时,

    (T为观察对象的存活时间)

    当存在截尾数据时,分母必须分时段进行矫正,矫正公式为:矫正人口数=年初观察例数-1/2截尾例数,因为截尾数据出现有间隔,所以生存率计算公式一般来说不能直接使用,大多采用概率乘法原理估计生存率:先做独立假设,每段的生存率为P1、P2、…、Pk,则生存率估计公式为:

    对生存过程的描述常用的两种方法是乘积极限法(K-M法)和寿命表法。两种方法使用的区别在于,当处理小样本时使用K-M法,当样本量大时,要按时间对样本进行分组,而这时就体现出了针对截尾数据进行分母矫正的重要作用(毕竟小样本时截尾数据也少,乘以1/2后多是以0.5的形式存在,差别不大)。其实上一段就是K-M法的计算公式,而寿命表法只是比它多了一个时间上的分组,计算方法也是一样的。下面举例说明:

    有上面两个表格可以看出小样本数据是每个观察对象为一行,而本例中的大样本的寿命表法则是将数据按月进行了分组,每组一行。

    生存率的标准误计算公式为

    生存曲线:以生存时间为横轴、生存率为纵轴绘制一条生存曲线。

    中位生存时间:又称为生存时间的中位数,表示刚好有50%的个体其存活期大于该时间。这里注意生存时间的平均水平不能用平均生存时间来表示,而应该用中位生存时间来表示。用一张图直观感受下中位生存时间:

    2、比较生存过程

    对数秩检验是以生存时间的对数为基础推导出来的,其基本思想是实际死亡数与期望死亡数间比较。公式为:

    检验思想是:假设无效假设成立(两总体生存曲线位置相同),通过以上公式计算,若理论死亡数与实际死亡数差距过大,则假设不成立,两条生存曲线位置不同。用log-rank检验对样本的生存率进行比较时,要求各组生存曲线不能交叉。

    3、影响生存时间的因素分析

    Cox比例回归模型是一个能处理多因素生存数据的回归模型(啊废话那么多终于写到这了就是为了它才查的呀~)Cox回归不是用生存时间做因变量,而是用危险度做因变量。所以,

    首先看风险函数公式

    其中h(t)是具有协变量x的个体在时刻t的风险函数,t表示生存时间,x表示与生存时间可能有关的协变量或交互项。通俗来讲,h(t)是当p个x值固定时的风险函数,p个x都是可能会影响生存时间t的因素,影响程度由各自前面的系数决定。

    而h0是基准风险函数,它是指所有风险因素为0时的基础风险率,与x无关,它是未知的,不过没关系,我们只需要假设它是与h(t)成比例存在的,然后放在那里就行。同时,这也解释了为什么Cox模型是半参数的,因为h0与参数x们无关。

    有了上面这个公式,我们就可以来看Cox模型到底是干什么用的了,它有两个主要用途:(1)因素分析:分析哪些因素影响了生存期长短。(2)求各因素在排除其他因素的影响后,对于死亡的相对危险度。

    先来看因素分析这个用途:

    上式中,β1,β2,…,βp这组数是回归系数,而βi是因素Xi的偏回归系数,它表示在控制其他变量的条件下,该变量对回归方程的独立贡献,说白了就是系数越大,则对应因素对整体的影响就越大,这很好理解。我们通过对偏回归系数进行统计学检验,(统计学检验指假设检验:1、最大似然比检验:它主要用于模型中原有不显著变量的剔除和新变量引入,以及包含不同协变量数时模型间的比较。2、得分检验:用于新变量是否能选入模型。可检验一个新变量能否引入模型,也可以检验多个新变量能否引入模型。3、wald检验:它用于模型中协变量是否应从模型中剔除。)

    对单个变量进行统计学检验,如果p<0.05则就说排除其他因素影响后,该因素与生存期长短有关系,通过这些统计学检验对变量进行了初步筛选,那么剩下的被选入模型的变量具体与生存期长短到底有什么关系呢?这要看β的具体值:β>0,该因变量是危险因素,数值越大生存时间越短;β<0,该变量是保护因素;β=0,该变量不影响生存时间。

    说了半天,那么β是怎么求出的呢?

    β是采用偏似然函数估计出来的,算法是这样的,首先假设数据集容量为n,具有K个不同的精确生存时间,把每个个体的生存时间ti从小到大排序,我们假设每个个体的生存时间ti都不同。定义R(ti)是在时间ti处于风险的个体集合,即是由生存时间大于等于ti的个体组成的。在时间Ti处第j个个体死亡的概率Li为

    在所有k个生存时间点上都得到上述概率表示后,将条件概率相乘得到偏似然函数

    这里面的幂指数在存在删失值时取0,没有删失值时取1。对分子贡献信息的是在时间ti死亡的个体。

    把Lp看做一般的似然函数,通过求极大值点来求解β的极大似然估计。这个大家应该都会,无非是先取对数

    再对β求偏导通过求p个即可求出β的极大似然估计,通常用软件进行牛顿迭代得到。

    再来看相对危险度:

    公式为:

    举个例子:某疾病的发病,受吸烟X1与饮酒X2的影响,对有关资料作Cox回归分析后,得回归方程为X1与X2的回归系数为0.8755与0.5108,既吸烟又饮酒者危险度为不吸烟不饮酒者的危险度为

    二者的比值为:又抽烟又喝酒则发病概率增至4倍。这就是相对危险度。

    当协变量较多时,在配合模型以前需对这些协变量进行筛选。前面已经说过一些统计学检验方法,不过这一块现在有很多更好的方法,我还没看完,回头有时间总结,这个先到这里吧。

    展开全文
  • 生存分析知识总结

    2017-09-18 17:18:09
    本资源是作者通过学习网上有的生存分析的相关内容,并进行汇总后的成果。为纯粹的知识学习文档,不包含软件实现。
  • 生存分析学习笔记

    万次阅读 多人点赞 2018-01-18 19:27:38
    最近在读一篇医学信息处理相关的论文,由于在医学图像和医学信息相关的计算机处理方面还是个新手,遇到了一个生存分析预后的概念,提到KM生存曲线、COX回归模型这样的部分时读的一知半解,索性就上网学习了一下,留...
  • Cox生存分析代码

    2018-09-02 20:16:08
    Cox生存分析,分析疾病的风险因素,得出疾病的生存曲线。
  • 用R的randomForestSRC包做生存分析用randomForestSRC做生存分析导入randomForestSRC包准备生存分析的数据构建模型,进行生存分析绘图 用randomForestSRC做生存分析 导入randomForestSRC包 在R中的实现如如下图所示 ...
  • 哈伯曼乳腺癌生存分析:通过检测轴突结点的数量对乳腺癌进行生存分析
  • python做生存分析

    千次阅读 2019-10-03 11:10:57
    这里跟大家分享一下生存分析,并且介绍一个用python做生存分析的包。 生存分析 应用场景 生存分析最早在生物医学中使用的最多,用来预估某个群体的存活时间,后来被推广到了更广泛的领域。一个做生物的专家可能...
  • 癌症的生存分析数据,记录了治疗方案,癌细胞类型,临床打分,病人年龄,死亡与否以及生存的天数,可以建立生存分析模型进行数据分析。
  • 生存分析概述及实例分析.ppt
  • python生存分析入门

    千次阅读 2020-06-03 17:14:31
    什么是生存分析 生存分析是对生存资料的分析。所谓生存资料是指描述寿命或者一个发生时间的数据。通过对某一具有相同特质的群体进行数据分析,我们可以得到这类人活过一定时间的概率。这就叫做生存分析。一个人的...
  • WSN的生存分析

    2013-06-17 14:13:59
    主要讲述了对于无线传感网的生存分析,运用了三层结构生存分析,文件包含PPT和报告两份
  • R语言 生存分析

    千次阅读 2018-10-05 19:36:41
    R语言对生存分析的处理 用R语言,对生存分析数据进行整理,按照相应格式进行输出 题目要求:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,402
精华内容 54,160
关键字:

生存分析