社会学者の研究メモ

はてなダイアリーから移転しました。

Stataでマルチレベル・モデル

ちょうどマルチレベル・モデルの原稿を書いたので、ついでにこのネタ。

マルチレベル・モデル(あるいは混合モデル)で分析したいときはHLMやSASのproc mixedがよく使われてますが、Stataでもversion9から分析可能になりました。ただし専用アプリのHLMなどと比べると、コマンドが少々わかりにくいような気もするので、ごく簡単に説明しておきます。

被説明変数Y(連続変量)を、個体レベルの変数X1とX2、グループ・レベルの変数Zで説明するとします。グループ変数はGとします。一番シンプルなマルチレベル・モデルは、下の通り、切片のみにランダム効果を設定したもの。

Y=β01X12X2+r
β000+u0

対応するStataコマンドは以下の通りです。オプション(推計方法や分散-共分散構造の設定)は適宜。

xtmixed Y X1 X2 || G:

次に切片と傾き(X1だけ)をランダムにしたもの。

Y=β01X12X2+r
β000+u0
β110+u1

コマンドは以下。||G:の右には個体レベルの変数のみを入れますが、すべて入れるのではなく傾きをランダムにしたいものだけを入れます。何も入らなければ切片のみにランダム効果が導入されます。

xtmixed Y X1 X2 || G: X1

次に切片のランダム効果のみにグループ・レベルの説明変数Zを投入したもの。

Y=β01X12X2+r
β00001Z+u0
β110+u1

コマンドは以下。特に何も意識せずZを投入するだけです。

xtmixed Y X1 X2 Z || G: X1

次に切片と傾き(X1だけ)のランダム効果にZを投入したもの。

Y=β01X12X2+r
β00001Z+u0
β11011Z+u1

コマンドは以下。面倒なのは、あらかじめ交互作用項を作っておく必要があること(下のコマンドのままうつとエラーが出ます)。

xtmixed Y X1 X2 Z X1*Z || G: X1

最後にX2にもランダム効果とZを導入したもの。

Y=β01X12X2+r
β00001Z+u0
β11011Z+u1
β22021Z+u2

コマンドは以下です。X2とZの交互作用項の他に、G:の右側にもX2を追加します。

xtmixed Y X1 X2 Z X1*Z X2*Z|| G: X1 X2

X2のランダム効果にZを投入しない場合でも、β2をランダム効果にしたい場合にはG:の右側にX2を追加します。

やっぱりややこしいですね〜。とはいえ、||の前の部分は、混合表記の式をそのまま推計すればいいんですけどね。

Multilevel and Longitudinal Modeling Using Stata, Second Edition

Multilevel and Longitudinal Modeling Using Stata, Second Edition