探索的因子分析で完全情報最尤法を実行するRの関数を作りました

久々の記事です。※追記あり

タイトルのまんまですが、Rで探索的因子分析(EFA)で完全情報最尤法(FIML)を実行できる方法について質問されたので、そういやそういうパッケージないなーと思ってました。たぶん探せばあるとは思うのですが、探すより作ったほうが早いと思い、作ってみました。

何を思いついたかと言えば、lavaanはCFAでFIMLが実行できます。EFAはCFAのパス図を工夫すれば、推定ができますから、あとはlavaan用のモデルを自動生成する関数を作ればいいだけです。

必要パッケージはlavaanだけですが、推定した因子負荷行列について因子軸の回転がいると思うので、GPArotationパッケージも入れておくといいと思います。あと、psychも入れておくとFIMLじゃない普通の推定結果と比較できますね。

よくよく考えたら、回転したあとの因子得点がないとFIMLの意味がないと思ったので、関数を修正しました。引数に回転方法(faと同じ引数です)もいれるようにしました。

というわけで関数fimlEFAのコードです。そんなに長くないです。

引数はデータと因子数だけと回転方法です。

使い方は次のような感じ。

結果は次のような感じ。

bfiはデータサイズが大きいですが、それでも数十秒で分析が終わりました。

HADにもFIMLでEFAができますが、断然こっちのほうが早いですね。もちろん結果は一致してました。

というわけで、Rでとてもお手軽にFIMLでEFAができましたね。めでたしめでたし。

This entry was posted in 心理統計学. Bookmark the permalink.