临床试验-肿瘤:研究终点以及生存数据的介绍中谈到肿瘤临床试验终点对应的两类数据类型——率和生存数据。这篇文章从生存数据出发,介绍肿瘤试验中的ADTTE数据集的构建。
生存数据相关内容参考Statistical Methods for Survival Data Analysis; ADTTE相关内容参考ADaMIG v1.2以及The ADaM Basic Data Structure for Time-to-Event Analyses。
欢迎关注,SAS茶谈,后台回复:ADTTE,获取相关文档。
1. 什么是生存数据?
生存数据可以广义地定义为到给定事件发生的时间 (the time to the occurrence of a given event),也叫做生存时间 (Survival time),这类数据也被称为Time-to-event。ADaM中的ADTTE数据集 (Time-to-Event Analysis Dataset) 就是用来保存生存数据。
这里的生存时间并不单指存活时间,给定的事件可以是疾病进展、特定疗法的疗效、疾病复发或死亡。因此,生存数据可以是无肿瘤时间、从治疗开始到疾病缓解的时间、研究开始到死亡的时间。生存数据可以包括总生存期、给定治疗的疗效,以及与疗效、生存和疾病进展相关的患者特征。
生存数据的相关研究,侧重于预测特定疗法疗效、患者存活或平均寿命的概率,比较试验对象的生存分布,以及确定相关风险因素。
当然,生存数据也不单单局限于生物医药领域,对应的方法也可应用于工业、商业与社会科学中。例如,电子设备的寿命(可靠性工程),重罪犯人的假释时间(犯罪学),首次婚姻的持续时间(社会学)。
这篇文章的介绍内容,是基于临床试验中的生存数据。
2. 生存数据的删失
医学研究中生存数据有一个非常显著的特点,在研究结束时,一些个体还没有出现所关注的事件。
例如,在研究结束时某些病人处于存活或疾病缓解的状态,关注的死亡事件并没有出现,那么这些个体的确切的总生存期是不知道的。对应的数据观测称之为删失观测或截尾观测。
在研究过程中,某些病人还可能由于各种原因脱落而无法观测到所关注的事件发生,这些也被称为删失观测。
在大多数临床试验研究中,由于受经费和时间的限制,最终观察时点是固定的,无法无限延长。同时,根据医学伦理,受试者在试验中任何时候都有权退出试验。除此之外,还可能有其他原因导致未观察到目标事件。
所以,在肿瘤临床试验中,生存数据的删失是比较常见的。这类删失通常称为III型删失(有始无终),具体删失类型可以参考Statistical Methods for Survival Data Analysis (Page 15)。
这种情况下,个体确切的生存时间是不知道的,研究中会寻找一个删失时间 (censored time) 纳入分析。至于寻找一个什么样的时间作为删失时间,在项目的SAP中都会有明确的说明 (Censor Rule)。
如果简单地把删失时间纳入分析,那结果就会偏保守(实际生存时间长于观察到的时间)。针对这种情况,统计学家发明了特定的统计方法来进行分析,即所谓的生存分析。
用于生存分析的生存数据由两个变量构成:一个是表示时间长短的数值型变量,一个是表示事件状态的分类变量(事件发生、事件删失)。这两个变量是ADTTE数据集的核心,数据集围绕这两个变量进行构建。
3. 肿瘤临床试验中的生存数据
前面文章提到,肿瘤临床试验常用的终点有两类:
- Overall Survival(总生存期)
- Endpoints Based on Tumor Assessments(基于肿瘤评估的终点)
OS是生存数据,其结局事件是死亡;而基于肿瘤评估的终点可能是分类数据,也可能是生存数据,都与肿瘤评估结果有关。
这里的肿瘤评估,通常是指肿瘤的影像学评估。不同类型肿瘤会有不同的评估标准,例如,之前介绍的实体瘤评估标准RECIST1.1,其最佳总体疗效 (BOR) 有5个评估结果:完全缓解 (CR)、部分缓解 (PR)、疾病稳定 (SD)、疾病进展 (PD)以及无法评估 (NE)。
临床试验-肿瘤:ADRS的构建中提到,ADRS数据集主要保存分类数据,分类数据包括BOR分类,以及根据BOR分类进一步衍生的其他分类数据,例如:
- BOR的取值:CR、PR、SD、PD、NE
- 是否达到客观缓解 (OR-CR、PR):Y、N
- 是否疾病控制 (DC-CR、PR、SD):Y、N
以上评估结果的分类,可以作为第二类终点中生存数据的目标事件。这类生存数据举例如下:
- DOR, Duration of Response
- DOSD, Duration of Stable Disease
- PFS, Progression-Free Survival
- TTP, Time to Progression
- TTR, Time to Response
对于这些终点,不同公司可能有自己的删失时间标准与考量 (Censor Rule),对应不同的终点变体,这里不再进一步探讨。
4. ADTTE的构建
ADTTE用于保存生存数据,大多数情况下其结构为BDS结构,即数据集会包含每个受试者、每个分析参数的一条或多条记录。
4.1 ADTTE中的特殊变量
生存数据定义为到给定事件发生的时间 ,针对生存数据的特点,ADTTE数据集中定义了一些特殊的变量,用以描述生存数据。也就是说,ADTTE由常规的BDS数据集变量与这些特殊变量共同构成。
ADaM IG中3.3.6节,对这些特殊变量有简短的介绍。
4.2 ADTTE中生存数据的呈现
属于生存数据的肿瘤终点,根据数据特点,会通过一系列变量进行呈现。
分析参数变量PARAMCD
、PARAM
用于保存试验中的具体终点信息。
前文第2节提到,生存数据由两个变量构成:一个是表示时间长短的数值型变量 (AVAL
),另一个是表示事件状态的分类变量 (CNSR
)。在ADTTE中,这两个变量还有对应的描述变量CNSDTDSC
、EVENTDESC
。
下面会具体介绍TTE相关变量,相关说明参考The ADaM Basic Data Structure for Time-to-Event Analyses。
4.2.1 PARAMCD / PARAM
在实际工作中,ADTTE分析参数的取值需参考各家公司标准以及各个项目SAP的说明。
常见的肿瘤生存数据终点如下:
- PARAMCD = "OS" / PARAM = "Overall Survival"
- PARAMCD = "DOR" / PARAM = "Duration of Response"
- PARAMCD = "DOSD" / PARAM = "Duration of Stable Disease"
- PARAMCD = "PFS" / PARAM = "Progression-Free Survival"
- PARAMCD = "TTP" / PARAM = "Time to Progression"
- PARAMCD = "TTR" / PARAM = "Time to Response"
考虑到时间有度量单位的区别,分析参数可能包含单位信息,例如:
- PARAMCD = "OSD" / PARAM = "Overall Survival (Days)"
- PARAMCD = "OSM" / PARAM = "Overall Survival (Months)"
各家公司对于肿瘤试验终点可能有自己的考量与标准,相关指标可能有相应的变体,分析参数可能包含变体信息,例如:
- PARAMCD = "PFSV1D" / PARAM = "Progression-Free Survival Variant 1 (Days)"
- PARAMCD = "PFSV1M" / PARAM = "Progression-Free Survival Variant 1 (Months)"
4.2.2 CNSR
变量CNSR
用于说明删失是否发生。ADaM IG中,强烈建议使用CNSR = 0
来表示删失未发生(即目标事件发生);CNSR = positive integers
来表示删失发生(即目标事件未发生)。
通常变量CNSR
取0和1两个值。IG中也有说明,对于不同原因造成的删失,CNSR
可以取不同的正整数值,TTE分析文档中也有相关示例说明。不过,具体操作也要参考各家公司的内部标准。
4.2.3 EVNTDESC
变量EVNTDESC
用于描述目标事件或造成删失的事件。
这一块可以参考TTE文档中的第1个例子:
举例中,目标事件为死亡。研究期间,观测到受试者1和5发生了目标事件,没有发生删失 (CNSR = 0
),事件的描述信息为死亡 (EVNTDESC = "DEATH"
);对于其余受试者,并未观察到目标事件发生,即发生删失 (CNSR = 1
),造成删失的事件(原因)保存在变量EVNTDESC
中。
变量EVNTDESC
通常有提前定义的CT取值。
4.2.4 STARTDT
生存数据中表示时间长短的数值型变量,是通过终点时间与起点时间作差来获取。变量STARTDT
用于记录起点时间,对于各个生存数据研究终点,SAP中会明确定义这个变量的取值,通常不会为空。
常见终点的STARTDT
取值如下:
- OS: Randomization date / First dose date
- DOR: Response start date
- DOSD: Stable disesse date
- PFS: Randomization date / First dose date
- TTP: Randomization date / First dose date
- TTR: Randomization date / First dose date
对于随机化试验,有些起点时间选取随机化时间;对于非随机化试验,有些起点时间选取的是首次给药时间。
4.2.5 ADT
变量ADT
用于保存计算时间长短的终点时间,这个变量的衍生会相对复杂一些。
当目标事件发生,即CNSR = 0
时,ADT
保存事件的发生时间;当目标事件未发生,即CNSR = 1
时,ADT
保存依据Censor Rule确定的删失时间。
对于事件删失的各种情况,各家公司或各个项目都会有确定删失时间的Censor Rule,SAP中会有详细说明,这里不再进一步探讨Censor Rule的具体内容。
我个人将删失分为简单删失与复杂删失。
何为简单删失?如果造成删失的事件的开始时间,会作为删失时间,那么这类删失称为简单删失。这种情况下,不需要额外的变量对删失时间进行描述说明。
以TTE文档中的第1个例子进行说明。
目标事件为死亡,受试者2、3、4与6发生删失,按照提前定义的Censor Rule,ADT
记录的时间为造成删失的事件的开始时间。
何为复杂删失?如果造成删失的事件的开始时间,不会作为删失时间,而另选取其他时间时,这类删失称为复杂删失。这种情况下,描述删失事件的EVNTDESC
变量已无法描述删失时间,所以就需要额外的变量 (CNSDTDSC
) 对删失时间进行描述说明。
4.2.6 CNSDTDSC
当复杂删失发生时,变量CNSDTDSC
用于描述此时的删失时间。
以TTE文档中,第3个示例进行说明。
这个例子中,终点为PFS,对应2个终点事件:PD与Death。对于造成删失的每种原因(事件),进行了唯一的正整数编码。
按照既定的Censor Rule,PFS删失时间的并不是直接选取造成删失的事件的起始时间,而另取其他时间。这时,EVNTDESC
变量已无法描述删失时间,需要CNSDTDSC
变量来进行描述。
在实际项目中,考虑到内容的统一,对于简单删失,也会使用CNSDTDSC
变量来描述删失时间。当未发生删失时 (CNSR = 0
),变量CNSDTDSC
值为空。
至于删失时间 (Censor Rule) 如何确定,这属于统计师工作的范畴,这里不再进一步讨论。
4.2.7 AVAL
当事件终点时间与起点时间都确定后,时间长短变量AVAL
通过作差来获取。
AVAL
变量的衍生需要注意时间的单位:
- AVAL (month) = (ADT - STARTDT + 1) x 12 / 365.25
- AVAL (Day) = ADT - STARTDT + 1
- AVAL (hour) = (ADTM - STARTDTM) / 3600
具体衍生规则,以项目SAP中的说明为准。
4.2.8 SRCDOM / SRCVAR / SRCSEQ
这3个变量,用于追溯与分析变量相关的数据来源,通常用于描述变量ADT
的来源。
在肿瘤临床试验中,生存数据所需要的终点时间的来源,一般是ADSL与ADRS中的记录值。在获取相关时间时,保留相关追溯性变量的信息。
ADSL为Subject-Level结构,对于一个受试者来讲,借助SRCDOM = "ADSL"
与SRCVAR = "XXX"
就可以追溯到所用时间取值的来源。
ADRS为BDS结构,对于一个受试者来讲,需要借助SRCDOM = "ADRS"
与SRCSEQ = "XXX"
。
4.3 ADTTE的难点
ADTTE构建的难点在于终点时间的选取,进一步讲,在于发生删失时终点时间的选取。
这个过程中,并不难获取受试者各类相关时间。关于具体删失时间的选取,程序虽不复杂,但很考验SAS Programmer对Censor Rule的理解,这也是ADTTE数据集的重点与难点所在。这一块需要读者仔细研读与理解SAP中的相关内容。
除此以外,有的公司还会构建中间数据集,用于衍生ADTTE。这个中间数据集,会提前抓取用于计算生存数据时间长短的各类时间。相当于将ADTTE的衍生拆分为两部分,过程更加清晰简明,易于操作。
以后会结合实例,对这一块内容进行单独讲解。
总结
这篇文章从生存数据的概念讲起,介绍了生存数据的删失,以及肿瘤临床试验中的各类生存数据。按照ADaM IG与TTE文档,介绍了ADTTE中生存数据的呈现。
ADTTE数据集包含常规的BDS结构变量,以及用于描述生存数据的特殊变量,具体变量衍生细节可以参考TTE文档。
希望这篇文章能够帮助读者进一步理解ADTTE数据集。
感谢阅读, 欢迎关注:SAS茶谈!
若有疑问,欢迎评论交流!
欢迎点赞、转发!
梳理不易,转载请注明出处 (by Jihai / SAS茶谈)