LEM
ログリニア分析、潜在クラス分析、イベント・ヒストリー分析ができるフリーソフトのLEMのプログラム紹介です。
【注意点】
maximum number of iterationsのdefaultが5000となっているので,
特に大規模調査などのデータ分析ではiterationsの回数を多くする.
【SPSSデータの保存】
SAVE TRANSLATE OUTFILE='D:\LEM\file.dat'
/TYPE=TAB /MAP /REPLACE
/CELLS=VALUES
KEEP= varA .
RでLEMを動かす
藤原他(2012)にて,以下のようにLEMで繰り返し推定はRを使えば簡単ということを説明しました。
LEMでは、手動であるいは R でプログラムを呼び出すなどして何度も推定を行う必要があるが、Mplus であれ
ば ANALYSIS の STARTS において複数の初期値と最適化法を与えて比較し、そこから大局的な解を得る
ことが可能である(例えば、STARTS = 500 10 とする)。
RからLEMを呼び出して結果をまとめれば良いということですね。具体的にどうするんだということで,
Rのsystemを使ったやり方を紹介します。
setwd("C:/lemwin")
system("C:/lemwin/lem95 examples/HAG90_1A.INP examples/HAG90_1A.OUT")
result <-read.delim("examples/HAG90_1A.OUT")
x<-substr(result[29,1], 25, 40)
LEMの出力をどのようにRで整形したらよいかあまりわかってないのですが,大体こんなかんじです。
なおSeedは時刻をもとに設定されるのだそうですが,どのSeedを用いたかわからないので,あとで結果を再現しようとすると
また繰り返しプログラムを走らせる必要があります。そこで,100か1000個くらい
seedを変えたINPファイルを作成してそれを走らせればいいと思います。これをLEMでしようと思うと大変ですが,
Rなら簡単ですね。
【参考文献】
藤原翔・伊藤理史・谷岡謙.2012.「潜在クラス分析を用いた計量社会学的アプローチ———地位の非一貫性,格差意識,権威主義的伝統主義を例に」『年報人間科学』33:43–68. pdf.
MacでRでLEMを動かす
MacでLEMを動かすことはWineを使えば可能ですが,やはりRから操作したいです.
というわけで,以下のような感じでWine -> Lem95 -> INP -> OUTとしてみました.どうせRで表やグラフを作成するので,
OUTPUTをファイルに保存してまたRで読み込んで適当に処理したほうが楽です.
WineはEasyWineを使用しました.
system("/Applications/EasyWine.app/Contents/Resources/wine/bin/wine lem95 HAG90_1A.INP HAG90_1A.OUT")