マルチレベル

分析入門

最終更新 2024年3月6日

日本都市社会学会の企画委員として、2023年6月10日に例会「マルチレベル分析入門セミナー」を企画・実施しました。

ここではマルチレベル分析の初心者に向けて、関連する情報をまとめておきます。

フリーソフトを用いた マルチレベル分析入門

「フリーソフトを用いたマルチレベル分析入門――HADとRを用いて」

木田が例会で発表した資料のスライドです。

木田が作成したテストデータをこちらにアップしました。HADの最新版(ソルバーオンバージョン)にコピー&ペーストしてお使いください。

マルチレベル分析に関する解説論文

マルチレベル分析とは何ぞやということをつかむために、オンラインで勉強できる解説を最初にご紹介します。まずは筒井・不破(2008)に目を通すことをおすすめします。


マルチレベル分析に関する解説書

本格的にマルチレベル分析に入門したいためのテキストを紹介します。日本語では清水(2014)が平易で分かりやすく、最初の一冊としておすすめです。より本格的に学びたい方は、英語圏での定番の教科書であるSnijders and Bosker(2011)を読みましょう。また、ベイズ統計学の立場から書かれたGelman and Hill(2006)も丁寧に書かれていておすすめです(改訂版を出してほしいところですが…)。



都市社会学分野での応用例を知りたい方は、赤枝尚樹先生のご著書がおすすめです。

マルチレベル分析が可能なフリーソフトウェア

近年ではマルチレベル分析ができるフリーソフトウェアも増えてきています。ここでは代表的なものをいくつか紹介します。


関西学院大学の清水裕士先生が作成されているExcelで動く統計ソフトです。社会心理学者が開発したソフトなので用語などは心理統計寄りですが、社会学でも十分に使えます。木田も教育用途では大変お世話になっております。使用方法は上に掲載したスライドをご覧ください。


Rはソフトウェアというよりもプログラミング言語に近いもので、lme4パッケージなどを使用することでマルチレベル分析ができるようになります(後述)。木田は研究用途ではRをメインで使っています。


Rをベースに開発された統計ソフトです。アムステルダム大学の心理学部で開発されているらしく、心理統計で使用する機能が充実している上、通常の推定とベイズ推定の双方が可能です。日本語にも対応しています。

Rでマルチレベル分析をするためのパッケージ

Rでマルチレベル分析を行うためには、パッケージの導入が必要です。ここでは代表的なパッケージを紹介します


Rでlme4を使用する場合はパッケージ一覧から「lme4」を探してCRAN経由でインストールしてください。lme4のマニュアルはこちらから見ることができます。なお、Rパッケージを使用して学会発表をしたり論文を執筆したりすることを予定している場合には、多少面倒でもvignetteや解説論文に目を通しておくことをおすすめします。lme4の解説論文はこちらにあります。


lme4では回帰係数の検定結果が表示されませんが、補助パッケージであるlmerTestはこれを可能にします。マニュアルはこちらをご覧ください。解説論文はこちらにあります。なお、引数を指定しない場合、Satterthwaiteによる近似自由度の補正が行われます(Kenward-Roger法も使用できますが、計算には結構時間がかかるようです)。

ベイズ推定を試してみよう

私自身は最近は「確実性/不確実性」をより直接的に評価できるベイズ推定の方に魅力を感じています。確率的プログラミング言語Stanやそれに対応したRパッケージの発展により、統計パッケージの一般的ユーザーでもMCMC(マルコフ連鎖モンテカルロ法)を実施できるようになりました。とはいえ、Stanコードを自分で書くのは大変(面倒)だという人も少なくないと思いますので、ここではいくつかの補助パッケージをご紹介します。


ベイズ推定に興味を持った場合、まずこのパッケージをインストールしてみると良いと思います。確率プログラミング言語Stanを用いたMCMCを行います。Rのglmやglmerとほぼ同じ書き方でMCMCによるパラメータ推定ができる上、実行も非常に高速です。使い方はこちらのvignettesをご覧ください。なお、ベイズ推定では事前分布の設定が肝ですが、rstanarmはデフォルトで回帰係数の事前分布としてNormal(0, 2.5)が設定されていますのでよく確認しておきましょう(2023年6月現在)。また、分散共分散行列(相関行列)の事前分布としてはLKJ分布の一様分布が使われているようです(2023年11月現在)。


こちらもRでStanを用いたMCMCを行うことのできるパッケージで、rstanarmよりもこちらの方が有名かもしれません。brmsでもglmやglmerとほぼ同じ書き方でパラメータ推定ができます。rstanarmより推定に若干時間がかかる気がしますが、こちらの方が柔軟にモデリングができます。使用方法はこちらのvignettesをご覧ください。事前分布をデフォルトに任せる場合は、get_prior関数で事前分布の設定を確認するとよいでしょう。マニュアルでは事前分布を設定することが推奨されていますが、困った場合はrstanarmと同じ設定(回帰係数であればNormal(0, 2.5))にするのもよいと思います。


※事前分布に関する追記

事前分布についてはAndrew Gelmanが2020年にGitHubに解説記事をアップしています。Gelman自身はパッケージを使わない分析ではnormal(0, 1)がお気に入りだけど、rstanarmを使うときはnormal(0, 2.5)を使っているようです(Gelmanらによる回帰モデルの教科書Regression and Other Storiesのコードはrstanarmです)