井出草平の研究ノート

Stata LCA プラグインを使用した潜在クラス分析 導入偏[Stata]

Stata15から標準機能で潜在クラス分析ができるようになっている。

ただ、基本的な機能しかないため、Stataの標準機能の潜在クラス分析は現在のところ実用に耐えられない。そこで、面倒な作業が必要になるが、Lanzaらが作成したStata LCA プラグインを使わざるを得ない。

Stataの標準機能

Stataの標準機能の潜在クラス分析は下記のエントリで解説を行っている。

ides.hatenablog.com

Stataの標準機能にかけているものは2つある。

  1. BLRTが計算できない。 潜在クラス分析を使った論文で求められる統計量であるBLRTがStataの標準機能では計算できない。無料のRでも少し工夫をすれば計算できる(参照)ので、有料であるStataを選ぶのは合理的な選択とは言いづらい。

  2. モデルの拡張ができない。 潜在クラス分析はクラス分け(グルーピング)をしただけでは、興味深い結果にならないことが多い。実際には、他の変数との関連性を検討することが必要になる。しかし、Stataの標準機能ではこのモデルの拡張ができない。

ここの2つの理由から現在のStataの標準機能での潜在クラス分析は勧められない。

そこで、Lanzaらの作ったプラグインを使う必要が出てくるのである。ただ、パッケージではなく、プラグインであるため、導入と運用にはハードルが少し高い。このハードルを越えられれば、MplusやLatent Goldなどのソフトウェアと同程度の分析が可能になる。

Stata LCA プラグインの注意点と他のソフトウェア

Windowsにしか対応していない。

  • Mplus Macにも対応。現在の最新技術まで利用できる。

  • Latent Gold Windowsのみ対応。現在の最新技術まで利用できる。GUIで操作性が非常によい。アカデミックでも30万弱、一般で80万とかなり高額。

  • SAS LCA PROC SAS用にLanzaらが配布しているプラグイン。無料である。ただしSASの方が高額である。SASMacにも対応しているが、LanzaらのプラグインWindowsのみ対応。もちろん無料版のSAS University Editionには対応していない。

Macの人は1) Mplusを使う(他のソフトウェアの使用をあきらめる)、2) デュアルブートWindowsを動かす、3)Winodws機を購入するという3点が選択肢になる。

Stata LCA プラグインのダウンロード

www.methodology.psu.edu

上記のページから32-bit版/64-bit版のファイルをダウンロードする。
Windowsが64bitに対応していれば、どちらでもよいが、BLRTをおなうことを想定すると、計算時にメモリを多く使用するため、メモリの使用に制限がない64-bit版の方がおそらくよいだろう。

プラグインのインストール

ダウンロードしたファイルを解凍

ファイルを常時設置するディレクトリ(フォルダ)が必要になる。ファイルをどこに置くかはよく考えた方がよいだろう。マニュアルの例は次の場所。“D:\project\Stata_lca\Release\” 。
一般的にこのようなソフトウェアは日本語など2バイト文字を含むアドレス上に置くと動作しないことが多いため、Windowsのユーザー名を日本語で入れている人はユーザーフォルダは避けた方がよい。

下記で変更を行う"lca.do"、"doLCA.ado"は解凍フォルダに入っているため、解凍したファイルすべてを自分で決めた場所のフォルダに移動する。

doファイルの設定

doファイルは毎回設定をする必要があるので、後で説明。

"doLCA.ado"ファイル内のパスを変更

  1. ファイル"doLCA.ado"を開く。 注:Stataの[ファイル]→[開く]から。ファイルをダブルクリックしても開かない。
  2. コードの一番最後の行(869行目)の"lca.dll"のパスを先ほどと同じように変更する。 例では“D:\project\Stata_lca\Release\lca.dll”。必ず"lca.dll"までを含めたパスを書く必要がある。
  3. 変更を保存。

doファイルの設定

同梱されている"lca.do"ファイルは5つの例題が掲載されている。動作確認するには例1だけ走らせるのがよいだろう。

  1. "lca.do"ファイルをコピーし、"lca_ex01.do"など任意の名前にリネームする。
  2. 22行目(//matrix list r(rhoSTD))までが例1なので、任意の名前に変更したファイルの23行目以降削除する。これで例1だけのdoファイルになる。
  3. コードの5行目で、パス“D:\project\Stata_lca\Release\”をさきほどファイルを置いた場所に変更する。この行には“/CHANGE THIS PATH TO MATCH THE FILE LOCATION ON YOUR MACHINE/”という文字が書きこまれてあるのですぐに発見できるはずだ。
  4. 変更を保存し、doファイルを実行する。

結果

例1はこれでとりあえず走るはずである。

scalars:
                 r(df) =  4031
        r(EntropyRsqd) =  .8585102062978721
         r(EntropyRaw) =  227.7190382066842
        r(AdjustedBIC) =  979.1363404006836
               r(caic) =  1246.403913372541
                r(bic) =  1182.403913372541
                r(aic) =  868.3075755176842
           r(Gsquared) =  740.3075755176842
      r(loglikelihood) =  -3366.110782824834
          r(iteration) =  591

matrices:
             r(rhoSTD) :  24 x 5
                r(rho) :  24 x 5
           r(gammaSTD) :  1 x 5
              r(gamma) :  1 x 5

. matrix list r(gamma)

r(gamma)[1,5]
       Class1     Class2     Class3     Class4     Class5
r1  .67019096  .06416831  .14781815  .06554844  .05227414

. matrix list r(gammaSTD)

r(gammaSTD)[1,5]
       Class1     Class2     Class3     Class4     Class5
r1  .02334551  .01335266  .02312087  .00856993  .01521007

所属確率が出力されないのは21行目の"matrix list r(rho)"が"//"でミュートされているためである。
実際に分析する場合には、"//"を取り除く。標準化した結果が欲しい場合には、22行目の//matrix list r(rhoSTD)のミュートを外す。

実行に必要になるもの

2回目以降の分析で必要になるものが3ある。

  1. doファイル スクリプトを書き込むのはdoファイルである。

  2. データファイル 同梱の"LcaSampleDataset.txt"を開くとデータの構造がわかるはずである。変数名は入れず、データは数字で入力。データとデータの間は半角スペースで区切る。

以下のような形式である。

1 3 15 2 2 2 2 2 2 2 2 2 2 2 2 1
1 1 17 2 2 2 2 2 2 2 2 2 2 2 2 2
1 0 17 2 2 2 1 2 2 2 2 2 2 2 2 3
2 2 19 2 2 2 1 2 2 2 2 2 2 2 2 4
1 4 17 2 2 2 2 2 2 2 2 2 2 2 2 5
2 2 15 2 2 2 2 2 2 2 2 2 2 2 2 6
2 5 15 2 1 1 1 1 2 2 2 2 2 2 2 7
2 1 11 2 2 2 2 2 2 2 2 2 2 2 2 8
1 2 14 1 2 2 2 1 2 2 2 2 2 2 1 9
1 0 17 2 2 2 2 2 2 2 2 2 2 2 2 10

3. 変数名ファイル データファイルと同じ名前で作成する。拡張子はdct。変数名はこのファイルに格納する。

同梱の"LcaSampleDataset.dct"は下記の内容が書かれている。

dictionary using LcaSampleDataset.txt
{
   gender TVHours MomEduc SmokedBefore13 DailySmoke DroveDrunk
   DrankBefore13 BingeDrink MarijuanaBefore13 CocaineEver
   GlueEver MethEver EcstasyEver SexBefore13 ManyPartners ID
}

表示できないので改行をしているが、実際には改行はしてはいけない。 編集はテキストエディタを利用する。こちらもdoファイルと同様に、分析ごと(正確には新しいデータを使うごと)に設定が必要になる。

テキストエディタ

テキストエディタを使ったことがない人には下記の2つのソフトウェアの導入をお勧めする。

多機能のテキストエディタAtomがよい。

atom.io

ただし、Atomはプログラミングからメモまで多くの機能を持った多機能エディタで設定もそれなりに勉強が必要なので、dctファイルの編集のためだけに導入するのはハードルが高い。

シンプルな機能のみに対応したテキストエディタTeraPadがよいと思う。

tera-net.com

AtomTeraPadともフリーウェアである。
秀丸EmEditor、SublimeText3などでもよい。使い慣れた利用するとよいと思う。