RとM-plusの比較:SEMの表現

M-plusがver5.2にupgradeしましたね。
最近、プラットフォームとしてはもうRで良いんじゃないかと思っていることもあって、昔M-plusで書いたSEMモデルをRに書き起こしてみた。

結論から言って、当たり前のことなんだけど、RでもM-plusと同じ出力を得ることができました。
数値上の誤差も、ほとんど誤差といえる程度の違い。なるほど、これだったらRは十分使用に耐える。

が、比較してみると、やはりM-plusが少し勝るかな。

大きいのは、式の書き方。
Rの書き方はRAMで書くというものだから、いちいち明記しなければならないことが多い。
M-plusは、例えば特に明記しなければ潜在変数間は相関を仮定してくれる。Rの場合は、仮定するかしないかも明記しなければならない。これが結構面倒。

今日はM-plusとRとの比較をずっとしていたんだけど、M-plusで明示していない、暗黙のパスみたいなのを引き忘れていることが結構あったので、そのたびにやり直しをさせられた。

その次に大きいのは欠損値の問題。
Rは相関行列or分散共分散行列を与えるとき、use=”complete.obs”オプションを入れておかないと、欠損値があるところはNAで返してくるので、モデル計算に入る前にエラーが帰ってくる。
M-plusはver5から、自動的にmissingオプションがついたので、missingをコントロールした分析をしてくれる(恥ずかしながら、詳細を吟味していないので、どのような欠損値補完アルゴリズムなのか知らずにやってます)。

その次に大きいのは、カテゴリカル変数の扱いかな。これについては、明日もう一度チェックしてみるつもり。

さてさて、これらの問題はありますが、例えばコマンド一つで欠損値を除外して計算してくれたり、面倒ではあるけれどもはっきりとモデルを表現できる、というのはRのメリットでもあるわけです。
そして何より、フリーです。

Amosみたいなアクティブ・グラフィックなことはできないけど、結果から自動的にモデル図を書いてくれるコマンドもあるわけで。

すげぇなぁ、というところです。

追伸 SPSSやAmosも17にしました。多少起動が早いかな?