[R]{lavaan} cfa() : covariance matrix of latent variables is not positive definiteという警告の原因と対策

cfa()を実行すると以下の警告メッセージが出力されることがある。

Warning message:
In lav_object_post_check(lavobject) :
lavaan WARNING: covariance matrix of latent variables is not positive definite; use inspect(fit,”cov.lv”) to investigate.

このメッセージは、潜在変数間の一部に高すぎる相関が存在することを意味する。即ち識別不可能な潜在変数の組み合わせが存在している。

警告メッセージではinspect(fit,”cov.lv”)を実行してエラーを生じている箇所を特定せよと言われるが、潜在変数間の共分散を出力するinspect(fit,”cov.lv”)よりも、相関行列を出力するinspect(fit,”cor.lv”)を実行したほうがよい。この相関行列で1を超える値を示している組み合わせに問題がある。

以下、私が経験した実例を提示する。

> inspect(cfa.fit21,"cor.lv")
         f1    f2    f3    f4    f5    f6    f7    distal proxml
f1       1.000                                                  
f2       0.050 1.000                                            
f3       0.211 0.047 1.000                                      
f4       0.185 0.513 0.174 1.000                                
f5       0.079 0.018 0.075 0.065 1.000                          
f6       0.114 0.317 0.107 0.016 0.040 1.000                    
f7       0.280 0.063 0.263 0.231 0.099 0.143 1.000              
distal   0.474 0.107 0.445 0.390 0.168 0.241 0.592 1.000        
proximal 1.139 3.164 1.071 0.162 0.404 0.100 1.423 2.405  1.000

このモデルではf1~f7が1次因子、distalとproximalが2次因子である。つまり2次因子分析モデルを想定した。しかし2次因子であるproximalにおいて1を超える相関係数が多数出力されており、これが独立した因子とは考えられないことがわかる。

コメント