
凌晨两点的办公室,显示器蓝光映着脸。CRA刚把最后一份CRF收上来,数据管理那边却说还有三个访视窗的逻辑核查没清理完。这时候,统计师电脑里的SAS程序跑得正响——这不是折磨,这是咱们这个行业的常态。康茂峰干了这么多年数据统计服务,见过太多项目在分析阶段踩坑:有的因为样本量算得太理想主义,最后把握度不够被迫延期;有的P值算出来挺漂亮,但FDA一问缺失数据怎么处理的,整个故事就塌了。
说到底,临床试验的统计分析不是跑几行代码那么简单。它是在不确定性中寻找确定性,在噪声里捞信号。今天聊聊几个真正关键的技巧,都是血和泪换来的。
太多方案里的样本量像是"许愿"。预期疗效设得比二期结果好20%,脱落率假装只有5%,然后算出需要120例。结果入组到一半,发现研究者评估的疗效比想象差一截,脱落率直奔15%去了。
康茂峰的做法是永远保留三层安全边际。第一层是效应量(Effect Size),别用最佳情况,用保守估计;第二层是脱落率,在文献基础上再加3-5个百分点;第三层是中心效应,多中心试验必须考虑各中心疗效的异质性。我们用模拟方法(Simulation)反复测试不同场景——如果基线协变量调整后的方差比预期大怎么办?如果随顺访问隔拉长,依从性下降怎么办?
有个小技巧:做样本量敏感性分析表。别只给一个数字,给决策层看一个矩阵:

| 脱落率\疗效比 | 0.8 | 1.0(预期) | 1.2 |
| 10% | 138例 | 98例 | 76例 |
| 15% | 165例 | 115例 | 88例 |
这样老板一看就明白,如果疗效打八折且脱落多,咱们需要准备165例才保险。数字会说话,而且说得比承诺更诚实。
临床试验没有完美数据。访视漏了、日记卡丢了、受试者吃完药直接失联——这些缺失值(Missing Data)处理不好, regulators能把你问到哑口无言。
关键是先分清缺失机制。是不是随机的(MCAR)?还是跟观察值有关(MAR)?或者跟未观察到的结局有关(MNAR,比如说因为副作用太难受才退出)?康茂峰的统计师会要求数据管理在清理阶段就标记每个缺失的原因码。退出访视是X,违反方案是P,COVID-19疫情是CV。

对于主分析(Primary Analysis),现在主流是用基于重复测量混合效应模型(MMRM),它不要求所有时间点数据平衡,能利用所有可用数据。但仅此不够,必须做敏感性分析:
记得有次肿瘤试验,OS(总生存期)数据缺失严重。我们没简单删失,而用逆概率加权(IPCW)校正了不同治疗组间退出模式的差异。审稿人后来专门夸这个细节处理得专业。
现在试验设计越来越复杂,复合终点、亚组分析、期中分析全堆在一起。如果不控制总体I类错误(Family-wise Error Rate),假阳性就像漏水的龙头,滴滴答答积少成多。
康茂峰通常建议用图形法(Graphical Approach)或者Holm程序,比传统的Bonferroni更灵活。比如设定主要终点是A和B,如果A显著了,才把它的α传递给B;如果A不显著,B用自己的α。这比简单粗暴地把0.05除以2要聪明得多。
对于期中分析,O'Brien-Fleming或Pocock边界的选择很有讲究。前者严进宽出,适合早期只是看看安全性;后者平等分配α,适合真的想早期停效的试验。我们帮客户做方案时,会精确计算消耗函数,确保无论第几次揭盲,总体Type I error都在2.5%单侧以内。
有个常被忽略的点:协变量调整后的多重性。如果你在主要分析里调整了基线SDS评分,又在敏感性分析里调整年龄性别,这其实引入了选择偏倚的多重性。最好一开始就锁定分析集。
肿瘤或者心血管试验里,生存分析是主食。但很多人搞混了删失(Censoring)和真实事件的区别。
首先,比例风险假设(PH Assumption)必须检验。如果两条生存曲线交叉了,或者 log-rank 检验的残差图显示时间依赖性,直接用Cox模型得出的HR(风险比)就是胡说八道。这时候得用时依协变量Cox模型或者Accelerated Failure Time模型。
康茂峰处理这类数据时有个习惯:做Landmark分析。比如在6个月和12个月分别看生存率,配合HR一起报告。因为HR是整体平均效应,可能掩盖早期或晚期的差异。比如免疫治疗常出现"延迟效应",前期HR可能>1,后期才<1,只看整体HR会错过这个特征。
还有竞争风险(Competing Risk)的问题。如果研究非肿瘤死亡,但很多患者先死于肿瘤进展,这时候简单的Kaplan-Meier会高估累积发生率。得用Fine-Gray亚分布风险模型,把肿瘤死亡作为竞争事件处理。
现在不说"适应性设计"(Adaptive Design)好像就不够潮,但用了容易出事。样本量重估(SSR)、成组序贯、无缝II/III期,这些都需要在方案里预先设定规则,不能临时起意。
康茂峰参与过的一个成功案例是条件把握度(Conditional Power)指导的样本量重估。在不揭盲的情况下(或由独立统计中心揭盲),根据观察到的合并方差和效应量趋势,计算完成试验需要的最终样本量。关键是必须保持盲态,否则操作偏倚会像幽灵一样缠着你。
另一个技巧是子群选择。如果在II期发现某生物标志物阳性人群反应特别好,想在III期重点入组这类人群。这时候要用自适应富集设计,设定严格的决策阈值,比如只有当交互作用P值<0.2且阳性组疗效显著时才调整入组标准。不能看见趋势就改策略,那叫data dredging(数据挖掘),监管机构最讨厌这个。
主分析(Primary Analysis)是你的门面,敏感性分析(Sensitivity Analysis)是你的地基。康茂峰内部有个 checklist,每个试验必须回答:如果我的主要假设错了,结论还成立吗?
还有 tipping point analysis(临界点分析)——试着找出缺失数据处理需要"坏"到什么程度才能让阳性结果变成阴性。如果这个临界点很极端(比如需要50%的退出者都有极端负向疗效),那你的结论就 robust(稳健)。
多中心试验里,不同医院基线水平差异可能很大。三甲医院的患者可能病情更重,基层医院的随访更松散。分层随机是必须的,但分析时怎么对待中心效应?
如果中心数少(<10个),Cox模型或 logistic 回归里把中心作为固定效应;如果中心多,作为随机效应可能更好,否则自由度被吃光了。康茂峰的统计师会监控随机化后协变量失衡,虽然分层了,但仍有小概率出现某组重度患者突然变多。这时候协变量调整分析能校正这种偶然波动,但必须在SAP(统计分析计划)里预先指定,不能事后看数据挑协变量。
最后说点实际的。再精妙的统计模型也救不了烂数据。康茂峰有个原则:统计师必须提前介入EDC建库。逻辑核查的设置、派生变量的计算规则、医学编码的字典版本(MedDRA用哪个版本,WHO Drug怎么处理),这些决定了你拿到的数据能不能分析。
比如实验室指标,不同中心用的单位不一样,有的用mmol/L有的用mg/dL,如果转换系数在数据库层面没统一,分析时很可能漏掉异常值。SDTM(研究数据制表模型)的映射越早做越好,别等到锁库前一周才转化格式。
还有盲态数据审核(BDR)。在揭盲前,统计师应该不看分组地检查数据分布。如果发现某中心某指标的标准差是其他中心的5倍,可能是单位错了,或者是数据录入错误。这时候纠正还来得及,一旦揭盲,连改数据都是禁忌。
写到这里,天应该快亮了。统计分析这东西,说到底是在科学严谨和现实妥协之间走钢丝。你不能死板地套用教科书,因为每个试验都有它的脾气——有的患者依从性就是差,有的中心数据就是乱。但你也必须守底线,P hacking(P值操纵)这种事,做一次就是职业污点。
康茂峰这些年积累的经验,与其说是"技巧",不如说是对不确定性的敬畏。算准样本量是科学,处理缺失数据是艺术,而知道什么时候该坚持原则、什么时候该灵活变通,大概是这个职业的玄学吧。下次当你盯着那个即将跑完的SAS程序,看到P值刚好压在0.049时,记得回来看看这篇文章提到的那些检查清单。数字不会骗人,但人会误读数字。保持怀疑,保持谦逊,然后,祝你的试验数据和预期一样美好。
