井出草平の研究ノート

交差遅延パネルモデルCross-lagged Panel Model[Mplus]

以前、Stataで交差遅延パネルモデルに解説した例で今回もデモを行う。

ides.hatenablog.com

Mplus用のデータ加工

github.com

こちらからnes3wave.dtaをダウンロードする。 RStudioでMplus用のデータに加工する。

データの読み取り

library(rio)
nes3wave <-import("nes3wave.dta")

Rのデータ読み込みパッケージにはforeignhavenがあるが、Mplusへデータ出力をする場合はrio一択だと思う。R上での分析もrioを使っている。rioを使うにはhavenがインストールされている必要があり、haventidyverseが必要となる。

サブセットの作成

今回使用するデータのみピックアップする。

nes3wave_CLPM <- subset(nes3wave, select = c(pid2000, pid2002, app2000, app2002))

Mplus用のデータ出力

library(MplusAutomation)
variable.names(nes3wave_CLPM) # 変数名を書き出し
prepareMplusData(nes3wave_CLPM, filename="nes3wave_CLPM.dat", overwrite=T)

nes3wave_CLPM.datというファイルで出力した。

Mplusでの分析

inpファイルは下記のように書く。

TITLE: 
  Cross-lagged Panel Model with Mplus

DATA: 
  FILE = "nes3wave_CLPM.dat";

VARIABLE: 
  NAMES = pid2000 pid2002 app2000 app2002; 
  MISSING=.;

ANALYSIS: 
  type = general;
  estimator = MLR;

MODEL:
  pid2002 on pid2000;
  app2002 on app2000;
  pid2002 on app2000;
  app2002 on pid2000;

  pid2000 with app2000;
  pid2002 with app2002;

OUTPUT:
  STDYX;

diagrammerで描画すると下記のようになる。

書きたい図とは少し違うが、だいたいイメージはできる図にはなっているだろう。

結果

STDYX Standardization

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

 PID2002  ON
    PID2000            0.776      0.020     39.702      0.000
    APP2000            0.115      0.022      5.163      0.000

 APP2002  ON
    APP2000            0.125      0.032      3.947      0.000
    PID2000            0.413      0.031     13.515      0.000

 PID2000  WITH
    APP2000            0.558      0.018     30.934      0.000

 PID2002  WITH
    APP2002            0.280      0.031      9.024      0.000

 Means
    PID2000            1.323      0.025     53.876      0.000
    APP2000            1.506      0.016     96.486      0.000

 Intercepts
    PID2002            0.177      0.029      6.028      0.000
    APP2002            1.581      0.072     21.966      0.000

 Variances
    PID2000            1.000      0.000    999.000    999.000
    APP2000            1.000      0.000    999.000    999.000

 Residual Variances
    PID2002            0.285      0.018     15.931      0.000
    APP2002            0.756      0.021     36.219      0.000


R-SQUARE

    Observed                                        Two-Tailed
    Variable        Estimate       S.E.  Est./S.E.    P-Value

    PID2002            0.715      0.018     40.008      0.000
    APP2002            0.244      0.021     11.683      0.000

CLPMを使うべきか

MplusのユーザーズガイドにCLPMは掲載されていない。理由は下記のMplus Discussionでのやり取りをみれば明らかであろう。

www.statmodel.com

Bengt O. Muthen posted on Tuesday, February 12, 2019 - 5:24 pm
That looks right. Also note the RI-CLPM approach shown on our website. ホームページで紹介されているRI-CLPMのアプローチにも注目してください。

Muthen先生がやんわり指摘しているようにCLPMというのは時代遅れの方法で現在の標準的アプローチはランダム切片を置いたRI-CLPMになっている。

www.statmodel.com

Reciprocal RI-CLPM

RI-CLPMをさらに改善したモデルとしてReciprocal RI-CLPMをMuthen先生たちは提唱している。

最近、新しいウェブトークが公開され、そこで解説がされている。

www.statmodel.com

こちらのモデルが主流になるかはわからないが、ざっと見た感じ、検討すべきモデルであるのは間違いなさそうだ。