今回は、Rのlme4 パッケージの lmer() 関数の使い方をまとめておきます。
線形混合モデルとは?
データの分析で、「同じ被験者の複数の測定結果が含まれているので、個人差の影響も考慮したい」とか、「異なる学校に所属している生徒のデータがあるので、学校の違いも考慮したい」といった状況があります。
そのような場合、通常の線形回帰 lm()では、個人やグループごとの違いを適切に扱えません。そこで使われるのが、線形混合効果モデル(Linear Mixed-Effects Model)です。
Rでは lme4 パッケージの lmer() 関数を使って、こうしたモデルを簡潔に記述できます。
lmer() 関数の基本形
lmer(目的変数 ~ 固定効果 + (ランダム効果 | グループ), data = データ名)
- 固定効果(Fixed effect):全体に共通する影響(例:処置の効果)
- ランダム効果(Random effect):被験者や施設などのグループごとの違いをモデル化
例
lmer(Y ~ X + (X | ID), data = df)
このモデルでは、データフレーム df のデータを対象に、変数 X が、変数 Y に与える効果が、被験者(ID)によって異なることを想定し、傾きと切片の両方がランダムに変化するようにモデル化しています。
ランダム効果の指定方法
切片のみランダム
lmer(Y ~ X + (1 | Group), data = data)
- グループごとに平均値(切片)のみが異なる
- 傾きは全体で共通
傾きのみランダム(切片は共通)
lmer(Y ~ X + (0 + X | Group), data = data)
- グループごとに傾きのみが異なる
0 +により、切片のランダム効果を除外
切片と傾きの両方をランダムにする
lmer(Y ~ X + (X | Group), data = data)
- グループごとに切片と傾きの両方が異なる
複数の共変量がある場合の指定方法
複数の変数に対してランダム効果を含めたい場合、以下のように書きます:
両変数とも切片のみランダム
lmer(Y ~ X1 + X2 + (1 | Group), data = data)
X1にのみ傾き・切片のランダム効果を付加
lmer(Y ~ X1 + X2 + (X1 | Group), data = data)
X1とX2の両方に傾き・切片のランダム効果
lmer(Y ~ X1 + X2 + (X1 + X2 | Group), data = data)
傾きのみランダム(切片共通)
lmer(Y ~ X1 + X2 + (0 + X1 + X2 | Group), data = data)
| と || の違い
|:ランダム効果の相関あり
lmer(Y ~ X + (X | Group), data = data)
- 切片と傾きの間に相関があると仮定
- より柔軟だが、推定が不安定になることも
||:ランダム効果の相関なし
lmer(Y ~ X + (X || Group), data = data)
- 切片と傾きを**独立(非相関)**として推定
- モデルが簡素になり、安定しやすいことがある
補足:
X + Y || Gは(1 | G) + (0 + X | G) + (0 + Y | G)と同義です。
モデルの出力と解釈
モデルを構築したら、summary() 関数で結果を確認します。
model <- lmer(Y ~ X + (X | ID), data = df)
summary(model)
出力内容の主な構成
固定効果(Fixed Effects)
| 項目 | 意味 |
|---|---|
| Estimate | 回帰係数(効果の大きさ) |
| Std. Error | 標準誤差(推定の不確実さ) |
| t value | t統計量(大きいほど有意) |
Fixed effects: Estimate Std. Error t value (Intercept) 71.931 1.264 56.91 X 237.752 18.050 13.17
ランダム効果(Random Effects)
| 項目 | 意味 |
|---|---|
| Variance | 各効果のばらつき(分散) |
| Std.Dev. | 標準偏差(√分散) |
| Corr | 効果間の相関(たとえば傾きと切片) |
Random effects: Groups Name Variance Std.Dev. Corr ID (Intercept) 14.711 3.835 X 2365.355 48.635 0.17 Residual 3.601 1.898
IDによる個人差(切片・傾き)のばらつきが推定されます。Residualは誤差項のばらつきです。
※ もし記事の中で「ここ違うよ」という点や気になるところがあれば、気軽に指摘していただけると助かります。質問や「このテーマも取り上げてほしい」といったリクエストも大歓迎です。必ず対応するとは約束できませんが、できるだけ今後の記事で扱いたいと思います。
それと、下の はてなブログランキング はあまり信用できる指標ではなさそうですが(笑)、押してもらえるとシンプルに励みになります。気が向いたときにポチッとしていただけたら嬉しいです。