前回に引きつづき潜在クラス分析における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という仮想データが書き出される。
参考文献
- Asparouhov T. & Muthen B. (2014). Auxiliary variables in mixture modeling: Three-step approaches using Mplus. Structural Equation Modeling: A Multidisciplinary Journal, 21, 329-341. http://statmodel.com/download/AppendicesOct28.pdf