井出草平の研究ノート

潜在クラス分析におけるBCH法-回帰補助モデル[Mplus]

前回に引きつづき潜在クラス分析におけるBCH法について。

http://www.statmodel.com/examples/webnotes/webnote4.zip

今回は共変量(X)を設定し、従属変数(Y)に回帰するモデルである。

データが見つからなかったのでRで仮想データ作成した。適当に乱数を発生させているので、分析内容には意味がない。作成方法はエントリの最後に記載している。

ステップ1

手順が少し複雑で2ステップで行う。一つ目のコマンドファイル?(.inp)を作成する。ファイル名は任意のものでよい。

TITLE:
    LCA BCH Method Step1

DATA:
    FILE = manBCH.dat;
VARIABLE: 
    NAMES = U1-U10 X Y;
    USEVARIABLES = U1-U10;
    CATEGORICAL = U1-U10;
    CLASSES = C(3);
    AUXILIARY = X Y;

ANALYSIS:
    TYPE = MIXTURE;
    
SAVEDATA:
    FILE = manBCH2.dat;
    SAVE = bchweights;

ウェブノートにもあるように、クラス数は3つ(CLASSES = C(3))である。
USEVARIABLESに入れるのは潜在クラス分析に使用するU1-U10だけである。CATEGORICALも同様である。
AUXILIARYは共変量Xと従属変数のYを入れておく。
SAVEDATAにはSAVE = bchweights;を入れる。これはBCHのウェイトを書き出して、ステップ2で使用するためである。

実行するとmanBCH2.datというファイルが生成される。manBCH2.datはもともとのデータファイルmanBCH.datのXの後にウェイトの変数W1, W2, W3とMLC(Multilevel Latent Covariate)が継ぎ足されたデータになっている。

ステップ2

ステップ2が実際の分析コードである。

TITLE:
    LCA BCH Method Step2

DATA:
    FILE = manBCH2.dat;
VARIABLE: 
    NAMES = U1-U10 Y X W1-W3 MLC;
    USEVARIABLES = Y X W1-W3;
    TRAINING = W1-W3(bch);
    CLASSES = C(3);

ANALYSIS:
    TYPE = MIXTURE;
    STARTS = 0;
    ESTIMATOR = MLR;

MODEL:
    %overall%
    Y on X;
    %C#1%
    Y on X;
    %C#2%
    Y on X;
    %C#3%
    Y on X;

ステップ2では潜在クラス分析のインジケーターであるU1-U10が含まれていない。
TRAINING = W1-W3(bch)がそれぞれのクラスのウェイトの変数であり、補助コマンドである(bch)がつけられている。
ANALYSISの中でStart=0;となっているのは複数グループの解析でランダム値は必要がないためだ。

結果

MODEL RESULTS

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

Latent Class 1

 Y          ON
    X                 -0.829      6.076     -0.136      0.892

 Intercepts
    Y                464.431    217.155      2.139      0.032

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Latent Class 2

 Y          ON
    X                  5.690     10.162      0.560      0.576

 Intercepts
    Y                343.382    370.228      0.927      0.354

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Latent Class 3

 Y          ON
    X                 -0.425      0.783     -0.542      0.588

 Intercepts
    Y                485.161     41.606     11.661      0.000

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Categorical Latent Variables

 Means
    C#1               -2.103      0.380     -5.529      0.000
    C#2               -2.299      0.441     -5.213      0.000

Rでの仮想データの作成

仮想データの作成

U1 <- sample(0:1, 1000, replace=T,prob=c(0.4,0.6))
U2 <- sample(0:1, 1000, replace=T,prob=c(0.2,0.8))
U3 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U4 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
U5 <- sample(0:1, 1000, replace=T,prob=c(0.3,0.7))
U6 <- sample(0:1, 1000, replace=T,prob=c(0.9,0.1))
U7 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U8 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
U9 <- sample(0:1, 1000, replace=T,prob=c(0.8,0.2))
U10 <- sample(0:1, 1000, replace=T,prob=c(0.55,0.45))
X <- sample(20:75, 1000, replace=T)
Y <- sample(150:800, 1000, replace=T)
d0<- cbind(U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,X,Y)
df <- as.data.frame(d0)

Mplusへの書き出し1

library(MplusAutomation)
variable.names(df) # 変数名を書き出し

Mplusへの書き出し2

prepareMplusData(df, filename="manBCH.dat", 
                keepCols=c("U1","U2","U3", "U4", "U5", "U6", "U7", "U8", "U9", "U10","X","Y"),
                overwrite=T)

manBCH.datという仮想データが書き出される。

参考文献