Rにはpolycor関数があって、ポリコリック相関係数を算出してくれます。
M-plusでも変数をカテゴリカルに設定し、分析タイプをBASICにするとポリコリックな相関行列を算出してくれます。
Rのsemパッケージでは、sem(モデル,行列,N)という形でモデルをフィットさせるのだけど、この「行列」のところにポリコリック相関行列を入れて、モデルを解析してみました。
M-plusでは変数をカテゴリカル設定し、そのままモデルをかくだけ。
で、比較してみた。
連続変数の時は、相関行列もモデルのパス係数もほぼ同じ。
カテゴリカルにしたときは、相関行列の段階ではRもM-plusもほぼ同じ答えを返す。
が、モデルのパス係数、という意味ではだいぶん違っている。
きっと、M-plusは素データからカテゴリカルな分散共分散行列を出して、モデルフィットを狙うんだろうな。
ここで私がやったように、一旦出した推定値をもとにモデルフィットする、というのは邪道っちゃあ邪道なんだろうな。
この辺ではやはり、M-plusの方がいいわけです。
もちろん、M-plusのアルゴリズム(元の論文があるはず。Muthenはできる子)を見ずに語っているし、M-plusしかできないことなので、M-plusの値が本当に会っているのかどうかの検証ができないという問題はあるんだけど・・・*1。
あと、昨日書くのを忘れていましたが、もう一つ二つ、M-plusのメリットがあります。
- 計算が速い!ポリコリック相関係数もあっという間に算出する!Rは少し待たせますな。
- 修正指数を出してくれる!Rにもこのオプション欲しいなぁ。
- ICCを書いてくれる!今三相モデルをかいているんだけど、一つの項目に二つの潜在変数からパスが来ている、という状況でのICCを書いてくれるのはとても嬉しい。哲学が一貫しているって、いいよね。
あぁ、じゃあやっぱりRの負けか、というのは早計。Rは他にも色々できるんです。ここで比較したのはSEMという表線形のごく一部。高次積率構造のプログラムを書くとか、非線形(双対尺度法とか)、裏線形(ニューラルネット、決定木)みたいなこともRはパッケージを追加するだけでできる。その他にも、Rでできることは山のようにあるわけで、守備範囲の広さという意味では圧倒的にRの勝ちです。
ま、心理統計関係でよく使われるモデルで比較してみました、というだけの話です。
*1:無用な心配であることはわかっています。理論家は、ある真のモデルというのを書いて、実現値を乱数を使って発生させ、モデルをかいて真の値が復元できるか、というチェックの仕方をする。でもまぁ、私のような頭の悪い実践家は、手元にあるデータを複数のソフトで分析してみて、同じ値が出たら安心する、というチェックの仕方しかできないわけです。真のモデルもわからないのにね。でも、ユーザーの視点からみたら、こういう安心感−ただの気分の問題だ、というのはわかってますが−って、大事なことなんです。