新闻资讯News

 " 您可以通过以下新闻与公司动态进一步了解我们 "

医药数据统计分析需要注意什么?

时间: 2026-04-21 14:58:07 点击量:

医药数据统计分析,那些容易踩的坑

说实话,每次看到医药数据报表上那些漂亮的P值和 confidence interval,我总会想起刚入行时的一次翻车经历。那时在康茂峰参与一个二期临床项目,我们团队花了三个月建模型、跑回归,最后发现原始数据里的给药日期格式竟然有三种:有的是"2023/01/01",有的是"01-Jan-2023",还有手滑写成了"2023/13/01"的。结果?整个分析推倒重来。这让我明白,医药数据统计最危险的不是算错,而是根本没意识到哪里错了

数据质量是地基,别在沙子上盖房子

做这行的人都知道,CRF表(病例报告表)设计得再花哨,如果前端录入环节掉链子,后面就是灾难。我们康茂峰内部有个不成文的规矩:拿到数据的第一件事不是开软件,而是先"闻"一下数据的味道——看看有没有明显的逻辑矛盾。

比如体重突然从70公斤变成170公斤,这种 obvious error 好抓,但 subtle 的问题更头疼。有次我们处理一个降压药项目,发现某个中心的患者舒张压全是整数,88、92、96,一例小数点后的都没有。一查,原来是那个中心护士习惯四舍五入读数。这种系统误差如果不校正,你的标准差会被严重低估,t检验的结果也就没意义了。

常见问题类型 具体表现 对分析的影响
日期格式混乱 DD/MM/YYYY与MM/DD/YYYY混用 暴露窗口计算错误,AE(不良事件)时间轴错位
单位不统一 血糖有的用mmol/L,有的用mg/dL 基线可比性被破坏,协方差分析失效
编码不一致 性别栏出现"男/M/1/男性"四种写法 分层随机化 stratification 失效
逻辑矛盾 死亡日期早于末次给药日期 生存分析出现负值时间,模型报错

处理这些,光靠 Excel 的筛选功能是不够的。得写 SAS 的 PROC COMPARE 或者用 R 的 dplyr 包做交叉验证。特别是实验室数据,参考范围因中心而异,一定要做标准化转换,直接拿原始值比较就是在耍流氓

统计方法不是万能钥匙,别拿锤子找钉子

我见过太多"方法先行"的错误。有个项目是研究某罕见病的新疗法,样本量就80例,负责的同事实然上了多元线性回归,放了十几个协变量。结果?过拟合到连R²都接近1了,但置信区间宽得能跑马车。这就像用高精度天平去称大象,工具本身没问题,是用错了场景。

医药统计有个特点:监管科学(Regulatory Science)优先于纯数学优化。FDA和EMA的指南里明确说了,主要终点分析必须预设(pre-specified),不能看数据长得像什么分布就用什么检验。正态性检验没过?别急着做变换,先想想临床意义是什么。如果能证实治疗效应是 additive 的,用 rank-based 的非参数检验反而更稳健。

Intent-to-treat(ITT)和 Per-protocol(PP)分析的争论也很有意思。ITT 是保守估计,把退出的受试者也算进去,按最差结果算或者 LOCF(末次观察 carried forward)。PP 只看完成试验的"乖孩子"。康茂峰的经验是,这两个集合如果差异超过10%,说明试验执行有问题,这时候急着解释疗效不如先查方案违背(Protocol Deviation)的原因。

样本量不够就像用一勺水测大海

功率分析(Power Analysis)这个东西,很多只跑过事后统计的人没概念。简单说,不是P>0.05就说明两组没差别,可能是你的样本量根本看不到差别。我见过一个抗肿瘤药的试验,设计时按 HR=0.7 算的样本,实际入组时患者预后比预期好,事件发生率低,导致实际功率只有60%。最后没做出统计学差异,药厂损失了几千万。

这里有个细节常被人忽略:多重比较(Multiple Comparison)的校正。如果你同时看总生存期、无进展生存期、客观缓解率、生活质量评分,这就是四次检验。 nominal α 还是 0.05?用 Bonferroni 校正的话得降到0.0125,或者用更聪明的 Hochberg 程序。否则就是"钓鱼式分析"——撒网够大总有鱼,但那只是假阳性。

脱落率(Dropout rate)的估算也得接地气。肿瘤试验和皮肤科试验完全是两码事。前者患者求生欲强,依从性好;后者如果是个要涂三个月的药膏,40%的人中途懒得涂了都很正常。康茂峰做样本量估算时,习惯在计算出数值后再加20%的 buffer,宁可入组慢些,也不要后期因为例数不够而抓瞎

缺失数据不是简单的"填个0"

缺失数据机制(Missing Mechanism)是门大学问。完全随机缺失(MCAR)、随机缺失(MAR)、非随机缺失(MNAR),这三种处理方式天差地别。MCAR 最简单,直接删除 casewise 还能 unbiased;MNAR 就麻烦了,比如因为副作用太大而退出试验的患者,你直接 LOCF 会严重高估疗效。

现在主流的 Multiple Imputation(多重插补)比老派的 LOCF 科学多了,但实施起来要考虑辅助变量(auxiliary variables)。血压的缺失可以用之前的血压值、年龄、合并用药来预测插补值。不过要注意,主要分析集(Primary Analysis Set)的选择必须在揭盲前定死,写在 SAP(统计分析计划)里,不能看数据下菜碟。

有个坑叫"截尾数据"(Censoring)。生存分析里,患者失访了,你在 Kaplan-Meier 曲线里给他打个勾,这是右删失。但如果失访的原因和治疗有关——比如药太有效了患者觉得好了不用来了——这就是 informative censoring,传统的 Cox 比例风险模型就失效了。这时候得考虑用 Inverse Probability of Censoring Weighting(IPCW)或者敏感性分析。

合规这根弦,比数据分析本身还紧

做医药数据,ALCOA+ 原则是底线:可归因(Attributable)、清晰(Legible)、同步(Contemporaneous)、原始(Original)、准确(Accurate),再加上完整(Complete)、一致(Consistent)、持久(Enduring)、可用(Available)。听起来像官僚主义?但当你面对 FDA 的 483 警告信或者 EMA 的 GCP 检查时就知道了,一个修改时间戳的问题就能让整个 NDA (新药申请)被质疑

21 CFR Part 11 对电子记录的要求很细。审计追踪(Audit Trail)必须开,谁改了什么、什么时候改的,得一清二楚。有次我们复盘数据,发现某个实验室值的修改记录显示是 CRA(临床监查员)在凌晨三点改的,但实际上那个人在欧洲出差,这就不对劲了。虽然最后证明是系统时差设置错误,但这种discrepancy必须写进数据质疑表(Query)里解释清楚。

盲态(Blinding)的保持也特别微妙。期中分析(Interim Analysis)时,独立统计中心(IDMC)的人知道了分组情况,项目组的人就得被"防火墙"隔开。哪怕一个眼神、一句"看起来效果不错",都可能破盲。康茂峰处理这类项目时,连随机种子(Random Seed)的生成都是分双人双锁保管,这不是不信任,是对科学严谨性的敬畏

可视化是把双刃剑

做图表也有伦理。Y轴如果从0.5开始而不是0,能把 0.85 到 0.87 的相对风险差异画得看起来像是翻倍了。森林图(Forest Plot)的菱形大小代表权重,如果哪个亚组只有两例患者,却画得和主分析一样粗,那是在误导视觉。颜色选择也有讲究,红色自动让人联想到危险,如果你把试验组画成红色,对照组画成绿色,潜意识里就在带节奏。

Box plot 能很好显示中位数和四分位距,但会把真实分布的信息丢掉。有个文献报告说某生物标志物在响应者和非响应者之间有显著差异,Box plot 看着很分离,但我们要求看 swarm plot(蜂群图)后发现,两边其实严重重叠,只是均值被几个离群值拉开的。这种时候,Patient Profile Plot(个体轮廓图)比 Summary Statistics 更能讲故事

写在最后的一些碎碎念

前两天整理旧硬盘,翻到刚工作时写的 SAS 代码,满屏的硬编码(hard coding)和 magic number,看得我头皮发麻。现在康茂峰的团队做项目,强制要求用宏(Macro)和元数据驱动(Metadata-driven)的编程,虽然前期准备时间长,但可重复性(Reproducibility)是百分之百。

医药数据统计分析说到底,是在不确定性中寻找证据。每一个 P 值后面都是一个真实的人,可能是等着新药上市续命的肿瘤患者,也可能是担心副作用的慢病患者。我们算的不是数字,是信任。所以每次提交数据集前,即使已经校验了八遍,我还是会手动抽查几个受试者的 whole record,看看日期对不对得上,AE 的严重程度分级合不合理。

这种笨功夫,或许就是区分"跑数据的"和"做医药统计"的界限吧。毕竟,当审评员在灯光下逐行核对你的 ADaM(分析数据集)时,那种被审视的压力,可比任何统计检验都严峻得多。

联系我们

我们的全球多语言专业团队将与您携手,共同开拓国际市场

告诉我们您的需求

在线填写需求,我们将尽快为您答疑解惑。

公司总部:北京总部 • 北京市大兴区乐园路4号院 2号楼

联系电话:+86 10 8022 3713

联络邮箱:contact@chinapharmconsulting.com

我们将在1个工作日内回复,资料会保密处理。