某研究回顾性纳入 40 例 2 型糖尿病患者,比较两种口服降糖方案治疗 12 周后的血糖控制情况。方案 A 为二甲双胍联合 DPP-4 抑制剂,方案 B 为二甲双胍联合磺脲类,两组各 20 例,疗效指标是糖化血红蛋白(HbA1c,%)。
治疗 12 周后,A 组 HbA1c 为 6.65±0.69%,B 组为 6.67±0.70%,两组相差 0.02%,独立样本 t 检验 t=−0.09,P=0.93。照这个结果写结论,两种方案降糖效果相当。
这个结论是错的。问题出在起点。
入组时 A 组 HbA1c 为 8.57±0.90%,B 组为 7.95±0.85%,A 组平均高出 0.62%,差异有统计学意义(t=2.26,P=0.029)。两组的终点值看着一样,但 A 组是从更差的水平降下来的:A 组平均下降 1.93±0.47%,B 组下降 1.28±0.41%。同样是 6.6% 左右的终点,一个起点是 8.6%,另一个是 7.9%,这两件事的临床含义并不相同。
终点值相同,为什么会得出相反的答案
关键在于基线在两组之间不均衡,而基线本身又是终点最强的预测因素。本例中基线与终点的相关系数约为 0.87。当这样一个变量同时与分组有关、又与结局有关时,它就是一个混杂因素。直接比较终点值,等于把两组的基线差异一并算进了疗效里。
A 组基线更高,而 HbA1c 存在"回归到均值"的现象——基线偏高的个体,即使不做任何干预,复测时也倾向于向均值回落。所以基线高的 A 组天然会有更大的降幅。两组终点打平,既可能是 A 方案真的更强,也可能只是回归到均值的假象。单看终点值,无法区分这两种解释。
协方差分析在做什么
协方差分析(analysis of covariance,ANCOVA)把基线作为协变量放进模型,同时估计基线的回归系数和组间效应:
终点 HbA1c = 常数 + b₁×基线 HbA1c + b₂×组别
其中组别取 A=1、B=0。这个式子回答的问题是:如果两组的基线处在同一水平,它们的期望终点分别是多少。基线差异被"扣除"之后,剩下的才是组间效应。
本例拟合结果为:
终点 HbA1c = 1.191 + 0.689×基线 HbA1c − 0.451×组别
组别系数 −0.451(95%CI:−0.688~−0.213),t=−3.84,P=0.0005。也就是说,在基线相同的前提下,A 组的期望 HbA1c 比 B 组低 0.45 个百分点。令两组基线都取总体均数 8.26%,得到的调整均数为 A 组 6.43%、B 组 6.88%,差距 0.45 个百分点——同一个模型换一种表达方式而已。
方差分析部分:组别 F=14.75,df=(1,37),P=0.0005,偏 η²=0.285;基线 F=113.27,P<0.001,偏 η²=0.754。基线对终点的解释力远大于分组,这也从侧面说明,把它排除在模型之外会损失多少信息。
换一种说法:调整基线后的结论
把上面两个结果放在一起看,本例的完整结论应该是:两组治疗 12 周后的 HbA1c 终点值接近,但 A 组基线更高;在校正基线差异后,A 组比 B 组多降低约 0.45 个百分点(95%CI 0.21~0.69),差异有统计学意义。至于这 0.45 个百分点有没有临床意义,又是另一个需要结合指南阈值来判断的问题——统计学显著并不自动等于临床重要。
能不能用变化值代替
既然终点值相同、基线不同,一个自然的想法是比较"下降幅度"。本例变化值为 A 组 1.93±0.47%、B 组 1.28±0.41%,t=4.66,P<0.001,同样得到显著差异,看上去比协方差分析更"干脆"。
但变化值分析隐含了一个假设:终点与基线的回归系数等于 1。也就是它认为,无论基线是多少,个体都会以同样的幅度改变。本例实际估计出的系数是 0.689,明显不等于 1。当真实系数小于 1 时,用变化值做比较会系统性放大基线较高那一组的疗效,因为它把回归到均值的部分算成了治疗效果。协方差分析不预设这个系数,而是从数据里估计它,因此在基线不齐时更可靠。
反过来说,如果两组基线均衡(例如样本量充足的随机对照试验),变化值和协方差分析的结论通常是一致的,这时用哪个差别不大。协方差分析真正不可替代的场合,正是基线不齐的非随机资料——回顾性队列、真实世界研究、单臂对照等。
用之前要确认的几件事
协方差分析的结论建立在几条假设上,报告结果时应当一并给出检验结果。
回归线的平行性,也叫斜率齐性。它要求两组的"终点对基线"回归斜率相同,模型才可以用一个共同的 b₁。检查办法是在模型里加入组别与基线的交互项:本例交互项系数 −0.070,t=−0.53,P=0.597,两条回归线近似平行,条件满足。如果交互项显著(P<0.05),说明基线对终点的影响在两组间不同,此时不宜报告单一的调整均数差,应当分别给出两组的回归式,或者改用其他模型。
线性关系。协方差分析假定终点与基线近似线性相关。基线是连续变量的场合,可以先画散点图看一眼;如果关系明显弯曲,可考虑对基线做变换或加入二次项。
残差的正态性与方差齐性。本例残差的 Shapiro-Wilk 检验 W=0.981,P=0.725;基线在两组间的方差齐性检验(Levene 法)P=0.681,都可以接受。
协变量必须是"分组之前"测量的。基线 HbA1c 是入组时测的,在分组之前,作为协变量是合适的。但把治疗过程中某个中间变量(比如 6 周时的血糖)放进模型就不对了——那是分组之后的结果,属于中介变量,校正它会掩盖真实的组间差异,甚至把效应完全"校正掉"。
协变量不能有大的测量误差。如果基线本身就是个测得很粗糙的指标,校正会不充分,剩下的偏差仍然会留在结论里。
不要在基线范围之外外推。本例基线范围大致是 5.3%~10.4%,模型给出的调整结果只在这个区间内成立。若把它用于基线 12% 的患者,结论未必成立。
最后一点常被忽略:协方差分析校正的是"测量到的"基线差异。如果还存在没测到的组间不均衡(比如病程、用药依从性、饮食控制),协方差分析并不能替你消除它们,这些因素需要在设计阶段考虑,或者在敏感性分析中讨论。
在软件里怎么做
把数据整理成三列——分组、基线值、终点值,一行一个观察对象——在医学统计助手中选择协方差分析,指定分组变量、协变量与结局变量即可,软件会输出组别与协变量的系数、标准误、t 值、P 值与置信区间,以及调整后的组间均数差和偏 η²。若要顺手核对斜率齐性,再跑一次带交互项的模型就能看出两条回归线是否平行。
文末附表给出本例的 40 例原始数据,可以自己复核上面的每一个数字。
| 编号 | A组基线 | A组终点 | B组基线 | B组终点 |
|---|
| 1 | 8.9 | 6.6 | 7.9 | 7.1 |
| 2 | 10.2 | 7.8 | 7.9 | 6.4 |
| 3 | 10.4 | 8.1 | 7.4 | 6.1 |
| 4 | 8.7 | 6.1 | 7.3 | 6.4 |
| 5 | 7.3 | 6.5 | 8.3 | 6.8 |
| 6 | 8.5 | 6.2 | 8.7 | 7.7 |
| 7 | 8.8 | 6.8 | 8.0 | 6.8 |
| 8 | 7.3 | 5.6 | 7.6 | 6.8 |
| 9 | 7.9 | 6.5 | 8.9 | 7.3 |
| 10 | 9.3 | 7.2 | 9.2 | 7.6 |
| 11 | 9.8 | 7.7 | 7.7 | 6.7 |
| 12 | 7.2 | 6.2 | 7.6 | 5.7 |
| 13 | 8.8 | 6.6 | 5.3 | 4.7 |
| 14 | 8.3 | 6.6 | 8.7 | 6.6 |
| 15 | 8.7 | 6.7 | 7.7 | 6.0 |
| 16 | 7.6 | 5.4 | 7.4 | 6.6 |
| 17 | 8.9 | 6.9 | 8.6 | 7.4 |
| 18 | 8.2 | 6.7 | 8.6 | 7.2 |
| 19 | 8.5 | 6.8 | 8.6 | 7.0 |
| 20 | 8.1 | 5.9 | 7.5 | 6.4 |