sacoche

公衆衛生学 / 疫学 / R. 知識をサッと持ち出せると良いよね

集団と個人の階層データに対するマルチレベルモデリングの中心化は厄介

マルチレベル分析を必要とする研究仮説を扱おうとして,間違った解析結果を載せそうになった話.RQと推定したい指標は対応してるか?は基本の問だと思うんだけど,なかなか難しいなあ.

あまり細かく解説していないので,「おや???」と思った人は本や論文を読むことをおすすめします.気が向いたら,ちゃんとモデル式を書いた記事を作るかも.

 

結論

マルチレベルモデルは,自分が何を推定したいのか,モデルが何を意味しているのかを理解した上で使わないと,結構危ないものだと思います.自分も確認し直したからよかったけど,本当に間違えかけた.勉強は大事ですね.

まずはレベルごとの回帰式を書きましょう(マルチレベルモデリングの基本).その上で,勉強しましょう.

僕が参考にしたものを提示します.
このブログを見るのも良いかもしれませんが,論文と本を読みましょう(暴論)

参考になるもの

  • Enders & Tofighi, 2007は必読

pubmed.ncbi.nlm.nih.gov

  • Raudenbush, S. W., & Bryk, A. S. (2002). Hierarchical linear models: Applications and data analysis methods (Vol. 1). sage.
    分厚い本ですけど,中心化の説明はとてもわかりやすいと感じました.
    直後に紹介する,村山さんの資料はこの本の内容を汲んでいます.

  • 日本語の書籍なら,この本.第6章がとても素晴らしいと感じた.

www.asakura.co.jp

 

日本語でググると出てくるもの(これらもかなりわかりやすいと思います)

 

僕が作ったshinyappも参考にどうぞ

論文や本だけだと,イマイチ飲み込めない感覚があると思います.具体的に図を作りながら,分析結果と合わせて確認できるwebアプリを作りました.ぜひご参考に.

 

toro-maguro.shinyapps.io

 

扱うRQ

集団の文脈効果 (contextual effect) を求める研究仮説を扱います.

文脈効果とは?

Roux, 2002によると,contextual effectは次のように説明されています.

jech.bmj.com

Term generally used to refer to the effects of variables defined at a higher level (usually at the group level) on outcomes defined at a lower level (usually at the individual level) after controlling for relevant individual level (lower level) confounders

個人と集団という階層データを考えると,個人レベルに依存しない集団レベルの影響と言えます.簡単な例だと,地域に文脈効果がある状況で,ある人が地域Aから地域Bに引っ越した場合の影響と考えれば良さそうです.

 

今回考える研究の設定

例として,職場と労働者という階層性があるデータを用いて,労働者の残業時間と職務満足度との関連を考えましょう.

個人単位で物事を考えると,残業時間が伸びると,職務満足度が下がりそうだなと感じます.一方,好きなお仕事を長く楽しくできて,満足する人もいるかもしれません.

職場単位で考えてみると,みんなが残業しまくる残業体質な職場だと,不満が溜まりそうですね.

このように,「労働者の残業時間と職務満足度」という中に,個人レベルの影響と職場レベルの影響の2つが存在することになります.そこでマルチレベル分析を採用するわけです(本当にざっくり説明です.観測値の独立性の問題とかも押さえようね).

 

分析で扱う残業時間は次の処理を行うとします.

  • 個人レベルで月間残業時間を評価.
  • 集団レベルの残業時間の評価では,職場ごとに残業時間の平均値を使用.
    つまり,職場Aの労働者の平均残業時間が職場Aの指標になります.

 

調べたいことは,「残業体質な職場で働く労働者は,個人の残業時間に依存せず,職務満足度が下がるか?」とします.よって,職場レベルの残業時間の文脈効果を推定していきます.

 

中心化

今回の研究トピックのように,次の状況では,"変数 - 変数の平均値"という中心化の処理が施されることが多いと感じます.

  • 連続値で評価された個人レベルの説明変数
  • 集団レベルの説明変数として,個人レベルを集計した値を使用
  • マルチレベルモデリング

 

ここで,マルチレベルモデリングの場合は「平均」を複数計算できることに注意します.今回のように,個人と集団というレベルが2つ存在する場合は,集団ごとの平均値と,標本全体の平均値2通りが存在します.

そこで,中心化に関して3種類の分析を実行して,結果を比較します

  1. rawの値を投入する
    • 個人レベルの残業時間: そのまま投入
    • 職場レベルの残業時間: 各職場の個人の平均値をそのまま投入
  2. 集団平均中心化 (Centering Within Cluster, CWC)
    • 個人レベル: 個人レベルの残業時間 - 職場の平均残業時間
    • 職場レベル: 職場レベルの平均残業時間 - 全体の平均残業時間
  3. 全体平均中心化 (Centering at Grand Mean, CGM)
    • 個人レベル: 個人レベルの残業時間 - 全体の平均残業時間
    • 職場レベル: 職場レベルの平均残業時間 - 全体の平均残業時間

 

結論としては,contextual effectは次の値となります.

  1. rawの場合: 職場レベルの回帰係数
  2. CWCの場合: 職場レベルの回帰係数 - 個人レベルの回帰係数
  3. CGMの場合: 職場レベルの回帰係数

中心化によって,推定値が異なる!?では実際に,確認しましょう.

 

Shinyによる確認

こちらでお試しできます.

Rの知識は特に必要としていませんが,正しく理解しようとするなら,{lme4}パッケージとlmer関数の出力の理解が必要です.

 

toro-maguro.shinyapps.io

データの見方

左側のパネルで,職場の数と,各職場の人数を変更でき,結果のシナリオを変更することができます.

まずは,データのプロットが表示されるはずです.ここでは横軸に残業時間を,縦軸に職務満足度を取っています.そして,各色が職場を表し,回帰直線は職場ごとに引かれています.

例えば,最初のシナリオである「1) 個人の残業時間が長いと満足度が上がるが,職場平均残業時間が長いと個人の満足度は下がる」の場合,各回帰直線は右肩上がりですが,残業時間が長い職場だと,満足度が下がっていくことがわかります.個人と集団レベルでは異なる関連が認められるケースですね.

解析結果

結論としては,Fixed effectを見てください.

上から順に切片,個人レベルの変数,職場レベルの変数,と並んでいます.

 

確認してほしいこと

まず,文脈効果 (contextual effect)は次の値となります.

  1. rawの場合: 職場レベルの回帰係数
  2. CWCの場合: 職場レベルの回帰係数 - 個人レベルの回帰係数
  3. CGMの場合: 職場レベルの回帰係数

その上で,以下を確認してください.

  • raw, CWC, CGMの回帰係数は,どことどこが等しいか?
  • CGMの職場レベルの回帰係数 = CWCの職場レベル - CWCの個人レベル
  • データのプロットと,文脈効果の関係

お伝えしたいこと

文脈効果を求めていないのに,「文脈効果を求めた」と書いている論文があります.僕もそう書きそうになりました.とても怖い話です.

自分の求めたestimandは何を表しているのか,理論に基づいて考え直すことが重要だなあと改めて実感しました.マルチレベルモデルは,自分が何を推定したいのか,モデルが何を意味しているのかを理解した上で使うべきものだと思います.

 

参考になるもの

  • Enders & Tofighi, 2007は必読

pubmed.ncbi.nlm.nih.gov

  • Raudenbush, S. W., & Bryk, A. S. (2002). Hierarchical linear models: Applications and data analysis methods (Vol. 1). sage.
    分厚い本ですけど,中心化の説明はとてもわかりやすいと感じました.
    直後に紹介する,村山さんの資料はこの本の内容を汲んでいます.

  • 日本語の書籍なら,この本.第6章がとても素晴らしいと感じた.

www.asakura.co.jp

 

日本語でググると出てくるもの(これらもかなりわかりやすいと思います)