精华内容
下载资源
问答
  • 深度复发生存分析(DRSA) DRSA模型的张量tensorflow实现。 这是AAAI 2019论文“”的实验代码。 如果您有任何问题,请随时与作者,和。 抽象的 生存分析是统计研究中使用数据审查处理为事件到时间信息建模的一个...
  • python生存分析入门

    千次阅读 2020-06-03 17:14:31
    推广来说,疾病的复发可以看做“健康期”的生存,机器的故障可以看做“机器”的生存,甚至下岗职工再就业可以看做“失业期”的生存,生存分析可以被推广至很多问题的分析中去。 应用场景 生存分析最早在生物医学中...

    引入

    什么是生存分析

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

    应用场景

    生存分析最早在生物医学中使用的最多,用来预估某个群体的存活时间,后来被推广到了更广泛的领域。一个做生物的专家可能通常会关心这样一个问题:这个群体的样本能活多久?这个问题我们通常会使用生存分析来回答。 这个群体可以理解为某个国家的人民,或者注射过某种药物的一些病人。

    同样也可以推广到更一般的场景,公司的客户流失情况,一个用户开始接受他们的服务可以认为是一个样本的出生,一个客户的离开可以认为是一个样本的死亡。用户流失情况分析等问题很多电商平台也十分关注。

    数据截断

    以样本的出生和死亡为例,我们观测一组样本的生存时间。然而我们观测和追踪他们是需要时间和金钱的成本的,不可能因为样本一直存活着,我们就一直将某个实验做下去。通常,专家只会对一组样本观测一段时间。

    同样也存在左侧截断和中间截断

    一个常见的错误是人们可能在评估目标群体存活时间时会简单的忽略右侧截断
    考虑一种情况,其中人口实际上由两个亚群组成, 𝐴 和 𝐵。人口𝐴 寿命非常短,例如平均2个月,人口 𝐵 享有更长的使用寿命,例如平均12个月。我们事先不知道这种区别。假定我们的实验进行了十个月,即在𝑡=10就结束了,我们希望调查整个人口的平均寿命。

    在下图中,红线表示观察到死亡事件的个体的寿命,蓝线表示右删失个体的寿命(未观察到死亡)。如果要求我们估计人口的平均寿命,而我们天真地决定不包括经过权利审查的个人,那么很明显,我们将严重低估真实的平均寿命。

    from lifelines.plotting import plot_lifetimes
    import numpy as np
    from numpy.random import uniform, exponential
    
    N = 25
    
    CURRENT_TIME = 10
    
    actual_lifetimes = np.array([
        exponential(12) if (uniform() < 0.5) else exponential(2) for i in range(N)
    ])
    observed_lifetimes = np.minimum(actual_lifetimes, CURRENT_TIME)
    death_observed = actual_lifetimes < CURRENT_TIME
    
    ax = plot_lifetimes(observed_lifetimes, event_observed=death_observed)
    
    ax.set_xlim(0, 25)
    ax.vlines(10, 0, 30, lw=2, linestyles='--')
    ax.set_xlabel("time")
    ax.set_title("Births and deaths of our population, at $t=10$")
    print("Observed lifetimes at time %d:\n" % (CURRENT_TIME), observed_lifetimes)
    

    上面我们设定了最大值等于CURRENT_TIME=10,所以我们直观查了10个月的数据,后面没有发生结束事件的我们并不知道其真实的存活时长。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FymHigLR-1591174155281)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENResource/p9)]

    而真实的数据其实是下面这样的

    ax = plot_lifetimes(actual_lifetimes, event_observed=death_observed)
    ax.vlines(10, 0, 30, lw=2, linestyles='--')
    ax.set_xlim(0, 25)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EHJP6DDF-1591174155283)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENResource/p10)]

    如果我们不删除发生右侧截断的样本而直接求平均值,仍然会低估这个群体的平均生存时间,要注意的是,我们只能观测到10时刻之前的事情,10时刻之后的我们并不能看到。

    生存分析最初被设计出来的目的就是为了处理存在右侧截断的这种数据的。但是,即使我们的数据不包含右侧截断,生存分析仍然是一个强大有效的工具。

    上述例子是为了阐述方便所以让所有的样本的出生从0时刻开始,而实际上这是不必要的,生存分析并不要求所有样本在同一时刻出生,它只关注每个样本从出生到death触发或到实验结束之间的间隔时间,每个样本随时可以出生。

    基本对象

    接下来,我们介绍生存分析中的三个基本对象: 生存函数,风险函数和累积风险函数。

    生存函数

    设𝑇取自研究人群的(可能是无限的,但总是非负的)随机寿命。例如,一对夫妇结婚的时间。或用户进入网页所花费的时间(如果从不输入,则为无限时间)。生存函数 S ( t ) S_{(t)} S(t)的被定义为:
    S ( t ) = P r ( T > t ) S_{(t)}=Pr(T>t) S(t)=Pr(T>t)
    解释: S ( t ) S_(t) S(t)描述了这个群体的样本生存时间大于t的概率,换句话说,直到时刻t,我们仍然没有观测到death事件的发生。

    它有以下几个性质:

    1. 0 ≤ S ( t ) ≤ 1 0\leq S_{(t)} \leq 1 0S(t)1
    2. F T ( t ) = 1 − S ( t ) F_T(t)=1- S_{(t)} FT(t)=1S(t) F T ( t ) F_T(t) FT(t)是随机变量T的累积分布函数。
    3. S ( t ) S_{(t)} S(t)是一个单调不增的函数。

    一个生存函数的示例:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETPBkgZT-1591174155285)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=fedd878e1c19ce47cf1c9f91a9617b18)]

    风险函数

    我们同样可能会关心某个样本在t时刻死亡的概率,也就是说,直到t时刻我们都没有观察到该样本的死亡,而在t时刻的一个右邻域观察到该样本死亡。即:
    lim ⁡ δ t → 0 P r ( t ≤ T ≤ t + δ t ∣ T > t ) \lim_{\delta_t \to 0} Pr(t\leq T \leq t+\delta_t|T>t) δt0limPr(tTt+δtT>t)
    由于上述极限随着 δ t \delta_t δt的减小而趋于0,我们定义
    h ( t ) = lim ⁡ δ t → 0 P r ( t ≤ T ≤ t + δ t ∣ T > t ) δ t h{(t)=}\lim_{\delta_t \to 0}\frac{Pr(t\leq T \leq t+\delta_t|T>t)}{\delta_t} h(t)=δt0limδtPr(tTt+δtT>t)

    可以证明这等于:
    h ( t ) = − S ( t ) ′ S ( t ) h{(t)}=\frac{-S_{(t)}^{'}}{S_{(t)}} h(t)=S(t)S(t)

    可以运用贝叶斯公式

    分离变量后,两遍同时取积分,并注意到 S ( 0 ) = 1 S(0)=1 S(0)=1
    即可以得到 S ( t ) = e x p ( − ∫ o t h ( x ) d x ) S(t)=exp(-\int_o^th(x)dx) S(t)=exp(oth(x)dx)

    累计风险函数

    H ( x ) = ∫ o t h ( x ) d x H(x)=\int_o^th(x)dx H(x)=oth(x)dx
    那么 S ( t ) S(t) S(t)又可以写为 S ( t ) = e x p ( − H ( x ) ) S(t)=exp(-H(x)) S(t)=exp(H(x))

    上面的方程式,定义了所有生存函数。请注意,我们现在可以谈论生存功能𝑆(𝑡)或累积风险函数𝐻(𝑡),我们可以轻松地来回转换。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4Y1CGdQ-1591174155286)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=1f523a369eba384a36fa5b883701be31)]

    下面两个图表表示上图中风险函数和累积风险。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnKxuzZI-1591174155288)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=24aec27f4042ea1ac5d010eb305adb30)]

    估计生存函数

    这里以Kaplan-Meier为例:

    Kaplan-Meier是一种非参数的估计方法。

    简单说一下非参数估计和参数估计
    参数估计:我们通过一定的基本假设和建模获得了待估计函数的形式,而有若干控制该函数具体表现的参数。而我们的目的是从形式已知参数未知的模型簇里找出合适的参数。把这个函数当做我们对目标函数的估计。
    非参数估计:我们并不对待估计的函数形式做任何假设,而是直接从数据出发去估计它。
    优缺点:在数据量较小的时候,参数估计的表现会比较好。而非参数估计会由于数据量有限而无法表现出良好的性能。在数据量充足的时候,非参数估计由于减少了强加给数据的假设而会表现的比参数估计好。通常非参数估计的计算量大于参数估计。

    单因素生存分析方法,可用生存率的估计、生存率比较及较影响因素分析。倾向于给与某种治疗措施后生存时间的变化情况。大小样本均适用,除比较因素外要求其他混杂因素组间均衡。当用分层变量控制混杂因素时,分层因素只限一个,且须是分类变量.
    S ( t ) ^ = ∏ n i − d i n i \hat{S_{(t)}} = \prod{\frac{n_i-d_i}{n_i}} S(t)^=ninidi

    d i d_i di是在该时间点t实际死亡的人数, n i n_i ni是在该时间点t有死亡风险的人数

    数据演示
    看下数据集

    from lifelines.datasets import load_dd
    
    data = load_dd()
    data.info()
    

    <class ‘pandas.core.frame.DataFrame’>
    RangeIndex: 1808 entries, 0 to 1807
    Data columns (total 12 columns):

    ColumnNon-NullCountDtype
    0ctryname1808 non-nullobject
    1cowcode21808 non-nullint64
    2politycode1801 non-nullfloat64
    3un_region_name1808 non-nullobject
    4un_continent_name1808 non-nullobject
    5ehead1808 non-nullobject
    6leaderspellreg1808 non-nullobject
    7democracy1808 non-nullobject
    8regime1808 non-nullobject
    9start_year1808 non-nullint64
    10duration1808 non-nullint64
    11observed1808 non-nullint64

    dtypes: float64(1), int64(4), object(7)
    memory usage: 169.6+ KB

    再lifelines包中,我们需要KaplanMeierFitter来进行训练

    from lifelines import KaplanMeierFitter
    kmf = KaplanMeierFitter()
    

    为了进行此估算,我们需要每个领导人的上任时间/是否在职,以及是否被观察到他们离开了办公室(在2008年去世或就职的领导者,该数据记录的最新日期,没有观察到死亡事件)

    T = data["duration"]
    E = data["observed"]
    
    kmf.fit(T, event_observed=E,label='KM-estimate')
    kmf.plot()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qNMYL6Kq-1591174155289)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=9ca1a0cdc253f7ceadb655c32535fcbe)]

    y轴表示领袖在t年后仍然在位的可能性,x轴为t(年)
    我们看到很少有领导者能够任职20年以上。

    kmf.median_survival_time_
    4.0
    

    中位数定义了平均50%的人口已经不在职的时间点
    这意味着,在全球范围内,当选领导人在四年或更短的时间内有50%的机会被停职!要获得中位数的置信区间,可以使用:

    from lifelines.utils import median_survival_times
    median_ci = median_survival_times(kmf.confidence_interval_)
    

    我们对民主政权与非民主政权进行细分

    ax = plt.subplot(111)
    
    dem = (data["democracy"] == "Democracy")
    #民主政权
    kmf.fit(T[dem], event_observed=E[dem], label="Democratic Regimes")
    kmf.plot(ax=ax)
    #非民主政权
    kmf.fit(T[~dem], event_observed=E[~dem], label="Non-democratic Regimes")
    kmf.plot(ax=ax)
    
    plt.ylim(0, 1);
    plt.title("Lifespans of different global regimes");
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RuCKXFdL-1591174155290)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=80f62a58be08ad9bbbb1393de1d4b338)]

    这些非民主政权的存在时间长了令人难以置信。民主政权确实对死亡有一种自然偏见:通过选举和自然限制(美国规定了严格的八年限制)。非民主国家的中位数只有民主政权的两倍左右,但差别却显而易见:如果您是非民主国家的领导人,并且已经超过10年大关,可能还有很长的路要走。同时,民主领袖很少能做到十年,而在那之后的寿命很短。

    在这里,生存功能之间的差异非常明显,并且进行统计检验似乎很花哨。如果曲线更相似,或者我们拥有的数据更少,我们可能会对执行统计检验感兴趣。在这种情况下,生命线包含lifelines.statistics用于比较两个生存功能的例程 。下面我们演示这个例程。该功能lifelines.statistics.logrank_test()是生存分析中常用的统计测试,用于比较两个事件序列的生成器。如果返回的值超过某个预先指定的值,则我们认为该系列具有不同的生成器。

    Nelson Aslen估计

    累计风险函数–估计值的总和比逐点估计的稳定得多

    H ( t ) ^ = ∑ t i ≤ t d i n i \hat{H_{(t)}} = \sum_{t_i \leq t}{\frac{d_i}{n_i}} H(t)^=titnidi
    d i d_i di是在时刻 t i t_i ti死亡的数量, n i n_i ni是有潜在死亡的个人的数量

    the number of susceptible individuals

    T = data["duration"]
    E = data["observed"]
    
    from lifelines import NelsonAalenFitter
    naf = NelsonAalenFitter()
    
    naf.fit(T,event_observed=E)
    
    print(naf.cumulative_hazard_.head())
    naf.plot()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZpIuFFk-1591174155292)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=b8e15fd80ceb16bf4c53e0890a1250ef)]
    该曲线的变化率是风险函数的估计

    naf.fit(T[dem], event_observed=E[dem], label="Democratic Regimes")
    ax = naf.plot(loc=slice(0, 20))
    
    naf.fit(T[~dem], event_observed=E[~dem], label="Non-democratic Regimes")
    naf.plot(ax=ax, loc=slice(0, 20))
    
    plt.title("Cumulative hazard function of different global regimes");
    

    我们对民主政权与非民主政权进行细分
    在这里插入图片描述
    从变化的速度来看,尽管民主政权的持续风险性要高得多,但两种政权都具有持续的风险性。

    COX分析

    定义

    生存回归 -顾名思义,我们将协变量(例如年龄,国家/地区等)与另一个变量进行回归-在这种情况下为持续时间。
    生存回归中有一些流行的模型:Cox模型,加速故障模型和Aalen加法模型

    在进行Cox回归分析前,如果样本不多而变量较多,建议先通过单变量分析(KM法绘制生存曲线、Logrank检验等)考察所有自变量与因变量之间的关系,筛掉一些可能无意义的变量,再进行多因素分析,这样可以保证结果更加可靠。即使样本足够大,也不建议把所有的变量放入方程直接分析,一定要先弄清楚各个变量之间的相互关系,确定自变量进入方程的形式,这样才能有效的进行分析。
    单因素分析后,应当考虑应该将哪些自变量纳入Cox回归模型。一般情况下,建议纳入的变量有:1)单因素分析差异有统计学意义的变量(此时,最好将P值放宽一些,比如0.1或0.15等,避免漏掉一些重要因素);2)单因素分析时,没有发现差异有统计学意义,但是临床上认为与因变量关系密切的自变量。

    Cox模型的基本假设为
    在任意一个时间点,两组人群发生时间的风险比例是恒定的;或者说其危险曲线应该是成比例而且是不能交叉的;也就是如果一个体在某个时间点的死亡风险是另外一个体的两倍,那么在其他任意时间点的死亡风险也同样是2倍。

    h ( t ∣ x ) ⏟ h a z a r d = b 0 ( t ) ⏞ b a s e l i n e h a z a r d e x p ( ∑ i = 1 n b i ( x i − x i ‾ ) ) ⏞ l o g − p a r t i a l h a z a r d ⏟ p a r t i a l h a z a r d \underbrace{h(t|x)}_{hazard}=\overbrace{b_0(t)}^{baseline \quad hazard}\quad\underbrace{exp\overbrace{(\sum_{i=1}^nb_i(x_i-\overline{x_i}))}^{log-partial \quad hazard}}_{partial\quad hazard} hazard h(tx)=b0(t) baselinehazardpartialhazard exp(i=1nbi(xixi)) logpartialhazard

    b 0 ( t ) b_0(t) b0(t)称为基准危险率。在上述产品中,部分危害是随时间变化的标量因子,只会增加或减少基线危害。因此,协变量的变化只会增加或减少基线风险。

    数据介绍

    用一个具体的数据演示一下
    生存回归所需的数据集必须采用Pandas DataFrame格式。DataFrame的每一行都应该是一个观察值。应该有一栏表示观察的持续时间。可能会有一栏表示每个观察的事件状态(如果发生事件,则为1,如果截断,则为0)。还希望对其他协变量进行回归。
    使用的示例数据集是Rossi累犯数据集

    from lifelines.datasets import load_rossi
    
    rossi = load_rossi()
    
    """
         week  arrest  fin  age  race  wexp  mar  paro  prio
    0      20       1    0   27     1     0    0     1     3
    1      17       1    0   18     1     0    0     1     8
    2      25       1    0   19     0     1    0     1    13
    3      52       0    1   23     1     1    1     1     1
    """
    

    DataFrame rossi包含432个观察值。该week列是持续时间,arrest列事件发生,而另一列代表我们要对回归变量。

    统计分析
    from lifelines import CoxPHFitter
    from lifelines.datasets import load_rossi
    
    rossi_dataset = load_rossi()
    
    cph = CoxPHFitter()
    cph.fit(rossi_dataset, duration_col='week', event_col='arrest')
    
    cph.print_summary() 
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jz3TooCW-1591174155296)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENResource/p29)]
    z值代表Wald统计量,其值等于回归系数coef除以其标准误se(coef),即z = coef/se(coef);有统计量必有其对应的假设检验的显著性P值,其说明coef是否与0有统计学意义上的显著差别。
    例子
    prio(先前的逮捕次数)系数约为0.09。因此,一个单位的增加prio意味着基准危害将增加一个系数。exp(0.09)=1.10大约增加10%。回想一下,在Cox比例风险模型中,较高的风险意味着事件发生的风险更大。价值exp(0.09)称为危险比,这个名称在另一个示例中将很明显。
    考虑系数mar(对象是否已婚)。列中的值为二进制:0或1,表示未婚或已婚。与mar,相关的系数值exp(−.43),是与结婚相关的危险比的值,即:

    e x p ( − 0.43 ) = h a z a r d o f m a r r i e d s u b j e c t s a t t i m e t h a z a r d o f u n m a r r i e d s u b j e c t s a t t i m e t exp(-0.43)= \frac{hazard\quad of\quad married\quad subjects\quad at\quad time\quad t}{hazard\quad of\quad unmarried\quad subjects\quad at\quad time\quad t} exp(0.43)=hazardofunmarriedsubjectsattimethazardofmarriedsubjectsattimet

    请注意,左侧是一个常数(具体来说,它与时间无关, 𝑡),但右侧有两个因素可能会随时间而变化。该比例风险的假设是这种关系是真实的。也就是说,危险可以随时间变化,但是它们之间的比率保持不变。稍后我们将处理检查此假设。但是,实际上,危险比在研究期间会发生变化是非常普遍的。然后,危险比可以解释特定时期的危险比的某种加权平均值。结果,危险比可能严重取决于随访的持续时间。

    系数绘制
    cph.plot()
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uinA8IPi-1591174155297)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=5d9c9873cb288c32d27cd58cb4444ded)]

    绘制改变协变量的效果
    cph.plot_covariate_groups('prio', [0, 2, 4, 6, 8, 10], cmap='coolwarm')
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uHB50IWj-1591174155299)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENNote/p27?hash=7182f9a11b9d01efc5c852f204552033)]

    github
    参考:
    https://wenku.baidu.com/view/13b07ba53169a4517623a378.html
    https://zhuanlan.zhihu.com/p/34802509
    https://lifelines.readthedocs.io/en/latest/Survival%20analysis%20with%20lifelines.html
    https://segmentfault.com/a/1190000015895321
    https://www.jianshu.com/p/e80eb4168043

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

    千次阅读 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倍。这就是相对危险度。

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

    展开全文
  • 生存分析学习笔记

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

    最近在读一篇医学信息处理相关的论文,由于在医学图像和医学信息相关的计算机处理方面还是个新手,遇到了一个生存分析预后的概念,提到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倍。这就是相对危险度。

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

    参考资料:

    1、曹明芹点击打开链接

    2、上海交通大学基础医学院生物统计学教研室点击打开链接

    3、Cox模型点击打开链接

    4、mingfeng07的博客点击打开链接

    展开全文
  • 生存分析研究

    2021-07-04 15:52:57
    生存分析生存分析基础知识生存分析生存数据生存函数生存分析方法生存分析统计方法非参数方法半参数方法参数方法生存分析机器学习模型研究思路 生存分析基础知识 生存分析 定义:将事件结局的出现与否和达到终点所...

    生存分析基础知识

    生存分析

    定义:将事件结局的出现与否和达到终点所经历的时间结合起来的 统计方法
    背景:对于癌症患者,更加关注“生存时间”,比如常常听到的:5年存活率、3年存活率……,且某种治疗方法的价值主要表现在延长患者的存活时间。
    比如在一项针对癌症患者的研究中,研究者更加关注的问题在观测时间点发生特定事件的概率,寻找个体协变量与个体生存状态之间的潜在关系(观测时间和观测事件状态)

    • 癌症患者在接受治疗后的生存状况如何
    • 哪种疗法的效果更好
    • 这些患者在接受治疗后的生存状况与哪些因素有关

    事件
    生存时间
    删失问题

    生存数据

    1. 兼有时间和结局两种属性的数据,生存数据表示集合A={( x i x_i xi, T i T_i Ti, δ i \delta _i δi)|i=1,…,n}
      n表示数据中观测个数的数目 x i x_i xi 是维度为m的向量,表示第i个个体的协变量 Ti表示该个体最后一次的观测时间(末次随访时间)
      δ i \delta _i δi ∈ \in {0,1}表示在Ti时刻是否观察到该个体有感兴趣的事件发生。
      令Te表示感兴趣的事件的研究终点,则患者集合{i|Ti<Te, δ i \delta _i δi=0}表示右删失的个体集合,即在研究终点之前的最后一次观测未观测到发生事件。
    2. 结局为二分类互斥事件
    3. 一般是通过随访收集得到,随访观察往往是从某统一时间点(如入院或实施手术等某种处理措施后)开始,观察到某规定时间点截止。
    4. 常因失访等原因造成研究对象的生存时间数据不完整,分布类型复杂,不能简中地套用以前的缺失值处理方法。

    生存函数

    1.描述性

    生存函数(survival function):S(t)=Pr(T>t)表示生存时间T超过t的概率,定义了直到t时刻还未发生死亡(或interest感兴趣的事件)的概率
    在这里插入图片描述
    累积死亡函数 即Pr(T ≤ \leq t),其意义是对象存活时间不超过某一时间t的概率值。它是时间T分布的累计分布函数,F(t) = 1-S(t)
    死亡概率分布 是累计分布的导数,意义是对象在某一时刻t的一瞬间死亡的概率

    在这里插入图片描述
    风险率 比如t时刻之前有100个存活病人,t时刻一瞬间有10个人死亡,这时候风险率是1/10,Cox模型的因变量就是风险率值,精确的定义为
    在这里插入图片描述
    它与死亡概率函数的定义是有区别的,多了一个条件T>t
    风险函数(hazard function):定义了在生存时间大于t的条件下在t时刻发生事件的概率,不是密度也不是概率,可以看作是在t和t+dt之间的一个无限小的时间段内失败的概率,假定受试者一直存活到时间t。故t时刻的风险函数h(t)可以表示为在这里插入图片描述
    因此,生存函数S(t)与风险函数h(t)之间的关系如下
    在这里插入图片描述
    其中,H(t) = ∫ 0 t h ( z ) d z \int_{0}^t h(z)dz 0th(z)dz表示累计风险函数(Cumulative hazard function)。首次发生事件时间的概率密度函数f(t)为其累积分布函数F(t)对事件的导数,所以推导得到
    在这里插入图片描述
    生存分析中的生存函数S(t)、风险函数h(t)、累积风险函数H(t)、首次发生事件时间的概率密度函数f(t)及其累积分布函数F(t)都可以通过上述公式相互转化得到
    在这里插入图片描述

    生存分析方法

    生存分析统计方法

    参数估计与非参数估计
    参数估计:我们通过一定的基本假设和建模获得了待估计函数的形式,而有若干控制该函数具体表现的参数。而我们的目的是从形式已知参数未知的模型簇里找出合适的参数。把这个函数当做我们对目标函数的估计。
    非参数估计:我们并不对待估计的函数形式做任何假设,而是直接从数据出发去估计它。

    非参数方法

    非参数的统计生存方法一般只用于直观理解研究对象的整体生存状态,如生存率和风险趋势等,不能用于个性化预测
    Kaplan-Meier估计方法
    Nelson-Aalen估计方法

    半参数方法

    考虑了个体协变量对个体生存状态的影响,使用线性模型预测个体的生存状态。

    • Cox比例风险模型,本质上是一个线性模型,假设个体的风险函数与人群的基准函数之比为一个不随时间改变的常数。使用生存数据拟合Cox比例风险模型后,可以通过向模型输入个体协变量来预测其对数风险比例,然后使用下述公式估计该个体的生存函数。类似logistic回归,多个变量对Y的影响,得到一个概率值,只不过加了时间
      在这里插入图片描述
      前半部分是基线风险函数,不需要特定分布,是非参数
      后半部分相当于对多重线性回归的输出进行了次方变换,保证了正值和单调性
      参数说明:
      1. h o ( t ) : h_o(t): ho(t):风险基准函数,就是引子中提到的关于时间t的函数,这个函数只与时间t有关,与特征X无关,并且该模型中没有给出风险基准函数的基本形式,只要满足非负连续即可,当 β X \beta X βX 为0时,Cox模型只与风险基准函数有关。
      2. X : X: X:是引子中提到的主观因素,在Cox模型中叫做协变量,不同的研究个体有不同的协变量,从公式中可以看出他对于风险率是有影响的。
      3. β \beta β:协参数,类似线性回归里的参数向量,他也是一个向量,向量的长度同主观因素的个数是相同的(类似线性回归特征个数和参数个数相同),我们建立模型过程大部分的精力就是放在求解协参数β上,求解用到了部分似然估计
      参数估计:对偏似然函数,采用极大似然估计,使得当前样本出现的概率最大。
      抛开公式 假设研究某个对象在时间t的生存概率,影响生存概率的因素可以总结为两大类,一是时间,二是主观因素。
      时间:
      主观因素:一个
      随着时间的推移,死亡概率一定会不断增大,同时受到主观因素的制约,至于该主观因素是提高死亡率还是降低死亡率,每个个体情况并不相同。
      生存分析之Cox模型简述与参数求解: link.

    • 另一种半参数线性预测模型是ThresReg,主要研究事件首次发生事件FHT(First Hitting Time),与Cox比例风险模型不同的是,假设个体的风险函数是某个固定形式的带参数的随机过程,而不再是一个不随时间变化的风险比例
      在这里插入图片描述
      其中,随机过程P(t)是一个维纳过程(Wiener Process),它含有初始状态参数 S 0 S_0 S0和模型参数 μ \mu μ,这些参数和协变量通过链接函数ln( s 0 s_0 s0)= λ 1 T x \lambda_1^Tx λ1Tx, μ = λ 1 T x \mu=\lambda_1^Tx μ=λ1Tx建立联系。参数 λ 1 , λ 2 ∈ R m \lambda_1,\lambda_2\in\R^m λ1,λ2Rm通过极大化的下式所示的对数似然估计函数估计得到
      在这里插入图片描述
      其中 y ^ t i \widehat{y}_t^i y ti表示FHT模型预测的个体i在t时刻首次发生事件的概率,I()表示指示性函数,FTF模型的输出最终为个体首次发生事件时间的概率分布

    参数方法

    线性回归和加速失效模型,基于各种分布假设直接研究生存函数,这一类可以用于预测个体生存函数的全参数模型也是线性模型,同样需要承受线性模型带来的限制。

    生存分析机器学习模型

    传统模型为线性模型,基于机器学习的模型来学习生存数据中协变量与生存状态之间的非线性关系,常见的机器学习模型主要包括 支持向量机决策树模型深度神经网络等。

    生存分析研究的内容

    1.描述生存过程

    研究生存时间的分布特点(可按照年龄、性别等分组),比较不同组件的分布特点,估计生存率及平均存活时间,绘制生存曲线等,根据生存时间的长短,可以估算出各个时点的生存率,并根据生存率来估计中位生存时间,也可以根据生存曲线分析其生存特点,一般使用Kaplan-Meier法和寿命表法。
      Kaplan-Meier法:

    2.比较生存过程

    可通过生存率及其标准误对各样本的生存率进行比较,以探讨各组间的生存过程是否存在差异,一般使用Log-rank检验和Breslow检验。

    3.分析危险因素

    是通过生存分析模型来探讨影响生存时间和终点事件的保护因素和不利因素,因素作用的大小及方向,相对危险度的大小,基本使用Cox回归模型。

    4.建立数学模型

    建立最终的数学模型,也是通过Cox回归模型完成。

    研究思路

    1.数据

    数据集的选取、预处理、数据分布
    收集patient的个人信息、临床信息,处理得到模型规定的输入特征
    进行表示学习:采用深度学习方法

    2.模型设计

    复发预后模型设计???
    将患者的特征输入至上述建立好的模型,讲过模型内部的判断、计算、决策,输出模型对患者复发概率的估计值
    两种策略:

    • sole prediction:一次性预测,结果为二分类,发生或者不发生。输入:五年的生存数据,输出:第五年的生存结果
    • probability dependence on time:随时间变化的概率。输入:五年的生存数据,输出:

    3.实验部分(对比分析)

    4.可解释性

    首先,使用Kaplan-Meier方法估计整个数据集人群总体的生存曲线
    建立预后模型,应用:当患者完成初次诊断后,可以收集其个人信息和临床信息,整理得到模型规定的输入特征,然后,将患者的特征输入至上述建立好的早期癌症患者复发预后模型,经过该预后模型内部的判断、计算、决策、输出预后模型对该患者初次诊断后复发概率的估计值。最后,由模型给出的复发概率估计值,经过转化得到该患者的估计生存曲线。该曲线刻画了不同随访时长内,该患者生存(即未出现复发)的概率。最终,医生可以参考由早期乳腺癌患者复发预后模型给出的生存曲线估计,解读该患者5年内出现复发的概率,或者了解该患者的复发风险趋势,从而结合实际情况制定治疗方案或进行提前干预以减轻患者的负担。
    因子分析
    重要性排序,在进行模型建立后,使用该模型寻找对早期乳腺癌患者初次诊断后复发有重要影响的因子,或者探究不同因子的影响模式,即模型特征解释性在实际生存分析应用中是被要求的。
    治疗推荐

    展开全文
  • SPSS-生存分析

    2018-10-20 10:34:00
    生存分析 定义:一些医学事件所经历的时间:从开始观察到事件发生的时间,不是短期内可以明确判断的。针对这类生存资料的分析方法叫生存分析生存分析的基本概念1.终点事件终点事件outcome event:失效事件 ...
  • python 生存分析 机器学习 , 编程 , 统计 (Machine Learning, Programming, Statistics) Author(s): Pratik Shukla 作者:Pratik Shukla This article covers an extensive review with step-by-step ...
  • 拓端tecdat|R语言生存分析可视化分析

    千次阅读 2019-08-08 23:51:16
    生存分析对应于一组统计方法,用于调查感兴趣事件发生所花费的时间。 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, “事件历史分析”的社会学 在工程的“故障时间分析”。 在癌症研究中,典型...
  • 生存分析的一些整理笔记

    千次阅读 多人点赞 2020-10-28 22:41:13
    生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法 一、生存分析 1、生存分析的三个研究内容: 生存描述-描述不同时间的总体生存率,计算中位生存时间,绘制生存函数曲线,一般...
  • 生存分析及生存曲线_2021-01-30

    千次阅读 2021-01-30 17:18:23
    生存分析(英文:Survival Analysis),是生物信息学分析中常用到的一种重要方法,主要分析场景如:不同组癌症病人在一种或者一种以上的变量作用下其生存概率随着记录时间发展而发生的变化或者走势。这条曲线(或多...
  • 生存分析及R实现

    千次阅读 2020-02-26 13:40:30
    生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法 其主要应用领域: Cancer studies for patients survival time analyses(临床癌症上病人生存分析) Sociology for ...
  • 生存分析(1)

    万次阅读 多人点赞 2017-08-29 15:57:51
    一、基本概念和名词解释 二、统计概念和名词解释 三、生存资料统计学处理
  • [转]生存分析之Kaplan-Meier曲线

    千次阅读 多人点赞 2020-10-26 20:59:18
    转载自画说统计 | 生存分析之Kaplan-Meier曲线都告诉我们什么 临床研究中,存在这样一类研究,我们关注的临床结局是一个事件,比如:死亡,复发,症状消失,疾病痊愈等等。在很多情况下,我们不仅关注事件是否发生,...
  • [转]生存分析-1

    2020-10-28 19:29:57
    转自生存分析(1) 临床研究中,生存分析对于一项干预措施或者是危险因素的评估是一种关键方法。生存分析对应于一组统计方法,用于调查感兴趣事件发生所花费的时间。生存分析的概念是广泛的,可以是指通常意义下的...
  • 生存分析(survival analysis)

    千次阅读 2016-12-06 09:48:00
    一、生存分析(survival analysis)的定义 生存分析:对一个或多个非负随机变量进行统计推断,研究生存现象和响应时间数据及其统计规律的一门学科。  生存分析:既考虑结果又考虑生存时间的一种统计方法,并可充分...
  • 生存分析函数小结

    万次阅读 2013-12-24 14:52:37
    生存分析(survival analysis)适合于处理时间-事件数据。例如中风病人从首次发病到两次复发,其中就涉及到时间和事件。此例中时间就是复发的时间间隔,事件就是是否复发。如果用普通的线性回归对复发时间进行分析,...
  • 旨在对生存分析有个直观认识(做什么,怎么做),每一步的详细的内容后续补充,不懂得百度英文资料。主要参考方积乾老师的“生物医学研究的统计方法” 生存分析是将重点时间的出现与否和出现终点事件所经历的时间...
  • R语言中的生存分析

    千次阅读 2019-09-25 16:03:53
    生存分析是研究生存时间的分布规律,以及生存时间和相关因素之间关系的一种统计分析方法 其主要应用领域: Cancer studies for patients survival time analyses(临床癌症上病人生存分析) Sociology for ...
  • 使用kmplot在线进行生存分析

    千次阅读 2019-06-30 20:23:00
    欢迎关注”生信修炼手册”!kmplot是一个生存分析的在线工具,最初是设计用来对肝癌中的miRNA进行生存分析,对应的文章发表在scientific reports上,链接如下https...
  • 第1部分:生存分析简介 本演示文稿将介绍生存分析 ,参考: Clark, T., Bradburn, M., Love, S., & Altman, D. (2003). Survival analysis part I: Basic concepts and first analyses. 232-23...
  • 生存分析详细解读

    2019-06-26 19:11:00
    欢迎关注”生信修炼手册”!探究变量之间的关系是数据挖掘中的一个基本分析内容,对于常规的离散型或者连续型变量,有很多的方法可以用于挖掘其中的关系,比如线性回归,逻辑回归等等。然而有一类数据...
  • survminer的基础用法指南本文全部代码及示例数据领取:公众号后台回复surv领取。生存分析是将事件的结果和出现这一结果所经历的时间结合起来分析的一类统计分析方法。不仅考虑事件是否出现...
  • 第19章 生存分析 思考与练习参考答案 一最佳选择题 1. 下列有关生存时间的定义中正确的是 E A流行病学研究中从开始接触某危险因素至某病发病所经历的时间 B乳腺增生症妇女治疗后阳性体征消失至首次复发的时间 C肺癌...
  • SPSS教程之生存分析的Cox回归模型(比例风险模型)

    万次阅读 多人点赞 2016-04-05 19:22:27
    最近有同学问师兄,“最近我要做生存分析,可是我不太会,也不太懂,师兄能不能教教我”,好吧,今天开一贴,讲讲这个。有同样的问题的同学可以一起来看看,毕竟在临床、科研上,这方面知识还是很受用的。有什么想跟...
  • 在本文中,我们描述了灵活的竞争风险回归模型。回归模型被指定为转移...我们将这些方法应用于Pintilie(2007)的滤泡细胞淋巴瘤数据,其中竞争风险是疾病复发和没有复发的死亡。 工作实例:滤泡细胞淋巴瘤研究 ..
  • 局部似然(partial likelihood):L...其中i,j均为样本编号,E=1表示终止事件(死亡、复发)发生;R(T_i)表示满足T_j>T_i条件,对应的损失函数(定义为neg log partial likelihood loss):l=-\log L=-\sum\limits_{
  • 生存分析中常研究单个终点事件的情况,如死亡;但是实际中许多慢性病会出现复发的状况,这也就意味着对于个体会多次发生events,此时我们称之为重复事件(recurrent events)。 一般研究重复事件会将其视为计数过程或...
  • 要想做基于影像组学的生存分析,肯定是离不开和医院的合作,因为你要拿数据啊,医院出数据,你提供算法,俩人共同第一作者……下面以预测某癌症手术后的复发为目的,按处理顺序来讲一下这个大概是要怎么做。...
  • MatSurv是用于MATLAB(版本2016b及更高版本)的简单生存分析功能,可创建带有风险表的KM图。 还计算了生存统计数据,例如对数秩p值和危险比(HR)。 对数秩检验已经过评估,得出与SAS和R相同的结果。使用输入参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 461
精华内容 184
关键字:

复发生存分析