血圧やHbA1cを治療開始前、1か月後、3か月後、6か月後に測る研究では、160人を4回測定するとデータは640行になります。この640行をそのまま独立した640人分として解析すると、同じ患者から得た値の似通い方が計算から抜けます。
こうした見かけの行数は増えても、独立した情報が同じだけ増えたことにはならいなため、縦断データを普通の回帰分析へ入れる前に、この違いを押さえておく必要があります。
この記事では、横断データと縦断データを測定回数だけで区別せず、解析単位と患者内相関から捉え、反復測定値を独立と扱ったときに標準誤差、95%信頼区間、p値がどう動くかを、ランダムに生成したデータセットで確かめます。
横断データは患者間を比べる
ある受診日に患者ごとの血圧を1回ずつ記録したデータでは、1行が1人に対応します。患者Aの値と患者Bの値は別の人から得られているため、研究デザイン上は患者間の比較として扱えますが、施設や家族など別のまとまりがあれば、その依存も考える必要があります。
これに対して、同じ患者を複数時点で測ると、1行は患者ではなく「患者と時点の組合せ」になります。初回だけを取り出せば横断的な比較ですが、全時点を使う解析では患者IDが同じ行をひとまとまりとして扱います。
この違いは、データを縦持ちにするか横持ちにするかという表の形だけでは決まらずに、1人1行の横持ちデータでも各時点の列は同じ患者に属し、1測定1行の縦持ちデータでも患者IDをたどれば反復測定のまとまりが残ります。
測定時点を増やす目的は、患者間の差だけでなく患者内の変化を見ることにあります。
患者IDが測定値の依存のまとまりを定める
反復測定は、同じ患者から同じ種類のアウトカムを複数回得る構造を指します。SchoberとVetter(2018)は、縦断データでは観測値が患者内にまとまり、通常の独立性の仮定が成り立たない点を解説しています。
たとえば、患者Aの4測定は患者Aに固有の体質や基準値を共有しており、別々の4人から得た1測定ずつとは情報の構造が異なります。したがって、独立な集群単位は患者、観測単位は患者と時点の組合せと言えます。
そのため、行数を標本サイズと呼ぶだけでは不十分であり、「独立した患者数は160人、観測された測定値は640個」と分けると研究の構造が伝わります。患者平均への集約は選択肢の1つですが、混合効果モデルや一般化推定方程式では各測定値を保ったまま患者内相関を扱えるため、解析単位は推定したい効果と採用するモデルに応じて決まります。
患者内相関が独立性を崩す
ある患者の血圧が全体に高めなら、その患者の4時点の血圧もそろって高めになりやすくなります。この似通い方を級内相関係数で表すと、患者間分散を$\sigma_b^2$、患者内分散を$\sigma_w^2$として次の式になります。
$$\rho=\frac{\sigma_b^2}{\sigma_b^2+\sigma_w^2}\tag{1}$$
この式の$\rho$は、全分散のうち患者間の違いが占める割合であり、0に近ければ同じ患者の値はあまり似ず、1に近ければ強く似ます。
今回のランダムに生成したデータセットでは、患者間の標準偏差と患者内の標準偏差をともに10と置いたため、真の級内相関係数は0.50です。ランダム切片モデルから推定した患者間分散は108.94、患者内分散は108.73で、推定された級内相関係数は0.500でした。
図1では12人分だけを抜き出し、同じ患者の4測定を線で結んでいます。時点とともに値は変わりますが、患者ごとの高さの違いも残るため、線上の4点を無関係な観測として数えるのは無理があります。

640行は640人分の情報ではない
級内相関係数が0.50で、各患者を4回測定した設定では、単純な平均に対するデザイン効果は次の式で2.5になります。
$$D=1+(m-1)\rho\tag{2}$$
この式の$D$は分散が独立な測定に比べて何倍になるかを表し、$m$は患者1人あたりの測定回数、$\rho$は級内相関係数です。
したがって、640測定を独立な情報へ換算した値は$640/2.5=256$にとどまります。測定回数が増えるほど患者内の変化は詳しく見えますが、同じ患者を繰り返し測ることと、新しい患者を追加することは同じ情報を生みません。
独立とみなすと区間が狭くなる
160人を各群80人に分け、各患者を4回測定したデータで群差を比べました。真の群差は0、1回の時点変化は2と設定し、患者内相関を無視した回帰、患者平均を使った回帰、患者ごとのランダム切片を持つモデルを当てはめています。
患者内相関を無視した解析の群差は0.47、標準誤差は1.16、95%信頼区間は-1.82~2.76、p値は0.687でした。一方、患者平均による解析では群差は同じ0.47でも標準誤差は1.84、95%信頼区間は-3.17~4.11、p値は0.799となり、ランダム切片モデルもほぼ同じ結果でした。
ここで点推定が一致したのは、全患者の測定回数が同じで、群差が時点によらず一定という今回のバランスした設定によります。独立性を無視すれば常に群差そのものが偏る、と一般化してはいけません。
ただし、標準誤差の比は1.58で、式(2)から得た$\sqrt{2.5}=1.58$とも対応しました。正の患者内相関を無視すると、この設定ではデータが実際より多く見積もられ、区間が狭い側へ動いています。
誤った独立性は偽陽性を増やす
1つのデータセットでp値が0.05を超えたことは、独立性の無視が無害だったことを意味しません。同じ生成機構で真の群差を0としたデータを5,000回作ると、5%水準で有意になった割合は、640測定を独立とした解析で22.16%、患者平均を使った解析で5.26%でした。
この差は臨床的意義の差ではなく、帰無仮説が真のときに誤って有意とする頻度の差です。BlandとAltman(1994)も、反復測定値を独立した観測として相関や回帰に入れる問題を指摘しています。
そのため、この状況で独立性を仮定する通常の回帰をそのまま使うことは適切ではありません。研究目的に応じて患者平均を解析するか、患者内相関を扱う混合効果モデルや一般化推定方程式を選ぶ必要があり、LairdとWare(1982)およびLiangとZeger(1986)はそれぞれの方法論的な基礎を示しています。
Rで標準誤差の違いを確かめる
base Rとstatsにnlmeパッケージを加え、160人、4時点のデータを用意しました。患者内相関を無視したモデルと患者平均によるモデルに同じ群効果を入れ、患者別の推移も同じデータから描いています。
set.seed(42)
n_patient <- 160L
n_visit <- 4L
group <- sample(rep(c(0, 1), each = n_patient / 2))
patient_effect <- rnorm(n_patient, mean = 0, sd = 10)
long_data <- data.frame(patient = rep(1:n_patient, each = n_visit),
visit = rep(0:3, times = n_patient), group = rep(group, each = n_visit))
long_data$outcome <- 120 + 2 * long_data$visit +
rep(patient_effect, each = n_visit) + rnorm(nrow(long_data), sd = 10)
naive_fit <- lm(outcome ~ group + visit, data = long_data)
patient_mean <- aggregate(outcome ~ patient + group, data = long_data, FUN = mean)
patient_fit <- lm(outcome ~ group, data = patient_mean)
mixed_fit <- nlme::lme(outcome ~ group + visit, random = ~ 1 | patient,
data = long_data, method = "REML")
naive_result <- c(coef(naive_fit)["group"], summary(naive_fit)$coef["group", 2],
confint(naive_fit, "group"), summary(naive_fit)$coef["group", 4])
patient_result <- c(coef(patient_fit)["group"], summary(patient_fit)$coef["group", 2],
confint(patient_fit, "group"), summary(patient_fit)$coef["group", 4])
mixed_result <- c(summary(mixed_fit)$tTable["group", c(1, 2)],
nlme::intervals(mixed_fit)$fixed["group", c(1, 3)], summary(mixed_fit)$tTable["group", 5])
results <- rbind(naive_result, patient_result, mixed_result)
colnames(results) <- c("Estimate", "SE", "Lower", "Upper", "p")
round(results, digits = 3)
shown <- subset(long_data, patient %in% 1:12)
png("patient-trajectories.png", width = 1100, height = 688, res = 200)
matplot(0:3, matrix(shown$outcome, nrow = 4), type = "o",
lty = 1, pch = 16, col = "#2878B5AA", xlab = "Visit", ylab = "Outcome")
dev.off()
#> Estimate SE Lower Upper p
#> naive_result 0.469 1.164 -1.816 2.755 0.687
#> patient_result 0.469 1.845 -3.174 4.113 0.799
#> mixed_result 0.469 1.845 -3.174 4.113 0.799
false_positive <- replicate(5000, {
b <- rnorm(n_patient, sd = 10)
y <- rep(b, each = n_visit) + rnorm(n_patient * n_visit, sd = 10)
p1 <- coef(summary(lm(y ~ rep(group, each = n_visit))))[2, 4]
y_mean <- rowMeans(matrix(y, nrow = n_patient, byrow = TRUE))
p2 <- coef(summary(lm(y_mean ~ group)))[2, 4]
c(independent = p1 < 0.05, patient_mean = p2 < 0.05)
})
round(rowMeans(false_positive) * 100, 2)
#> independent patient_mean
#> 22.16 5.26
この出力の読みどころは、3モデルの群差が0.469で一致しているのに、独立とした解析だけ標準誤差が小さい点です。この例では3モデルとも有意ではありませんが、p値の大小だけを見て解析法を選ぶと、依存構造を無視した狭い区間を採用しかねません。
実務では、私なら最初に患者IDごとの測定回数と時点を確認します。同じ患者の行が複数あるなら、研究目的が時点ごとの群間差なのか、平均的な変化なのかを明確にし、その推定対象に合うモデルで患者内相関を扱います。
論文では人数と測定数を分けて書く
縦断研究では、患者数と測定数を区別し、患者内の依存構造に対応した解析法を示すと、解析の前提を読み手が確認できます。さらに、SchoberとVetter(2018)は患者内の依存に対応した解析の必要性を示し、GueorguievaとKrystal(2004)は反復測定分散分析の制約と混合効果モデルの利点を論じています。
また、欠測や不均等な測定回数があると、今回のように患者平均とランダム切片モデルが同じ推定値になるとは限りません。混合効果モデルと一般化推定方程式の選択は推定したい効果にも関わるため、この記事では代表例としての言及にとどめます。
縦断データでは、表の1行ではなく、どの患者から得た測定かが解析の骨格になります。行数だけを標本サイズとせず、患者内相関を扱う方法を解析計画の段階で定めることが、信頼区間とp値を正しく読む条件です。
実際のデータでは測定間隔の不ぞろい、欠測、時点による群差の変化も判断に関わります。こうした構造を含めて解析方針を決める必要がある場合は、Dr.データサイエンスで医療統計のご相談を承っています。
参考文献
- Schober P, Vetter TR. Repeated Measures Designs and Analysis of Longitudinal Data: If at First You Do Not Succeed-Try, Try Again. Anesthesia & Analgesia. 2018;127(2):569-575.
- Laird NM, Ware JH. Random-Effects Models for Longitudinal Data. Biometrics. 1982;38(4):963-974.
- Liang K-Y, Zeger SL. Longitudinal Data Analysis Using Generalized Linear Models. Biometrika. 1986;73(1):13-22.
- Bland JM, Altman DG. Correlation, Regression, and Repeated Data. BMJ. 1994;308(6933):896.
- Gueorguieva R, Krystal JH. Move Over ANOVA: Progress in Analyzing Repeated-Measures Data and Its Reflection in Papers Published in the Archives of General Psychiatry. Archives of General Psychiatry. 2004;61(3):310-317.


