本記事にはプロモーション(広告・アフィリエイトリンク)が含まれます。

💡 この記事でわかること
  • R公式リポジトリ(CRAN)で公開されている mmrm パッケージとは何か、なぜ実務で支持されているのか
  • mmrm() 関数の基本構文 — 共分散構造の指定方法と自由度補正の選び方
  • サンプルデータ fev_data を使った反復測定混合モデルの実装手順(コード → 出力 → 解釈)
  • SAS PROC MIXED で慣れている方が mmrm パッケージへ移行する際の対応関係
  • 共分散構造(UN/Toeplitz/AR(1)/CS)の選び方と AIC・BIC を使った比較

はじめに

臨床試験で繰り返し測定されたアウトカムを解析する場面では、欠測に頑健で時系列の相関構造を柔軟にモデル化できる手法が極めて重要になります。MMRM(Mixed Model for Repeated Measures:反復測定混合モデル)は、ICH E9(R1) のエスチマンドフレームワークでも事実上の標準として位置づけられており、製薬実務で日常的に使用されています。

SAS では PROC MIXED が長年デファクトスタンダードでしたが、Rの世界では nlme や lme4 での実装が主流で、SAS の MMRM と完全には一致しないという課題が残っていました。この状況を抜本的に解決したのが、F. Hoffmann-La Roche・MSD・AstraZeneca・inferential.biostatistics の共同開発による R mmrm パッケージです。本記事では、CRAN 公式版 mmrm を使った実装手順を、コード・出力・解釈の3点セットで体系的に整理します。

なぜ R の mmrm パッケージなのか

R で混合モデルを扱うパッケージは多数存在しますが、臨床試験用途で mmrm が選ばれる理由は明確です。

パッケージアプローチSAS PROC MIXED との一致速度・収束
nlme::gls周辺モデル+一般化最小二乗ほぼ一致するが自由度補正が限定的大規模データで遅い
lme4::lmer変量効果ベースの混合モデルUN 共分散の直接指定が困難高速だが UN 不可
glmmTMBTMB ベースの汎用混合モデルUN 可だが Kenward-Roger 非対応高速
mmrm周辺モデル(変量効果なし)+ TMBほぼ完全に一致(KR・Satterthwaite・残差自由度に対応)非常に高速・収束安定
📝 解釈・補足
mmrm パッケージは「変量効果を導入せず、被験者ごとに残差共分散構造を直接モデル化する」という MMRM 本来の定式化を忠実に実装しています。これにより SAS PROC MIXED の MMRM と推定値・標準誤差・自由度がほぼ完全に一致するため、規制当局向けの解析パッケージ移行リスクを最小化できます。

mmrm の数理的な定式化

反復測定された連続アウトカム \(Y_{ij}\) (被験者 \(i\)、時点 \(j\))について、MMRM は次の周辺モデルを仮定します。

\[ Y_{ij} = \mathbf{x}_{ij}^\top \boldsymbol{\beta} + \varepsilon_{ij}, \quad \boldsymbol{\varepsilon}_i \sim \mathcal{N}(\mathbf{0}, \boldsymbol{\Sigma}_i) \]

ここで \(\mathbf{x}_{ij}\) は治療群・時点・共変量からなる固定効果デザイン行列、\(\boldsymbol{\Sigma}_i\) は被験者 \(i\) の \(T \times T\) 残差共分散行列です。mmrm ではこの \(\boldsymbol{\Sigma}_i\) を unstructured(UN)・Toeplitz・AR(1)・compound symmetry(CS) など複数のパラメトリックな構造から選んで指定できます。推定は REML(制限付き最尤法)で、自由度補正は Kenward-Roger 法または Satterthwaite 法を選択できます。

データの準備:fev_data サンプルデータ

パッケージに同梱されている fev_data は、第II相喘息試験を模した縦断データです。FEV1(1秒量)が4時点で繰り返し測定されており、欠測も含まれているため MMRM のデモに最適です。

install.packages("mmrm")  # 初回のみ
library(mmrm)
library(dplyr)

data(fev_data)
glimpse(fev_data)
> Rows: 800
> Columns: 10
> $ USUBJID <fct> PT1, PT1, PT1, PT1, PT2, PT2, PT2, PT2, PT3, PT3, PT3, PT3, PT…
> $ AVISIT  <fct> VIS1, VIS2, VIS3, VIS4, VIS1, VIS2, VIS3, VIS4, VIS1, VIS2, VI…
> $ ARMCD   <fct> TRT, TRT, TRT, TRT, PBO, PBO, PBO, PBO, PBO, PBO, PBO, PBO, TR…
> $ RACE    <fct> Black or African American, Black or African American, Black or…
> $ SEX     <fct> Female, Female, Female, Female, Male, Male, Male, Male, Female…
> $ FEV1_BL <dbl> 25.27144, 25.27144, 25.27144, 25.27144, 45.02477, 45.02477, 45…
> $ FEV1    <dbl> NA, 39.97105, NA, 20.48379, NA, 31.45522, 36.87889, 48.80809, …
> $ WEIGHT  <dbl> 0.6767231, 0.8006186, 0.7087859, 0.8088997, 0.4651848, 0.23309…
> $ VISITN  <int> 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1,…
> $ VISITN2 <dbl> -0.62645381, 0.18364332, -0.83562861, 1.59528080, 0.32950777, …
📝 解釈・補足
被験者ID(USUBJID)・時点(AVISIT)・治療群(ARMCD)・ベースライン値(FEV1_BL)と、応答変数 FEV1 が縦長フォーマットで格納されています。FEV1 列に NA が混在している点が、欠測データを含む臨床試験データのリアリティを再現しています。

mmrm の基本実装

もっとも基本的な MMRM ― 治療群×時点の交互作用を主目的とし、ベースライン値を共変量として補正する解析 ― は次のように書きます。

fit <- mmrm(
  formula = FEV1 ~ FEV1_BL + ARMCD * AVISIT +
                  us(AVISIT | USUBJID),
  data    = fev_data,
  reml    = TRUE,
  method  = "Kenward-Roger"
)
summary(fit)
> mmrm fit
>
> Formula:     FEV1 ~ FEV1_BL + ARMCD * AVISIT + us(AVISIT | USUBJID)
> Data:        fev_data (used 537 observations from 197 subjects with maximum 4
> timepoints)
> Covariance:  unstructured (10 variance parameters)
> Method:      Kenward-Roger
> Vcov Method: Kenward-Roger
> Inference:   REML
>
> Model selection criteria:
>      AIC      BIC   logLik deviance
>   3450.1   3482.9  -1715.0   3430.1
>
> Coefficients:
>                      Estimate Std. Error        df t value Pr(>|t|)
> (Intercept)          25.71828    1.55584 254.00000  16.530  < 2e-16 ***
> FEV1_BL               0.17169    0.03327 193.11000   5.160 6.09e-07 ***
> ARMCDTRT              4.66499    1.09616 143.71000   4.256 3.74e-05 ***
> AVISITVIS2            4.85717    0.80504 141.50000   6.033 1.33e-08 ***
> AVISITVIS3           10.33217    0.83654 155.01000  12.351  < 2e-16 ***
> AVISITVIS4           15.37124    1.30631 137.41000  11.767  < 2e-16 ***
> ARMCDTRT:AVISITVIS2  -0.29676    1.13278 136.31000  -0.262    0.794
> ARMCDTRT:AVISITVIS3  -1.09837    1.21021 157.78000  -0.908    0.365
> ARMCDTRT:AVISITVIS4   0.34707    1.83933 128.69000   0.189    0.851
> ---
> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> Covariance estimate:
>         VIS1    VIS2    VIS3    VIS4
> VIS1 42.7900 15.4311  7.9693 16.4889
> VIS2 15.4311 26.5444  4.5373  9.9943
> VIS3  7.9693  4.5373 19.1180  7.6972
> VIS4 16.4889  9.9943  7.6972 99.7086
📝 解釈・補足
us(AVISIT | USUBJID) は「被験者ごとに、訪問(時点)を indexing 変数とした unstructured 共分散」を指定する mmrm 独自の特殊項です。出力の ARMCDTRT 係数 4.66(標準誤差 1.10・df ≈ 144・p < 0.001)は参照時点 VIS1 における治療群差(TRT − PBO)を示しており、各 VIS との交互作用項を加えて時点別の処置効果を表現します。df 列の値が整数でないことから、Kenward-Roger 補正が効いていることが確認できます。

共分散構造の選び方と比較

共分散構造の選択は MMRM 解析の中でも臨床試験プロトコルに事前に明記すべき最重要項目の1つです。mmrm パッケージでは formula の特殊項を切り替えるだけで複数構造を試せます。

構造特殊項パラメータ数(T=4)想定する状況
Unstructured (UN)us(visit | id)10時点数が少なく欠測パターンが豊富。臨床試験の主解析で標準
Toeplitz (TOEP)toep(visit | id)4時点間隔が等間隔でラグごとに同一相関を仮定できる場合
AR(1)ar1(visit | id)2隣接時点ほど相関が強い。長期間の縦断データに有効
Compound Symmetry (CS)cs(visit | id)2どの時点ペアの相関も同程度と仮定可能なとき(変量切片相当)

4種類の構造を順に当てはめ、AIC・BIC で比較してみましょう。

structures <- c(
  UN   = "us(AVISIT | USUBJID)",
  TOEP = "toep(AVISIT | USUBJID)",
  AR1  = "ar1(AVISIT | USUBJID)",
  CS   = "cs(AVISIT | USUBJID)"
)

results <- lapply(names(structures), function(s) {
  fml <- as.formula(
    paste0("FEV1 ~ FEV1_BL + ARMCD * AVISIT + ", structures[[s]])
  )
  m <- mmrm(fml, data = fev_data, reml = TRUE, method = "Satterthwaite")
  data.frame(structure = s, AIC = AIC(m), BIC = BIC(m),
             logLik = as.numeric(logLik(m)))
})
do.call(rbind, results)
>   structure      AIC      BIC    logLik
> 1        UN 3450.082 3482.914 -1715.041
> 2      TOEP 3558.746 3571.879 -1775.373
> 3       AR1 3559.929 3566.496 -1777.965
> 4        CS 3556.480 3563.046 -1776.240
📝 解釈・補足
AIC は UN(3,450.08)が最小で、次点の CS(3,556.48)に対しても約106ポイントの差があります。BIC でも UN(3,482.91)が最小で、UN がデータに最もフィットしていると判断できます。第II相試験のように時点数が少なく(T=4)データ量が十分ある状況では、パラメータ数 10 の UN 構造を主解析に採用するのが規制当局向けに最も妥当な選択です。AR(1) や CS は感度分析として補助的に提示するのが定石になります。

治療効果の最小二乗平均(LS Means)

論文・CSR(治験総括報告書)では、各時点における治療群と対照群の最小二乗平均差を報告するのが一般的です。mmrm パッケージは emmeans パッケージと連携しており、慣れた構文で LS Means を取り出せます。

library(emmeans)

emm <- emmeans(fit, ~ ARMCD | AVISIT, mode = "df.error")
contrast(emm, method = "trt.vs.ctrl", ref = "PBO")
> AVISIT = VIS1:
>  contrast  estimate    SE  df t.ratio p.value
>  TRT - PBO     4.66 1.100 144   4.256  <.0001
>
> AVISIT = VIS2:
>  contrast  estimate    SE  df t.ratio p.value
>  TRT - PBO     4.37 0.849 148   5.146  <.0001
>
> AVISIT = VIS3:
>  contrast  estimate    SE  df t.ratio p.value
>  TRT - PBO     3.57 0.758 131   4.703  <.0001
>
> AVISIT = VIS4:
>  contrast  estimate    SE  df t.ratio p.value
>  TRT - PBO     5.01 1.690 134   2.974  0.0035
📝 解釈・補足
最終評価時点(VIS4)における治療効果の LS 平均差は 5.01(95%CI 1.68〜8.34、p = 0.0035)であり、プラセボに対して統計的に有意な改善を示しています。VIS1〜VIS3 でも差は 4.66・4.37・3.57 と同程度で、p値も小さい(< 0.0001)ことから、治療効果が早期から発現していることが読み取れます。これは喘息治療薬の典型的な作用プロファイルと整合しています。

SAS PROC MIXED ユーザー向けの対応関係

SAS で書かれた既存の SAP(統計解析計画書)を R へ移植する際の対応関係を整理しておきます。

SAS PROC MIXEDR mmrm
CLASS USUBJID AVISIT ARMCD;事前にデータ側で factor() 化
MODEL FEV1 = FEV1_BL ARMCD AVISIT ARMCD*AVISIT / DDFM=KR;FEV1 ~ FEV1_BL + ARMCD * AVISIT + us(AVISIT | USUBJID)
method = "Kenward-Roger"
REPEATED AVISIT / SUBJECT=USUBJID TYPE=UN;us(AVISIT | USUBJID)
LSMEANS ARMCD*AVISIT / DIFF;emmeans::emmeans() + contrast()
⚠️ 注意
SAS と完全一致を確認したい場合は、(1) 因子レベルの並び順を SAS と揃える、(2) method = "Kenward-Roger" を明示する、(3) 欠測の取扱いを MAR 前提で揃える、の3点を必ず確認してください。mmrm パッケージのバリデーションペーパーでは、共分散構造 UN/自由度補正 KR の条件で SAS PROC MIXED と推定値・標準誤差・p値が小数第4位までほぼ一致することが報告されています。

実務でのポイント

🔑 まとめ・実務ポイント
  1. 主解析の共分散構造は事前指定が必須。AIC で選びたくなりますが、規制当局向けには SAP に明記した構造を主解析として固定し、AIC 比較は感度分析の位置づけにとどめます。
  2. 収束失敗時は UN → Toeplitz → AR(1) の順にフォールバック。mmrm は attr(fit, "converged") で収束状況を確認できます。事前指定したフォールバック方針も SAP に書いておくことが推奨されます。
  3. ICH E9(R1) のエスチマンドと整合させる。MMRM は MAR を前提とするため、Treatment Policy 戦略・Hypothetical 戦略のいずれを採用するかで欠測の補完方法と感度分析が変わります。
  4. Kenward-Roger と Satterthwaite の使い分け。サンプルサイズが小さい第II相試験では KR が推奨され、規模の大きい第III相試験では Satterthwaite でも実用上十分です。

📚 参考書籍

MMRM・混合モデル・縦断データ解析をさらに深く学びたい方に、実務で繰り返し参照することになる定番書を3冊ご紹介します。

データ解析のための統計モデリング入門 ― 一般化線形モデル・階層ベイズモデル・MCMC
本記事の MMRM・混合モデルが「変量効果」「最尤推定」「共分散構造」といった概念に基づいていることを直感的に理解するために最適な一冊です。GLM → GLMM → 階層ベイズと段階的に発展させる構成で、Rコード付きのため独学にも適しています。
臨床試験の事典
臨床試験で頻出するキーワードを見開き2〜4ページで網羅した事典。マスタープロトコル試験の周辺知識(多重比較・共変量調整・DMC等)をリファレンス的に押さえたい方に。
統計解析スタンダード 経時データ解析
MMRM・GEE・成長曲線モデルなど、縦断データ解析の主要手法を理論から R/SAS 実装まで一気通貫で解説。共分散構造の選び方・モデル診断・欠測の取扱いが日本語で丁寧にまとまっており、本記事と最も相性の良い一冊です。

 

関連記事・次のステップ

まとめ

本記事では、CRAN 公式パッケージ mmrm を使った反復測定混合モデルの実装方法を、データ準備から共分散構造比較・LS Means 推定・SAS との対応関係まで一気通貫で紹介しました。R で MMRM を扱う上での実用上のボトルネックだった「SAS PROC MIXED との一致」「速度・収束安定性」「Kenward-Roger 補正」のすべてが、このパッケージで実現されています。

規制当局向けの主解析として R を採用するハードルは年々下がっており、特に mmrm はその流れを加速させた最重要パッケージのひとつです。次回はこのパッケージを使って、多重代入法(Multiple Imputation)と組み合わせた感度解析を実装する方法を紹介します。エスチマンドフレームワークでの「Hypothetical 戦略」を実装する具体的な手順まで踏み込む予定ですので、ぜひ続きをお楽しみください。

ABOUT ME
tomokichi
外資系製薬会社で生物統計家として働ている1児のパパ。生物統計家とは何か、どのようなスキルが必要か、何を行っているのかを共有していきたいと思っております!生物統計に関する最新情報を皆様にお届けすべく、日々奮闘中です。趣味は筋トレ、温泉巡り、家族と散歩。