您好,欢迎您

中国循证医学杂志 | 根据Kaplan-Meier曲线提取生存数据的系统化方法

2022年12月05日
作者:赵恩慧, 黄丽红 
来源:中国循证医学杂志

生存数据(survival data)是临床随访研究中最常见的资料类型之一,其中患者生存时间为连续性变量,结局则为二分类变量,基本要素包含生存时间和结局事件发生与否。由于失访、意外死亡等原因,部分研究对象有时无法观察到确切的生存时间,仅可获得患者至少存活时间,这种现象称为删失(censoring)。对于生存资料需要同时考虑结局和生存时间,生存分析(survival analysis)则是对考虑了上述2种基本要素的生存资料的统计分析方法,并可充分利用删失数据所提供的不完全信息。生存分析广泛用于研究各类影响因素与生存时间和结局的关系,不但分析影响因素是否与结局相关,也可分析影响因素与结局出现的时间关系。

生存分析已形成了一套较为完善的理论体系。生存数据往往呈现非正态分布,因研究不同可呈指数分布、Weibull分布、对数正态分布、Gamma分布等一系列复杂情况。如果资料确实服从某种特定分布,采用参数法对资料进行分析会更加准确并有更高效能,但大多数生存资料分布是不规则的、不确定的或未知的,因此非参数分析法在生存率的估计中应用更为广泛。对随访资料生存曲线进行描述时,常用到中位生存时间或某个时间点的生存率,但当失访发生较早时,无法直接计算中位生存时间,常通过乘积-极限法(product-limit,PL)进行估计,又称Kaplan-Meier法。采用该方法估计的生存率变化曲线呈阶梯形,不受生存时间分布类型的限制,属于非参数估计。在许多有关预后的研究中会提供Kaplan-Meier曲线图,但生存资料的原始数据一般在论文中不会直接给出,但在对已发表的生存数据研究进行二次分析和开展统计方法学研究时,获取每个患者的原始数据至关重要。例如,在Meta分析中,基于患者个体数据(individual patient data,IPD)的分析是保证准确性的基础之一,也是研究Meta分析亚组分析的必备前提。将Meta分析结果应用于指导临床决策时,基于IPD的分析结果尤其重要。

既往研究者提出使用Engauge Digitizer软件和Excel软件完成生存曲线提取生存数据的方法,但需额外软件操作进行图片去色处理,在使用Excel程序计算补全IPD时还需填入未知参数(比如随访时间范围),大大限制了该方法的推广和应用。本研究针对实际应用问题,进一步探讨从已有Kaplan-Meier曲线中提取原始生存数据的改进方法,结合实例展示具体实施步骤,并通过对比提取数据和原有数据的Kaplan-Meier曲线和统计量预测值,验证数据提取方法的正确性和可行性,为生存资料的有效二次利用提供参考。

1   方法

1.1   从已发表的Kaplan-Meier曲线中提取数据

本研究选择操作相对简单,并可公开获取的图像编辑软件GetData Graph Digitizer(https://getdata.com/)进行图形数据的提取。原始生存曲线图应当有足够的清晰度以保证数据点的识别,建议图片清晰度在300 dpi以上,推荐使用png或pdf格式。使用GetData Graph Digitizer软件提取图片信息时,按照以下步骤进行:

1.1.1   Kaplan-Meier曲线图片导入及数据读取范围设定

将从文献中获得的Kaplan-Meier曲线图导入GetData Graph Digitizer软件,根据图片确定坐标轴原点,以及横、纵坐标轴的范围。此步骤可在原图基础上重新构建二维坐标系,在新建二维坐标系中,通过(x,y)即坐标取值来表示原图的各个数据点,从而模拟原始数据,重构原图曲线。

1.1.2   生存数据提取和导出

选择连续取点工具对原图中的生存曲线进行连续取点,在GetData Graph Digitizer软件中把鼠标移动到相应位置即可自动识别取点区域。若在原图的同一个坐标系中有多条曲线,可设置不同线型或颜色加以区分。取点完成后获得各点横、纵坐标,可导出二列多行表,每一行代表一个数据点的时间(x)和生存率(y)。

1.1.3   生存数据的预处理

提取生存数据后,一般要对数据进行简单的预处理,如将数据按照不同处理组的生存曲线分为不同文件等。另外,曲线后一个时间点的生存率应该小于或等于前一个时间点,但因软件识别曲线进行数据自动提取时可能出现后一个时间点生存率略大于前一个时间点的情况,此时需要对数据进行合理整理,此步骤也可通过R软件中的preprocess函数完成。

1.2   生存数据重构

一般情况下,研究对象的删失数据无法从原始文献中直接获得,需通过已有数据进行估计。Kaplan-Meier曲线原始图形下方通常会展示各时刻的风险人数,是估计删失数据所需的重要信息。本研究使用Guyot等提出的算法进行删失数据的估计。此算法假设在理想情况下,每个时间间隔内删失发生的速度是恒定的,使用原始文献中提供的各时刻风险人数可估计每个时间间隔中删失的个体数目,从而估计各个时间段中研究对象的删失数量。

本文利用R软件对由原图提取出的数据进行生存资料和生存曲线的重构,主要使用R包IPDfromKM[8]中的函数:

① preprocess函数:使用preprocess函数将已提取出的原始坐标预处理为重建IPD的适当格式,如每两个同一生存时间的数据点随机保留其中一个、出现后一时间数据点生存率高于前者时均以前者生存率替代,从而获得各个数据点时间和生存率,以及所设定时间间隔内的风险人数。

② getIPD函数:使用getIPD函数重建IPD,获得从Kaplan-Meier曲线中估计出的个体患者数据,即时间、结局和处理组三列表,包括每个时间间隔内风险人数、估计的删失人数及发生结局事件的人数表。对两组分别进行Kolmogorov-Smirnov检验,同时可调用plot函数分别绘制两组的重构IPD和原Kaplan-Meier曲线生存率和风险人数的比较图,判断两组重建IPD绘制出的曲线和各自原Kaplan-Meier曲线是否可看成同一分布,从而验证方法的准确性。

③ 其他函数:可借助survreport函数、ggsurvplot函数绘制包含两组重构IPD的Kaplan-Meier曲线和累积危险曲线图,并和原Kaplan-Meier曲线的生存率和各时间段风险人数进行比较,再次验证重构方法的准确性。

运用上述R函数,可对生存曲线中提取出的数据及各时间段的风险人数进行计算,补全各个时间段的删失数据,获得IPD数据。并通过绘制重构生存曲线和累计危险度曲线,采用假设检验和图形对比判断重构IPD的准确性。

2   实例

本研究以2016年Reck等发表的研究为例,该研究随机抽样305例晚期非小细胞肺癌患者并按1∶1比例随机分配到帕博利珠单抗组(pembrolizumab group)或化疗组(chemotherapy group),研究者分别随访了两组治疗后的生存情况。以下展示从Kaplan-Meier曲线中提取数据、重构IPD及绘制生存曲线并和原图进行比较的具体过程。

2.1   从Kaplan-Meier曲线中提取数据

2.1.1   图片导入、生存数据提取及导出

首先利用GetData Graph Digitizer软件,设置合适的横纵坐标轴间隔和范围(图1),获取原始图片中Kaplan-Meier曲线各个点的坐标(图2),导出坐标数据并进行整理,控制生存率单调下降且时间和生存率都有合适的度量衡。

20221205154131_fileHXYY_PIC__zgxzyxzz_2022_11_PIC_202206117-1.jpg

图1 软件中设置横纵坐标轴

20221205154221_fileHXYY_PIC__zgxzyxzz_2022_11_PIC_202206117-2.jpg

图2 获取原图片Kaplan-Meier曲线的点坐标

2.1.2   生存数据预处理

在对提取出的坐标数据进行重构前,首先对原始数据点进行适当的预处理。清理同一生存时间重叠的数据点及由于软件取点时识别误差导致后一个时间生存率高于前一个时间的数据点,使得清理后的数据生存率单调递减,获得各个数据点时间和生存率两列表及每个时间间隔内风险人数表。数据预处理如下:

#使用preprocess函数将原始坐标预处理为重建IPD的适当格式#

• pre_radio<-preprocess(dat=df,trisk=radiationdatatrisk,nrisk=radiationdatatrisk,nrisk=radiationdataradio,totalpts=NULL,maxy=1)

• pre_radio_plus<-preprocess(dat=df1,trisk=radiationdatatrisk,nrisk=radiationdatatrisk,nrisk=radiationdataradioplus,totalpts=NULL,maxy=1)

dat:指定两列数据集,此处定义为df、df1(df为帕博利珠单抗组,df1为化疗组),是使用图形处理软件从两条Kaplan-Meier曲线中提取的数据点坐标,第一列为生存时间,第二列为生存率;

trisk:原文献中提供的报告风险人数的时间点,此处定义为radiationdata$trisk;

nrisk:各个时间点的风险人数,通常也是由原文献提供,此处定义为radiationdata$radio;

totalpts:初始患者数,默认值为NULL;

maxy:生存概率度量衡,本例使用十进制故取1。

2.2   生存数据重构

2.2.1   删失数据补全及重绘Kaplan-Meier曲线和原图的比较

利用getIPD函数,使用上一步函数的输出结果来重建帕博利珠单抗组和化疗组的IPD,并展示两组补全后的各个时间段的删失情况(表1)。对两组分别进行Kolmogorov-Smirnov检验,帕博利珠单抗组的D值为0.153,P值为0.232,化疗组的D值为0.144,P值为0.305,两组检验P值均大于0.1,可认为帕博利珠单抗组和化疗组的重建IPD绘制的Kaplan-Meier曲线和原图一致。使用plot函数分别绘制帕博利珠单抗组和化疗组的重构IPD和原生存曲线在生存率和各时间段的风险人数的比较图(图3),可见两组均差别较小,说明数据重构方法具有较好的准确性。

我是表头

微信图片_20221205155004.jpg

20221205154456_fileHXYY_PIC__zgxzyxzz_2022_11_PIC_202206117-3.jpg

图3 重构曲线和原生存曲线数据的比较。a:帕博利珠单抗组;b:化疗组。

#利用getIPD函数重建IPD并检验重构效果#

•est_radio<-getIPD(prep=pre_radio, armID=0,tot.event=NULL)

•est_radio_plus<-getIPD(prep=pre_radio_plus, armID=1,tot.event=NULL)

• print(est_radio)

• print(est_radio_plus)

prep:接受preprocess函数输出的数据集,本例为pre_radio和pre_radio_plus,分别代表帕博利珠单抗组和化疗组;

armID:设置重建IPD的各组标签,此处将帕博利珠单抗组定义为0,化疗组定义为1;

tot.event:事件总数,默认设置为NULL;

est_radio、est_radio_plus:getIPD函数返回的两组IPD对象名,本例中分别代表帕博利珠单抗组和化疗组。

#使用plot函数分别绘制两组重构IPD和原Kaplan-Meier曲线的比较图#

• plot(est_radio)

• plot(est_radio_plus)

除使用getIPD函数后调用plot函数之外,也可采用以下方式进行重构数据和原曲线对比。重新绘制包含帕博利珠单抗组和化疗组的Kaplan-Meier曲线,设置曲线的各个参数,展示补全的各时间段的删失人数及风险人数,并和原始生存曲线进行对比(图4)。重构IPD和原图的生存曲线对比同样表明,重构的Kaplan-Meier曲线和风险人数表与原始数据非常相似,再次证明所述方法获得的生存数据准确性较好。

20221205154617_fileHXYY_PIC__zgxzyxzz_2022_11_PIC_202206117-4.jpg

图4 Kaplan-Meier曲线及参数比较。a:原图;b:重构IPD。

2.2.2   绘制累积风险曲线

运行survreport函数,将两组的Kaplan-Meier曲线和累积风险都展示在图中,并展示生存率为0.50、0.75、0.95时对应的生存时间。

#运行survreport函数绘制重建IPD的Kaplan-Meier曲线和累积风险曲线#

•survreport(ipd1=est_radioIPD,ipd2=estradioplusIPD,ipd2=estradioplusIPD,arms=2,interval=8,s=c(0.50,0.75,0.95))

ipd1、ipd2:定义绘制两条曲线的数据,此处定义为两组分别的重构IPD即est_radioIPD、estradioplusIPD、estradioplusIPD;

arms:组数,本例设置为2;

interval:时间间隔数,本例设置为8;

s:对应生存时间的指定生存率,本例设置为0.50、0.75、0.95。

3   讨论

准确完整的原始数据是各类统计分析的基础,尤其在需要将多种来源的数据纳入分析时,对IPD进行收集、重构、验证和重新分析可提供较高水平的证据,因此获得IPD至关重要。临床研究的研究者会利用生存分析来评价不同疗法对患者的疗效,但此时针对同一疗法的不同研究多是在不同人群中开展的,而在疗效评价上常需要综合考虑多类不同的研究人群,所以获得多个研究的IPD并对数据进行整合分析十分重要。但已发表的研究通常不会直接提供原始数据,所以需要利用各种软件和方法对公开可得的图片及曲线进行处理,以获得相对准确的生存数据,从而方便重新进行数据整合和进一步分析。

目前已有许多研究者注意到IPD的重要性,曾有研究完成了生存曲线中IPD的提取、重构和合并,以进行生存数据的Meta分析,并取得了良好的效果,但是在图片处理和数据重构的过程中操作较为繁琐,而且可能需要研究者对一些未知参数进行估计,降低了重构数据的准确性。本文则提供了一系列操作步骤来实现如何从已有的Kaplan-Meier曲线中提取原始生存数据来重建IPD,并使用实例展示了各步操作。实例中利用假设检验和图形对比分别比较了两个处理组重构数据绘制的生存曲线和原图生存曲线,并利用两组重构数据绘制了包含两组的Kaplan-Meier曲线,且重新绘制的曲线和原文献提供的曲线图也非常相似,从而验证了本文使用的数据提取和重构方法有较好的可行性和准确性,可为需要生存数据的一系列研究提供获取IPD的一种有效方法。

需要注意,本研究提供的方法要求生存曲线提供各个时间段的风险人数。虽然多数研究会在提供生存曲线的同时提供这类数据,但是也有部分研究不提供或缺失,此时如何计算生存分析中的删失情况并重构数据有待进一步研究。另外,本研究在对删失数据进行重构时,需首先假设生存研究中单个时间间隔内删失情况的发生速度是均衡的,但该假设是建立在删失情况的发生不受和时间有关的混杂因素影响的基础上,实际情况下删失的发生往往不能以随机发生一概而论,因此对删失数据的重构需要对研究中有关因素进行更多考虑。

参考文献

赵恩慧, 黄丽红. 根据Kaplan-Meier曲线提取生存数据的系统化方法. 中国循证医学杂志, 2022, 22(11): 1358-1364. doi: 10.7507/1672-2531.202206117


排版编辑:Mathilda


               
研值圈Sci Value Hub—为医疗创新贡献价值
微信图片_20220721185803.jpg