3. 分析数据流设计

ADaM 数据集不是 SDTM 的简单改名或字段搬运,而是围绕“分析意图”重新组织的数据产品。SDTM 面向数据采集与监管递交,强调观测的标准化与可追溯;ADaM 面向统计分析与结果复现,强调分析单元、派生变量、分析时点与人群标记的明确性。因此,从 SDTM 到 ADaM 的核心工作,是建立一条可解释、可验证、可回溯的分析数据流:分析需求先被拆解为分析单元与派生规则,再映射到 SDTM 源变量,最终形成带追溯信息(如 SRCDOM、SRCVAR、SRCSEQ)的 ADaM 数据集。

一、映射逻辑:从“观测记录”到“分析记录”

映射逻辑的起点是分析需求,而不是 SDTM 域本身。以最常见的“不良事件发生率”为例,分析需求可拆解为:分析人群(如安全性分析集 SAFFL=Y)、分析单元(受试者-事件)、分析变量(AEDECOD、AESEV、AESER、AESTDTC)、分析时点(首次给药至末次给药后 30 天)。这些需求决定了 ADaM 中需要保留哪些记录、派生哪些变量。

映射通常分三类:直接映射、转换映射和派生映射。直接映射如 ADSL 中的 AGE 直接来自 DM.AGE;转换映射如将 SDTM 的字符型日期 AESTDTC 转换为数值型 ASTDT;派生映射如根据 AESTDTC 与 TRTSDT 计算 ASTDY(相对首次给药日)。派生映射必须写明算法、输入变量、边界条件与缺失处理,例如“若 AESTDTC 缺失或部分缺失,则 ASTDT 置空,ASTDY 置空,并在分析中按缺失处理”。

需要特别注意的是,ADaM 中的“一行”往往对应一个分析单元,而非一条 SDTM 记录。例如 ADTTE 中一行对应一个受试者-事件或删失,ADAE 中一行对应一个受试者-事件。这种粒度变化必须在映射逻辑中显式说明,否则后续统计程序容易误用。

二、分析需求拆解:把统计问题翻译成数据规则

分析需求拆解建议按“人群—单元—变量—时点—规则”五要素进行。以“主要疗效终点:第 12 周 HbA1c 相对基线变化”为例:人群为 FAS(FASFL=Y);分析单元为受试者-访视;变量为 AVAL、BASE、CHG、PCHG;时点为第 12 周(AVISITN=12);规则包括:基线定义为首次给药前最后一次非缺失值,若基线后多次测量取最接近计划时间点的一次,缺失值不插补但需标记 ANL01FL。

拆解结果应形成一份可执行的“分析需求—数据规则”对照表,作为 ADaM 编程与 QC 的共同依据。表中至少包含:需求编号、分析目的、人群条件、分析单元、目标变量、源域与源变量、派生算法、缺失处理、追溯字段。该表不是形式文档,而是后续数据流图与追溯设计的输入。

三、数据流图绘制:让映射关系可视化

数据流图应表达“源—处理—目标—追溯”四类信息。源侧列出实际使用的 SDTM 域与变量;处理侧列出关键派生步骤与判断条件;目标侧列出 ADaM 数据集与变量;追溯侧标注 SRCDOM、SRCVAR、SRCSEQ 等字段。下图以“ADSL + ADAE + ADTTE”为例,展示从 SDTM 到 ADaM 的分析数据流与追溯关系。

SDTM → ADaM 分析数据流与源数据追溯示意 SDTM 源域 DM AGE, SEX, RACE ARM, RFSTDTC EX EXSTDTC, EXENDTC EXDOSE, EXTRT AE AETERM, AEDECOD AESTDTC, AESER LB LBTESTCD, LBORRES LBDTC, VISITNUM 分析需求拆解与派生 人群标记 SAFFL / FASFL / ITTFL 依据 EX 与 DM 判定 日期与时间派生 ASTDT / AENDT / ASTDY 相对 TRTSDT 计算 分析时点与访视 AVISIT / AVISITN 窗口对齐与 ANL01FL 事件与删失 CNSR / EVNTDESC 依据 AE 与 LB 判定 ADaM 数据集 ADSL TRTSDT, TRTEDT SAFFL, FASFL ADAE ASTDT, ASTDY TRTEMFL, AESER ADTTE AVAL, CNSR PARAMCD, STARTDT ADLB AVAL, BASE, CHG ANL01FL, AVISITN 追溯字段 SRCDOM SRCVAR SRCSEQ SRCSTDTC SRCENDTC SRCSUBJID SRCUSUBJID SRCSEQ SRCDOM 实线:数据映射与派生;虚线:源数据追溯字段回填;追溯字段用于定位每条 ADaM 记录对应的 SDTM 源记录

四、源数据追溯:让每个派生值都能“找到出处”

源数据追溯的目标是:给定 ADaM 中任意一条记录或任意一个派生变量,都能定位到其对应的 SDTM 源域、源变量和源记录序号。常用做法是在 ADaM 中保留 SRCDOM、SRCVAR、SRCSEQ 三个字段。例如 ADAE 中某条记录的 SRCDOM=AE、SRCVAR=AESTDTC、SRCSEQ=1023,表示该记录的 ASTDT 派生自 AE 域第 1023 条记录的 AESTDTC。

对于多源派生变量,追溯字段需要按“主源”填写,并在 Define-XML 或编程说明中补充完整算法。例如 ADTTE 的 CNSR 可能同时依赖 AE 和 LB,此时 SRCDOM 可填 AE 或 LB 中起决定作用的一个,并在注释中说明另一来源。追溯字段不是装饰,而是 QC 与监管核查的关键入口。

五、可复现性设计:从“能跑通”到“可重复”

可复现性要求同一份 SDTM 输入、同一份编程代码、同一份参数配置,在任何时间、任何合规环境中运行,都能得到完全一致的 ADaM 输出。实现要点包括:

  • 版本锁定:记录 SDTM 版本、ADaM 版本、Define-XML 版本、SAS 或 R 版本、宏包版本。
  • 参数外置:将人群定义、访视窗口、基线规则等写入独立参数文件或配置表,避免硬编码。
  • 随机种子固定:若涉及插补或抽样,必须固定随机种子并记录。
  • 运行日志与校验:每次运行输出记录数、变量数、缺失率、派生失败数,并与预期阈值比对。
  • 双人独立编程:关键数据集采用独立编程 + PROC COMPARE 或等价比对,差异需逐条解释。
可复现性检查的最小闭环:输入 SDTM 快照 → 运行 ADaM 程序 → 输出 ADaM 与日志 → 与上一版比对 → 差异归因 → 归档代码、日志、参数与输出。缺少任一环节,复现链条即不完整。

六、一个可执行的追溯与复现检查表示例

检查项 检查内容 判断标准 记录位置
映射完整性 每个 ADaM 变量是否有源域或派生算法 无未定义变量 Define-XML / 映射表
追溯字段 SRCDOM、SRCVAR、SRCSEQ 是否非空且可定位 关键数据集追溯覆盖率 100% ADaM 数据集
人群标记 SAFFL、FASFL 等与源数据判定一致 与独立编程结果一致 ADSL 比对报告
日期派生 ASTDT、ASTDY 与 TRTSDT 关系正确 无负值异常,缺失处理符合规则 ADAE / ADLB 核查
可复现性 同输入同代码输出一致 PROC COMPARE 无差异 运行日志与比对报告

分析数据流设计的最终交付物,不是一张图或一张表,而是一套“需求—映射—追溯—复现”的闭环证据链。只有当每个派生变量都能说清来源、每个分析单元都能对应到明确规则、每次运行都能被独立复现时,ADaM 数据集才真正具备支撑统计分析与监管递交的质量基础。