出生体重を目的変数にした解析で、母の喫煙だけを説明変数にした単回帰と、母の妊娠前体重や人種を加えた重回帰を並べると、同じ喫煙変数の係数が別の値になります。MASSパッケージのbirthwtデータでも、単回帰の喫煙係数は-283.8g、妊娠前体重と人種を加えた重回帰では-399.8gでした。この116gの差をどう受け取るかで、結果の書き方が変わってきます。差が生じること自体は珍しくなく、むしろ二つの係数が最初から別の比較条件を表しているために起こります。この回では、同じ変数の係数がモデルによって何の差を表しているのかを、実データの数値に沿って整理します。
単回帰と重回帰で変わるもの
単回帰と重回帰の違いは、説明変数の本数ではなく、係数が答えている比較の中身にあります。単回帰の喫煙係数は、喫煙した母と喫煙しなかった母を、他の条件をそろえずにそのまま比べた平均差です。一方で重回帰の喫煙係数は、モデルに入れた妊娠前体重と人種が同じ値の母を互いに比べたときの平均差になります。前者は集団全体でならした周辺的な関連、後者はモデルに含めた変数を固定した条件付きの関連であり、両者は同じ量の推定値ではありません。
この記事を読み終えたところで判断できるようになるのは、手元の回帰表に並んだ係数が、それぞれどの条件の差を表しているかを言葉で書き分けることと、単回帰から重回帰へ移ったときの係数の動きを、交絡が除かれた証拠としてではなく比較条件の変更として読むことです。変数を増やす目的を先に決めてからモデルを組む、という順序も同時に扱います。
出生体重データと記号の置き方
使うのはMASSパッケージのbirthwtデータで、1986年にSpringfieldの医療機関で収集された189例の記録です(Venables and Ripley, 2002)。目的変数は出生体重(g)、主要な説明変数は妊娠中の喫煙の有無、調整に使うのは母の妊娠前体重(ポンド)と人種の3区分です。喫煙ありが74例、喫煙なしが115例で、平均出生体重は喫煙なしが3,055.7g、喫煙ありが2,771.9g、標準偏差はそれぞれ752.7gと659.6gでした。
回帰分析そのものの目的と、関連を式で表すと何が読み取れるのかは、回帰分析の目的:関連を式で表すと何が分かるのかで扱っています。ここではその上に、説明変数を1本から複数本へ増やしたときの係数の意味の変化を重ねます。
記号を置きます。出生体重を$Y$、妊娠中の喫煙を1、非喫煙を0とする指標変数を$S$、調整変数をまとめたベクトルを$\mathbf{x}$と書きます。
単回帰の係数が表す比較条件
喫煙だけを説明変数にしたモデルは、次の形になります。
$$\mathbb{E}[Y \mid S = s] = \beta_0 + \beta_1 s \tag{1}$$
この式は、喫煙の有無だけで出生体重の平均を書き分けたものです。$\beta_0$は非喫煙群の平均出生体重、$\beta_1$は喫煙群の平均から非喫煙群の平均を引いた差を表します。
実際に当てはめると、切片は3,055.7g、喫煙の係数は-283.8gで、標準誤差107.0g、95%信頼区間は-494.8gから-72.8g、p値は0.00867でした。この-283.8gは、先ほど並べた2群の平均出生体重の差とぴたりと一致します。単回帰の係数が平均差そのものだという性質は、説明変数が0と1の2値のときに成り立つもので、連続変数を入れた場合は傾きの解釈に変わります。
ここで注意したいのは、この-283.8gが「喫煙以外の条件を同じにした母の間の差」ではないことです。喫煙群と非喫煙群では、喫煙以外の特徴の分布も異なっています。決定係数は0.0363で、出生体重のばらつきのうち喫煙の有無で説明できたのは3.6%にとどまり、残差標準偏差は717.8gでした。関連の向きは負でしたが、この数字だけから喫煙が出生体重を283.8g下げる、と読むことはできません。
重回帰の係数が表す条件付きの差
妊娠前体重と人種を加えると、モデルは次のようになります。
$$\mathbb{E}[Y \mid S = s, \mathbf{x}] = \gamma_0 + \gamma_1 s + \boldsymbol{\alpha}^\top \mathbf{x} \tag{2}$$
この式は、調整変数$\mathbf{x}$の値をそろえた上で喫煙の有無による平均の差を書いたものです。$\gamma_0$は喫煙がなく妊娠前体重が0で、人種が基準の白人にあたる場合の平均出生体重を表す切片、$\gamma_1$は$\mathbf{x}$を固定したときの喫煙群と非喫煙群の平均出生体重の差、$\boldsymbol{\alpha}$は調整変数それぞれの係数を並べたベクトルを表します。
当てはめた結果、喫煙の係数は-399.8g、標準誤差108.5g、95%信頼区間は-613.9gから-185.7g、p値は0.000302でした。妊娠前体重の係数は1ポンドあたり3.94g(p=0.022)、白人を基準にした黒人の係数は-503.9g(p=0.0012)、その他の係数は-395.0g(p=0.000974)です。決定係数は0.1481まで上がり、残差標準偏差は680.3gへ下がりました。
-399.8gという値の読み方は、単回帰のときとは異なります。妊娠前体重が同じで人種区分も同じ母のあいだで、喫煙ありの平均出生体重が喫煙なしより399.8g低い、という条件付きの差になります。Leffondréら(2014)は、回帰係数を読むときに説明変数の表し方、単位、そして他の変数を一定に保つという条件を必ず添えるよう求めていますが、この条件の部分が抜けると、単回帰の係数と重回帰の係数が同じ土俵の数字に見えてしまいます。
条件付きという言葉は、データの中に実際にその比較が存在することを保証せず、妊娠前体重が同じ値の母が両群に十分いなければ、モデルは直線の当てはめによってその差を外挿していることになります。
係数の変化を生む調整変数の寄与
喫煙群では白人が52例で群内の70.3%を占め、非喫煙群では白人が44例で38.3%でした。黒人はそれぞれ10例と16例、その他は12例と55例です。人種別の平均出生体重は白人3,102.7g、黒人2,719.7g、その他2,805.3gですから、喫煙という説明変数は、出生体重が高い側の属性と正の方向で重なっていたことになります。
この偏りがあると、調整前後で係数が動きます。動きの大きさは、次の関係で分解できます。
$$\hat{\beta}_1 = \hat{\gamma}_1 + \sum_{k=1}^{3} \hat{\alpha}_k \hat{\delta}_k \tag{3}$$
この式は、単回帰の喫煙係数が、重回帰の喫煙係数に調整変数由来の項を足したものになる、という関係を書いたものです。$\hat{\alpha}_k$は重回帰でのk番目の調整変数の係数、$\hat{\delta}_k$はその調整変数を喫煙変数だけに回帰したときの傾きを表します。
今回のデータで各項を計算すると、妊娠前体重が-10.9g、黒人指標が2.0g、その他指標が124.9gで、合計は116.0gでした。単回帰の-283.8gから重回帰の-399.8gを引いた値も116.0gですから、係数の差はこの3項でちょうど説明されます。差の大部分を作っていたのは、白人以外の割合が非喫煙群に偏っていた「その他」の項でした。
$\hat{\delta}_k$がゼロに近い変数、つまり喫煙群と非喫煙群で分布が変わらない変数は、分解式の該当項が小さくなるため、モデルに入れても喫煙係数をほとんど動かしません。今回の黒人指標の項が2.0gにとどまったのがその例です。逆に、群間で分布が大きく偏っている変数ほど項が大きくなり、どの変数を入れたかによって喫煙係数の値が変わります。
変数を増やせば正しくなるという誤解
係数が-283.8gから-399.8gへ動いたので交絡が除かれた、と受け取りたくなるところですが、この読み方は正確ではありません。係数が動いたという事実が伝えているのは、調整変数の分布が両群で偏っていたことだけであり、残っている未測定の要因については何も語っていないからです。動いた先の値が真の効果に近づいたのか、それとも別の方向へ離れたのかは、係数の動きだけからは判断できません。
変数をさらに増やしたモデルも当てはめてあります。妊娠前体重と人種に加えて年齢、高血圧の既往、子宮刺激性を入れると、喫煙の係数は-360.7g、95%信頼区間は-566.0gから-155.4g、p値は0.000656、決定係数は0.2414でした。変数を6本に増やしても係数は-399.8gから-360.7gへ戻る側に動いており、値が単調に「正しい方向」へ収束していく様子は見られません。
そのため、変数を追加するかどうかは、係数がどれだけ動いたかではなく、研究目的と医学的な知識から決めることを勧めます。出生体重に影響し、かつ喫煙の有無と関連しうる要因を先に列挙し、測定されているものを調整変数に置く、という順序です。追加した結果として係数が10%以上動いた変数だけを残す、という手順を採る解析も見かけます。ただし動きの大きさは標本のばらつきにも左右されるうえ、動かない交絡因子も動く非交絡因子も存在するため、変化率は交絡の有無を示す指標にはなりません。Grantら(2019)も、重回帰では目的に応じて主要な説明変数と調整変数の役割を先に定め、その役割に沿って係数を解釈する必要があるとしています。
研究報告での位置づけと誤用の指摘
重回帰の出力をそのまま論文の表にすると、喫煙の行の下に妊娠前体重や人種の行が同じ書式で並びます。ここで起きやすい誤りが、WestreichとGreenland(2013)がTable 2 fallacyと呼んだ読み方です。彼らの整理では、主要な説明変数のために組んだモデルの中で、調整変数の係数は主要変数と同じ意味の効果を表しておらず、調整変数から見れば他の共変量の調整が不足していたり、逆に中間変数を調整してしまっていたりします。今回の表でいえば、黒人の係数-503.9gを人種の効果として読むためには、人種を主要な説明変数に据えたときに必要な調整が別途そろっていなければなりません。
報告の書き方としては、主要な説明変数がどれなのかを本文で明示し、その係数がどの変数を固定した条件での差なのかを一文で添える形が読者に伝わります。Andrade(2024)は、調整後の解析で共変量が何をしているのかを、説明変数の間で共有される変動の観点から説明していますが、その共有部分の扱いが変わることこそが、単回帰と重回帰で係数が異なる理由でした。
今回のモデルには交互作用を入れていません。Shrierら(2021)は、共変量間に交互作用がある場合に重回帰の係数を母集団平均の効果へ直結できなくなる状況を扱っており、喫煙の効果が人種によって異なるなら、単一の-399.8gという値でその全体を代表させることは難しくなります。交互作用の扱いはこの記事の範囲を超えるため、ここでは単一の係数がモデルの設定に依存した要約値だという点にとどめます。
Rで確かめる係数の対応関係
ここまでの数値を、MASSパッケージのbirthwtデータから再現します。喫煙と人種は解釈しやすいようにラベル付きの因子に変換し、喫煙だけのモデルと、妊娠前体重と人種を加えたモデルを当てはめました。
library(MASS)
birth <- birthwt
birth$smoke_group <- factor(birth$smoke, levels = c(0, 1),
labels = c("nonsmoker", "smoker"))
birth$race_group <- factor(birth$race, levels = c(1, 2, 3),
labels = c("white", "black", "other"))
fit_simple <- lm(bwt ~ smoke_group, data = birth)
fit_multiple <- lm(bwt ~ smoke_group + lwt + race_group, data = birth)
summary(fit_simple)$coefficients
summary(fit_multiple)$coefficients
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 3055.6957 66.93326 45.652875 2.463035e-103
#> smoke_groupsmoker -283.7767 106.96877 -2.652893 8.666726e-03
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 2799.28461 249.046272 11.240018 1.188987e-22
#> smoke_groupsmoker -399.77242 108.513979 -3.684064 3.017073e-04
#> lwt 3.93767 1.704963 2.309534 2.202430e-02
#> race_groupblack -503.91393 153.124362 -3.290880 1.197150e-03
#> race_groupother -394.97918 117.834497 -3.351983 9.738466e-04
読み方の中心は、2つの表の同じ行名にある数字が別の量だという点です。上の表の-283.78は喫煙群と非喫煙群の平均出生体重の差、下の表の-399.77は妊娠前体重と人種をそろえた条件での差にあたります。読み違えやすいのは標準誤差の側で、調整変数を加えても標準誤差は106.97から108.51へわずかに増えており、調整すれば推定の精度が上がるとは限りません。残差の分散は下がった一方で、喫煙変数のうち他の変数で説明できる部分が差し引かれたため、両者が相殺した形になっています。
3つのモデルの喫煙係数と95%信頼区間を、同じ横軸の上に並べた図も作りました。年齢、高血圧の既往、子宮刺激性まで加えたモデルを3本目に置いています。
fit_extended <- lm(bwt ~ smoke_group + lwt + race_group + age + ht + ui,
data = birth)
model_labels <- c("Simple: smoking only",
"Multiple: + weight, race",
"Multiple: + age, ht, ui")
estimates <- c(coef(fit_simple)["smoke_groupsmoker"],
coef(fit_multiple)["smoke_groupsmoker"],
coef(fit_extended)["smoke_groupsmoker"])
lower <- c(confint(fit_simple)["smoke_groupsmoker", 1],
confint(fit_multiple)["smoke_groupsmoker", 1],
confint(fit_extended)["smoke_groupsmoker", 1])
upper <- c(confint(fit_simple)["smoke_groupsmoker", 2],
confint(fit_multiple)["smoke_groupsmoker", 2],
confint(fit_extended)["smoke_groupsmoker", 2])
plot(estimates, 3:1, xlim = c(-700, 100), ylim = c(0.5, 3.5), pch = 16,
yaxt = "n", ylab = "", xlab = "Coefficient for maternal smoking (g)",
main = "Same variable, three comparison conditions")
segments(lower, 3:1, upper, 3:1, lwd = 2)
axis(2, at = 3:1, labels = model_labels, las = 1, cex.axis = 0.75)
abline(v = 0, lty = 3)

条件付きの差という言い方をもう少し目に見える形にすると、次のようになります。出生体重と喫煙指標の双方から、妊娠前体重と人種で説明できる部分を取り除き、残った成分を互いに回帰します。
resid_bwt <- resid(lm(bwt ~ lwt + race_group, data = birth))
resid_smoke <- resid(lm(smoke ~ lwt + race_group, data = birth))
round(as.numeric(coef(lm(resid_bwt ~ resid_smoke))[2]), 4)
#> [1] -399.7724
重回帰の喫煙係数と同じ値が返りました。重回帰は、調整変数で説明できる部分を両側から取り除いた後の関係を1本の傾きにまとめている、という理解が数値の上でも確かめられます。
plot(resid_smoke, resid_bwt, pch = 1, col = "grey35",
xlab = "Smoking residual (adjusted for weight and race)",
ylab = "Birth weight residual (g)",
main = "Partial regression plot for maternal smoking")
abline(lm(resid_bwt ~ resid_smoke), lwd = 2)
abline(h = 0, lty = 3)

図を作る前に係数の値だけを見ていると、点がどれくらい重なっているのかが分かりません。横軸の広がりが狭い変数、つまり調整変数でほとんど説明されてしまう説明変数では、この直線は少数の点に支えられることになります。
モデルを選ぶときの判断
手元の解析で単回帰と重回帰を並べるときに決めるべきなのは、どちらが正しいかではなく、報告したい比較条件がどちらなのかです。集団全体での平均的な差を記述したい記述的な目的なら単回帰の値に意味があり、測定した背景因子をそろえた条件での差を報告したいなら重回帰の値を使います。私なら、まず主要な説明変数を1つ決め、その係数がどの変数を固定した差なのかを結果の文章に書き切れるかを確認します。書けない場合は、モデルに入れた変数の役割が自分の中で整理できていないことが多いためです。
ここまで読んで、自分の研究では調整変数をどこまで入れるべきか、と考えた方もいるかもしれません。実際のデータでは、測定されている変数の一覧、欠測の状況、変数の間の相関、そして事前に定めた解析計画まで含めて判断することになります。Dr.データサイエンスでは、こうした解析方針のご相談を承っています。
前の記事は回帰分析の目的:関連を式で表すと何が分かるのかです。
参考文献
- Andrade C. Regression: Understanding What Covariates and Confounds Do in Adjusted Analyses. J Clin Psychiatry. 2024;85(4):24f15573.
- Grant SW, Hickey GL, Head SJ. Statistical primer: multivariable regression considerations and pitfalls. Eur J Cardiothorac Surg. 2019;55(2):179-185.
- Leffondré K, Jager KJ, Boucquemont J, Stel VS, Heinze G. Representation of exposures in regression analysis and interpretation of regression coefficients: basic concepts and pitfalls. Nephrol Dial Transplant. 2014;29(10):1806-1814.
- Shrier I, Redelmeier A, Schnitzer ME, Steele RJ. Challenges in interpreting results from ‘multiple regression’ when there is interaction between covariates. BMJ Evid Based Med. 2021;26(2):53-56.
- Westreich D, Greenland S. The Table 2 Fallacy: Presenting and Interpreting Confounder and Modifier Coefficients. Am J Epidemiol. 2013;177(4):292-298.
- Venables WN, Ripley BD. Modern Applied Statistics with S. 4th ed. Springer; 2002.


