読者です 読者をやめる 読者になる 読者になる

チラシの裏の落書き日記

統計とか,研究とか,日常についての備忘録的なもの。

Mplusのメモ

Mplus

Mplusは潜在変数モデリングに適した解析ソフトで,心理学,社会学,疫学などの分野で近年人気が出ているソフトウェアである。ホームページは次のものがある。
Muthén & Muthén, Mplus Home Page

このソフトは非常に便利で,文法も簡潔なのであるが,文法が特に覚えられないため,自分のための備忘録として徐々にまとめを書き始める。基本的にはユーザーガイドを真似して,その都度似た分析のものをコピペするという使い方が基本。これまでにやった分析の書き方を基本に。

関西学院大学の清水先生がわかりやすいまとめを書いてくださっているので,この辺も参考に。
[http://www.slideshare.net/simizu706/mplus-lecture-1:embed:cite]

ユーザーガイドから幾つか例を書いておく。まず,MIMICモデル。これだけでもMplusの文法の重要な部分がかなり盛り込まれている。

DATA: FILE IS mimic.dat;
VARIABLE: NAMES ARE y1-y6 x1-x3;
MODEL:
f1 BY y1-y3;
f2 BY y4-y6;
f1 f2 ON x1-x3;

利用するデータファイルの名前をDATAコマンドに記述する。一文の終わりはセミコロン";"で締める。変数の名前はvariableコマンドで指定する。"-"を使って,一気に定義することができるので楽ちん。尺度ごとにまとめて変数を定義するといいかもしれない。最後にmodelコマンドでモデルを記述する。byは潜在変数の定義,onは回帰を意味する。これだけわかればかなりいろいろなモデルが記述出来ることができる。普通の人がAmosでやることは概ねできる。ちなみに,コメントは"!"で記述する。


次に成長曲線モデル。iは切片,sは傾きパラメータを意味する。この書き方は省略形である。

DATA: FILE IS growth.dat;
VARIABLE: NAMES ARE y1-y4 x1 x2;
MODEL:
i s | y1@0 y2@1 y3@2 y4@3;
i s ON x1 x2;

個人的にはbyを使ったi,sの定義の方がわかりやすい。

DATA: FILE IS growth.dat;
VARIABLE: NAMES ARE y1-y4 x1 x2;
MODEL:
s by y1@0 y2@1 y3@2 y4@3;
i by y1@1 y2@1 y3@1 y4@1;
i s ON x1 x2;

独立変数ありの探索的な潜在クラスモデリング

DATA: FILE IS lcax.dat;
VARIABLE: NAMES ARE u1-u4 x;
CLASSES = c (2);
CATEGORICAL = u1-u4;
ANALYSIS: TYPE = MIXTURE;
MODEL:
%OVERALL%
c ON x;
u4 ON x;

ポイントは潜在クラスの数をvariableコマンド内で定義し,顕在変数はカテゴリカルな変数であると定義しているてんである。また,analysisコマンド内で,type=mixtureを指定するのがポイント。
モデルの%overall%でクラス全体に関わる部分を記述する。クラスごとにモデリングを行いたい場合には,%c#1%の中に具体的なモデルを記述する。詳細はまた後日。

最後は,マルチレベルモデリング。また難しい記述の仕方である。

DATA: FILE IS reg.dat;
VARIABLE:NAMES ARE clus y x w;
CLUSTER = clus;
WITHIN = x;
BETWEEN = w;
MISSING = .;
DEFINE:
CENTER x (GRANDMEAN);
ANALYSIS: TYPE = TWOLEVEL RANDOM;
MODEL:
%WITHIN%
s | y ON x;
%BETWEEN%
y s ON w;

新しいところは,variableコマンドにcluster, within, betweenが現れ,defineというコマンドが出てきたところである。さらに,analysisのtypeも何やら新しい。順番に見てみよう。

clusterはデータが何によってネストされているかを定義する。例えば,学校の中に個人がネストされていたり,個人の中に測定時点がネストされている構造がある。このとき,withinでレベル1(学校の中の個人,あるいは個人の中の測定時点)の変数を定義している。さらに,betweenではレベル2(学校,個人)の変数を定義している。
defineコマンドによって,レベル1の変数を中心化しており,全体平均によって中心化するか,レベル2の単位で中心化する場合が多い。"ANALYSIS: TYPE = TWOLEVEL RANDOM;"はとりあえず,マルチレベルモデリングを行うときのおまじないと思っておけばよい。

modelコマンドの中では,%within%で個人レベルの回帰のモデルを作成している。”s |”によって,回帰係数を"s"としており,この"s"と従属変数"y"がレベル2の変数によって説明されるモデルを構築している。

ここまでで,相当色々な分析が出来ることがわかる。今後も気が向いた時に,モデルの記述の方法や,出力の読み方(Rでも読み込ませ方)などをメモ書きに残していく。monte carloコマンドやbayes推定の方法など,実用的なところまでたどり着ければよいかと思う。