我们用横轴表达研究的时间轴,随着研究的开始,患者开始纳入研究:
继续我们的观察,开始有患者出现了我们所期待的终点事件,像这样获得了终点事件的观察数据我们称其为完全数据:
当然,也有患者在没有出现所期待的终点事件的情况下离开研究(比如失访的患者)。此类未能获得终点事件发生情况的数据我们称之为删失数据:
随着时间推移,越来越多的患者出现了所期待的终点事件,当然也有不少人悄悄离开:
当然,到了研究结束的时刻,也一定还有对我们不离不弃但一直没有出现预期终点事件的患者不得不离开研究:
面对这样的数据我们应该如何描述他的生存特征呢?很显然,如果我们仅仅把患者按照是否观察到预期的终点事件分为两类显然是不公平的:
因为删失病例完全有可能因为观察时间的不足而导致未来得及发生期待的终点事件。从终点事件的观察角度看,删失数据的信息是不完整的,我们并不知道这样的病例会在什么时刻发生我们期望看到的终点事件而仅仅知道在他的随访时间内,这个病例没有出现期待的终点事件。
在这种情况下,采用生存分析方法才是合理的选择。 其中,Kaplan-Meier方法是帮助我们描述终点事件发生率的有效手段。
首先,我们需要把所有研究对象按照随访时间的长度整齐排列(当然不用手工完成,有软件在,我们明白道理就好):
然后绘制曲线。
曲线的横轴是时间,纵轴是生存率:
也就是说Kaplan-Meier曲线为我们描画了患者生存率随时间变化的特征。他完美的将时间因素考虑在内,各个时间点的生存率值也被称为时点生存率。
线上有许多绿色的十字(有些图线会略去他们,也是可以的),他们对应的是删失数据们的随访时间长度:
生存曲线呈现折线的样子,每一个“台阶”都对应着一个发生终点事件的时间点:
也就是每次有终点事件出现的时刻都会计算一次生存率,把他们用折线连接就构成了生存曲线。
关键的问题来了,这个生存率是怎么算出来的呢?
在研究的起始处,生存率当然是100%:
接下来看第一个事件出现的时刻:
在这个事件发生时,共有12例患者处于观察中,其中一人出现终点事件,死亡1/12=0.0833;生存11/12=0.9167,于是生存率就这样计算出来啦:91.67%。
后面的点又该怎样呢?我们来看第二个点吧:
在这个时段,共有11人坚持随访,其中一人发生终点事件,10人生存。故而生存概率为10/11=0.9091。由于这个时刻的生存情况实在上一个时间点的基础上产生的,所以这个时点的累积生存率也要基于上一个时间点生存率计算,那就是:0.9167×0.9091=83.33%
下面到了第三个事件发生的时刻:
第三个结局事件发生之前,已经有一例删失病例出现,所以到这时,仅余9人在随访过程中,其中一人发生终点事件,生存8/9=0.8889。同样的,基于前一时刻的生存率计算本时刻的累计生存率,就是: 0.8333×0.8889=74.07%
由此可见,Kaplan-Meier方法在计算生存率的过程中充分利用了删失数据所提供的不完全信息。虽然我们不能知道这个病例会在什么时候发生终点事件,但是我们至少知道了在随访时间段内这个病例是没有发生终点事件的。所以在计算累计生存率的时候,在他的随访时间内他被作为未发生结局的病例参与计算。删失后则从观察病例中移除。
如上往复,我们可以获得完整的生存曲线:
可见各时点的累计生存率,是由此前所有时点的生存概率连乘获得的。所以这个推演生存率的方法还有一个很雅致的名字:乘积极限法。
综上,生存曲线为我们描绘了结局事件的显现过程,我们可以把它表达为随着终点事件的出现 ,生存率的下降:
或者改变纵坐标,表达为随着时间推移,终点事件发生率逐渐增高的方式:
当然,也有机会对两条或多条生存曲线给予直观的描绘,还可以进一步通过假设检验表明其差异:
这就是生存曲线,并不复杂但相当有用。