重复测量混合模型 Mixed Model for Repeated Measures (MMRM)
联合分析多个访视的连续终点,建模受试者内相关性并估计目标访视的组间差。
统计原理
对受试者 的多访视向量,可写为:
描述治疗、访视、交互和基线效应; 描述同一受试者各访视的相关性。UN 结构为每个访视方差和每对访视协方差分别估参。MMRM 不会“填补”缺失值,而是基于观测似然在 MAR 假设下估计模型。
细线连接同一受试者的相邻真实观测,粗线只是各访视观察均值。缺失处不连线、不插补,也不把图形当作 MAR 的证明。
口径example.csv:12 例 × 3 个计划访视,共 34 条观测;Week 4 与 Week 8 各缺 1 条。
什么时候用
连续型疗效终点在多个访视重复测量,主分析需要利用全部计划访视信息并估计目标访视的治疗差时使用 MMRM。它显式建模同一受试者内观测的相关性,并在缺失随机(MAR)假设下使用可用观测。
SAP 里长这样:
Change from baseline through Week 8 will be analyzed using a mixed model for repeated measures (MMRM) with treatment, visit, treatment-by-visit interaction, baseline-by-visit interaction, and pooled site as fixed effects. An unstructured covariance matrix and Kenward-Roger degrees of freedom will be used. The LS mean difference at Week 8 and its 95% confidence interval will be presented.
看到 mixed model for repeated measures / unstructured covariance / treatment-by-visit / Kenward-Roger,即可定位到本页。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 终点类型 | 多访视重复测量的连续型终点 |
| 数据结构 | 每名受试者每个分析访视至多一条记录 |
| 分析数据范围 | 示例限定 PARAMCD='HAMD17'、ANL01FL='Y',保留 Week 2/4/8 全部可用记录 |
| 主要假设 | 均值模型正确;协方差结构合理;缺失机制可按 MAR 解释 |
| 不适用时 | 只有单一目标访视 → ANCOVA;MNAR 敏感性问题 → MI/Tipping Point 等预设分析 |
核心 SAS 代码
proc import datafile="example.csv" out=adeff_raw dbms=csv replace;
guessingrows=max;
run;
data adeff;
set adeff_raw;
where paramcd='HAMD17' and anl01fl='Y' and avisitn in (2, 4, 8);
run;
proc sort data=adeff;
by usubjid avisitn;
run;
ods output LSMeans=mmrm_lsmeans
Diffs=mmrm_all_diffs;
proc mixed data=adeff method=reml order=data;
class usubjid trt01p avisit (ref='Week 8') sitegr1;
model chg = trt01p avisit trt01p*avisit base base*avisit sitegr1
/ ddfm=kr;
repeated avisit / subject=usubjid type=un;
lsmeans trt01p*avisit / diff cl slice=avisit;
run;
ods output close;
/* DIFF 产生所有 LS Mean 之间的两两差;显式锁定目标访视和方向 */
data mmrm_week8_diff;
set mmrm_all_diffs;
where trt01p='Drug A' and _trt01p='Placebo'
and avisit='Week 8' and _avisit='Week 8';
run;
proc print data=mmrm_week8_diff noobs;
run;
ORDER=DATA配合按AVISITN排序,使重复测量顺序与计划访视一致。TYPE=UN对访视间方差和协方差限制最少,但参数较多;不收敛时只能按 SAP 的预设降级序列处理。BASE与BASE*AVISIT允许各访视有不同基线斜率;具体参数化必须与 SAP 一致。DIFF会产生TRT01P*AVISIT全部 LS Mean 的两两比较,包括跨访视行;SLICE=AVISIT产生的是每个访视的治疗 simple-effect F 检验,不会自动过滤Diffs表。- 本页用
TRT01P/_TRT01P和AVISIT/_AVISIT四个标签显式得到 Week 8 的Drug A - Placebo;正式项目应将访视和差值方向与 shell 同时锁定。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识,也是重复测量 subject | ADSL.USUBJID |
| TRT01P | 计划治疗组 | ADSL.TRT01P |
| PARAMCD | 分析参数代码 | ADEFF.PARAMCD |
| AVISIT / AVISITN | 分析访视及其数值顺序 | ADEFF |
| BASE | 基线值 | ADEFF.BASE |
| CHG | 各访视较基线变化 | ADEFF.CHG |
| SITEGR1 | 合并中心 | ADSL.SITEGR1 |
| ANL01FL | 主分析记录标志 | ADEFF.ANL01FL |
输出对照
以下为字段定位,不预填未经 SAS 9.4 核验的数值。
| SAS 输出 | 编号 | 对应 shell |
|---|---|---|
| Fit Statistics / Convergence Status | ① | 模型与协方差结构 QC 证据,不直接填主表 |
| Least Squares Means 中 Week 8 各组 Estimate | ② | 目标访视各组 LS Mean |
| 同表 Standard Error | ③ | 各组 SE |
MMRM_WEEK8_DIFF 的 Estimate | ④ | Week 8 的 Drug A − Placebo 组间差 |
| Lower / Upper | ⑤ | 组间差 95% CI |
| DF / t Value / Pr > |t| | ⑥ / ⑦ / ⑧ | KR 自由度、检验统计量和 p-value |
典型纵向疗效 shell 的 Week 8 行填写 ② (③);治疗组与 Placebo 的差值行填写 ④ (⑤) 和 ⑧。先用 ① 确认正式模型收敛,再读取目标访视而不是其他 visit 的行。
示例数据与程序
- example.csv — 12 例、3 个访视且含缺失访视的原创模拟纵向数据
- example.sas — 数据限定、UN 协方差 MMRM、全部 Diffs 保存和 Week 8 目标方向显式筛选程序
常见坑
常见坑
- 重复记录未去重:同一 USUBJID/AVISIT 多条分析记录会改变权重并破坏协方差结构。
- 访视顺序错误:字符排序可能把 Week 10 放在 Week 2 前,须用 AVISITN 固定顺序。
- 把 SLICE 当成 Diffs 过滤器:
SLICE=AVISIT不会删掉跨访视两两差;抽取主表时必须同时核对两个治疗标签和两个访视标签。 - UN 不收敛就临时换结构:降级结构和选择准则必须预先写入 SAP,并保留收敛证据。
- 把 MAR 当成已证明:MMRM 仍依赖缺失机制假设;MNAR 风险需按方案做敏感性分析。
缺失机制边界与 SAS 实现依据:EMA《Missing data in confirmatory clinical trials》;SAS/STAT 15.3 PROC MIXED 官方文档。
相关方法
- 协方差分析 校正基线值后的组间连续终点比较,输出 LS Mean 及组间差(95% CI)。