RからMplusが使えるようになるMplusAutomationパッケージというものがある。
有用な関数が複数含まれているので使い方がいくつかあるが、今回はRを使ってMplusのデータとコードの一部を作る方法を紹介しよう。
RStudioを利用する
RとMplusのユーザーであれば、RStudioを使っていると思うので、RStudioが導入されている前提で話を進める。
RStudioの使い方はこちらを参照のこと。
Mplusの分析ファイルはどこに置けばいいの?
日本語で得られる情報では、Mplusの作業ディレクトリは絶対パスで設定しているものばかりだがRStudioと同じく、パスの指定は不要である。 ただ、2バイト文字をパスに含めないという違いがあるだけである。 詳しくはリンク先のMplusの作業ディレクトリ解説を参照のこと。
Mplusの形式でのデータ書き出し
psychパッケージにあるbfiというデータをMplus形式で書きだす。
library(MplusAutomation) library(psych) data(bfi)
bfiはこのブログではよく使っている5因子パーソナリティのデータIPIP-NEOである。 データの詳細はこちらを参照のこと。 http://ides.hatenablog.com/entry/2019/03/19/093726
変数名を抽出する
変数すべてを書き出すことはおそらく稀で、分析に必要なデータだけを書き出すことが多い。 そこで、書き出す変数の指定をするために変数名を抽出しておいた方が便利だ。
variable.names(bfi)
以下のように出力される。
[1] "A1" "A2" "A3" "A4" "A5" "C1" "C2" "C3" "C4" "C5" [11] "E1" "E2" "E3" "E4" "E5" "N1" "N2" "N3" "N4" "N5" [21] "O1" "O2" "O3" "O4" "O5" "gender" "education" "age"
Mplusデータ形式として出力
因子分析だけする場合には、"gender","education","age"の変数は使わないのでオミット(ドロップ)させる。保持する変数をしている場合はkeepColsと書く。
prepareMplusData(bfi, filename="bfi.dat", dropCols=c("gender","education", "age"), overwrite=T)
- bfi...出力するデータ
- filename...出力するデータ名
- keepCols...保持する変数
- dropCols...保持しない変数...keepとdropはどちらかのみ指定
Mplusで使用するdatが同じディレクトリ(フォルダ)上に出力される。 Rの出力は下記のように出る。
DATA: FILE = "bfi.dat"; VARIABLE: NAMES = A1 A2 A3 A4 A5 C1 C2 C3 C4 C5 E1 E2 E3 E4 E5 N1 N2 N3 N4 N5 O1 O2 O3 O4 O5; MISSING=.;
これは、Mplusの分析コードであり、inp形式データの前半部分である。
つまり、 Mplusのコードの前半部分が自動生成されるのだ。
意外にMplusのコードでミスが出やすいのがこの箇所である。ANALYSISやMODELの部分はしっかり考えて書くので、割と間違えない。
データ出力だけ使用する場合には、inpファイルは通常の方法で作成する。
ちなみに、Mplusで因子分析をするには以下のような分析コードになる。
TITLE:"" DATA: FILE = "bfi.dat"; VARIABLE: NAMES = A1 A2 A3 A4 A5 C1 C2 C3 C4 C5 E1 E2 E3 E4 E5 N1 N2 N3 N4 N5 O1 O2 O3 O4 O5; MISSING=.; ANALYSIS: TYPE = EFA 3 6; ESTIMATOR = ML; ROTATION = oblimin; PARALLEL = 50; PLOT: TYPE = plot2; OUTPUT: residual;
MplusAutomationの使い方としてはいくつかあるが、現実的にはここまでをRで行うのがいいのではないかと思う。
僕は今までExcelでMplus用のデータを作成していた。手間がかかるし、手間がかかればミスも出る可能性がある。なによりも、何をどのように処理したか、記録が取れないのが最も問題だった。個人的にはかなりの福音である。