縦断研究で収縮期血圧をベースライン、4週、8週、12週に測ると、後半ほど欠測率が高くなることがありますが、各時点の欠測率だけでは、4週から最後まで欠けた対象者と、4週だけ欠けて8週に戻った対象者を区別できず、この違いは補完モデルや解析対象を考える前に把握しておきたいデータの形です。欠測を時点順に並べ、単調欠測と非単調欠測を見分ける方法を、240例のランダムに生成したデータセットで確かめます。
この違いを踏まえ、変数別欠測率、欠測パターン表、欠測行列をどう使い分けるかを示します。単調か非単調かを分類する基準に加え、その分類からMCAR、MAR、MNARのどこまでを判断できるのかも切り分けます。
欠測率だけでは同じ23.3%に見える
例として、収縮期血圧を4時点で測定した240例を考えます。今回の解析では、ベースラインの欠測は0例、4週は56例(23.3%)、8週は69例(28.7%)、12週は98例(40.8%)で、時点が進むにつれて欠測率が増えていることは、この集計だけでも読めます。
ただし、4週の56例がその後も全て欠けたのか、8週や12週に観測値が戻ったのかは分かりません。Sterneら(2009)が論じるように、医療・疫学研究では欠測を無視せず解析前に量と構造を把握する必要があり、同時欠測と途中欠測が混ざるため、変数別欠測率だけで確認を終える方法は適切ではありません。
時点順のOとMでパターンを表す
各対象者について、観測値をO、欠測値をMとし、ベースラインから12週までの順に4文字を並べます。OOOOは完全例、OOMMは8週以降が欠測、OMOOは4週だけが欠測という意味で、単調性を調べるには列の順序を測定時点として固定することが前提になります。
対象者$i$の時点$t$における欠測指標を$R_{it}$とし、観測なら0、欠測なら1と定めます。4時点をもつ対象者が非単調欠測かどうかは、次の式で表せます。
$$I_i^{\mathrm{nonmono}}=I\left(\sum_{t=1}^{3}R_{it}(1-R_{i,t+1})>0\right).\tag{1}$$
ここで$I(\cdot)$は括弧内の条件が真なら1、偽なら0を返す指示関数なので、式(1)は、欠測の直後に観測値が現れる隣接時点が1組でもあれば、その対象者を非単調欠測と数えます。たとえばOMOOとOOMOは1、OOMMとOMMMは0になります。
単調欠測は欠測後に値が戻らない
単調欠測では、指定した順序でいったんMが現れた後は、残りが全てMになります。今回のパターンではOOOM、OOMM、OMMMが該当し、不完全な135例のうち82例(60.7%)で、欠測開始時点は異なっても観測から欠測へ一方向に移る点が共通しています。
この分類で注意したいのは、単調性が変数名ではなく並び順に依存することで、測定時点のない横断的な変数を欠測が少ない順に並べ替えれば単調に見える場合がありますが、それを縦断的な脱落と同じ意味には読めません。時点順や研究上の順序に根拠がない場合、単調というラベルを解析判断の中心に置くのは避けた方がよいでしょう。
非単調53例では観測値が再出現する
4週が欠測でも8週と12週が観測されたOMOOは22例(9.2%)ありました。ほかにOMOMが16例(6.7%)、OOMOが15例(6.2%)で、非単調欠測は合計53例、不完全例の39.3%です。
この53例を単なる脱落として扱うと、後の時点に残っている観測情報を見落とします。
一方、非単調という分類だけでは、なぜ値が欠けたかは分からず、来院しなかったのか、測定だけが行われなかったのか、記録上の問題だったのかによって、補完モデルで使える情報は変わります。パターン表で観測値の再出現を見つけ、欠測理由やデータ収集過程と照合するところまでが研究上の判断です。
7パターンの頻度を分母とともに読む
今回確認されたパターンは7種類で、OOOOが105例(43.8%)、OOMMが36例(15.0%)、OOOMが28例(11.7%)、OMOOが22例(9.2%)、OMMMが18例(7.5%)、OMOMが16例(6.7%)、OOMOが15例(6.2%)でした。割合の分母は全240例です。
ここで「単調欠測が60.7%」と「OOMMが15.0%」は分母が異なり、前者は不完全な135例、後者は全240例を分母としています。報告では、完全例数、各パターンの全体割合、単調・非単調の不完全例内割合を混ぜず、分母を添えると読み間違いを防げます。
小さなセルに解析上の意味を持たせるより、観測値が戻る対象者が無視できない規模かを把握した方が次の解析方針につながるため、頻度の小さいパターンまで名前を付けて論じる前に、完全例、単調な不完全例、非単調な不完全例の人数を見ます。
欠測行列では53例の途中欠測が見える
欠測行列は、対象者を行、測定時点を列に置き、観測と欠測を色で分けた図です。TierneyとCook(2023)は、欠測指標を通常のデータとして扱い、変数別・症例別の要約や可視化を解析工程へ組み込む考え方を示しており、表の頻度と図の形を併用すると数と並びの両方を確認できます。

図1では、右端まで赤が続く単調欠測に加え、赤の後に青が戻る行がまとまって見えます。ただし、行をパターンで並べ替えた図なので上から下への順序に時間的な意味はなく、色の面積を眺めるだけでなく、元の時点順とパターン頻度を一緒に読む必要があります。
Rで完全例105例と非単調53例を確認する
base Rとstatsを使い、4時点の収縮期血圧をもつ240例のランダムに生成したデータセットを用意しました。欠測の割り当ては7種類のパターンから行い、再現用の乱数シードはコードに含めています。
set.seed(42)
participant_count <- 240L
visit_names <- c("baseline", "week4", "week8", "week12")
pattern_levels <- c("OOOO", "OOOM", "OOMM", "OMMM", "OMOO", "OOMO", "OMOM")
pattern_probabilities <- c(0.45, 0.15, 0.12, 0.08, 0.08, 0.07, 0.05)
# 4時点の収縮期血圧を生成
invisible(rnorm(participant_count, mean = 142, sd = 14))
invisible(rnorm(participant_count, mean = 138, sd = 14))
invisible(rnorm(participant_count, mean = 135, sd = 14))
invisible(rnorm(participant_count, mean = 133, sd = 14))
assigned_pattern <- sample(pattern_levels, size = participant_count,
replace = TRUE, prob = pattern_probabilities)
missing_matrix <- t(vapply(strsplit(assigned_pattern, split = ""),
FUN = function(code) code == "M",
FUN.VALUE = logical(length(visit_names))))
pattern_code <- apply(missing_matrix, MARGIN = 1, FUN = function(row_missing) {
paste(ifelse(row_missing, yes = "M", no = "O"), collapse = "")
})
nonmonotone <- apply(missing_matrix, MARGIN = 1, FUN = function(row_missing) {
any(diff(as.integer(row_missing)) < 0L)
})
c(complete = sum(rowSums(missing_matrix) == 0L),
nonmonotone = sum(nonmonotone))
#> complete nonmonotone
#> 105 53
出力のcompleteは4時点全てが観測された105例、nonmonotoneは欠測後に観測値が戻った53例です。読み間違えやすいのは、nonmonotoneを全不完全例と受け取る点で、欠測のある135例のうち残る82例は単調欠測に分類されます。
また、図は同じ欠測指標行列をパターン別に並べたもので、列はベースラインから12週までの測定時点順です。色と余白は、観測値が戻る位置を見分けられるように設定しています。
pattern_order <- order(pattern_code)
plot_labels <- c("Baseline", "Week 4", "Week 8", "Week 12")
png("figures/missing-patterns.png", width = 1100, height = 760,
res = 200, type = "cairo")
par(mar = c(4.5, 5.2, 1.0, 1.0))
image(x = seq_along(visit_names), y = seq_len(participant_count),
z = t(missing_matrix[pattern_order, , drop = FALSE]),
col = c("#2C7FB8", "#F03B20"), axes = FALSE,
xlab = "Visit", ylab = "Participants (grouped by pattern)")
axis(1, at = seq_along(plot_labels), labels = plot_labels)
axis(2, at = c(1, participant_count), labels = c("1", "240"))
box()
legend("topright", legend = c("Observed", "Missing"),
fill = c("#2C7FB8", "#F03B20"), bty = "n", cex = 0.8)
dev.off()
パターン表からMCAR・MAR・MNARは決まらない
欠測パターンを見れば欠測機構まで分かる、と考えてしまいがちですが、OOOOやOMOOという観測・欠測の並びだけから、MCAR、MAR、MNARのどの機構かを確定することはできません。SchaferとGraham(2002)が説明する欠測機構は、欠測確率と観測値・未観測値との関係についての仮定であり、行列の形とは別の概念です。
また、単調なら完全例解析で偏りがなく、非単調なら偏るという対応はなく、今回の記述的集計には効果推定値がないため、上方・下方という偏りの向きは定まりません。完全例に限定した推定値がどう動くかは、欠測過程と解析モデルに依存します。
Whiteら(2011)は、多変量の欠測構造を変数単位と症例単位で確認してから補完モデルを考える実務上の論点を扱い、Harelら(2018)は疫学研究の不完全データについて欠測行列とパターン割合を可視化しています。パターン確認は補完法を自動選択する規則ではなく、どの観測情報が残り、どの仮定を別途吟味すべきかを明らかにする役割を持ちます。
解析前の報告には人数と順序を残す
論文や解析記録には、各変数の欠測数だけでなく、完全例105例、単調な不完全例82例、非単調な不完全例53例という分類と、ベースラインから12週までの列順を残します。これにより、読者は完全例が43.8%だったことだけでなく、後の観測値を保持した対象者がいたことまで追えます。
その情報は、補完に含める変数や縦断モデルの詳細を決める前の土台になります。MICEの仮定や実装へ進む場合は、MICEによる多重代入:MARの仮定と連鎖方程式とMICEによる多重代入:補完方法の選択と欠測率の読み方が続きの位置づけになり、生存時間アウトカムでの扱いは、生存時間解析における欠測データで別に説明しています。
欠測率の大小だけから解析法を決めず、時点順を固定したパターン表と途中欠測数を併記することを勧めます。
この併記に加えて、単調性の分類が研究上の順序に沿っているか、欠測後に残った観測値を解析でどう生かすか、欠測機構の仮定を何で支えるかを分けて考えると、数値だけに引きずられません。
実際のデータでは、変数の順序に医学的・時間的な意味があるか、欠測理由がどこまで記録されているかによって判断が変わります。欠測構造を確認した後の解析方針まで整理したい場合は、Dr.データサイエンスでご相談を承っています。
参考文献
- Schafer JL, Graham JW. Missing data: our view of the state of the art. Psychological Methods. 2002;7(2):147-177.
- Sterne JAC, White IR, Carlin JB, Spratt M, Royston P, Kenward MG, Wood AM, Carpenter JR. Multiple imputation for missing data in epidemiological and clinical research: potential and pitfalls. BMJ. 2009;338:b2393.
- White IR, Royston P, Wood AM. Multiple imputation using chained equations: issues and guidance for practice. Statistics in Medicine. 2011;30(4):377-399.
- Harel O, Mitchell EM, Perkins NJ, Cole SR, Tchetgen Tchetgen EJ, Sun B, Schisterman EF. Multiple imputation for incomplete data in epidemiologic studies. American Journal of Epidemiology. 2018;187(3):576-584.
- Tierney N, Cook D. Expanding tidy data principles to facilitate missing data exploration, visualization and assessment of imputations. Journal of Statistical Software. 2023;105(7):1-31.


