要点
私のケースでは、以下の様に=~
で潜在変数間に双方向のパスを作るとシステムは正確に特異です: U[2,2] = 0
といったエラーが出ました。
R
# f1 f2 は潜在変数
f1 =~ f2
f2 =~ f1
そして、次の様に~
に置き換えると解決されました。
R
# f1 f2 は潜在変数
f2 ~ f1
f1 ~ f2
共分散構造分析[R編] --構造方程式モデリングという本に書かれている様に、=~
は潜在変数から観測変数へのパスを作る時に使用するのが良いのかもしれません。
経緯
Rのlavaanパッケージを利用して共分散構造分析(別称:構造方程式モデリング)を行っていた時次の様なエラーメッセージが表示されました。
R
library(lavaan)
X <- read.csv('data.csv')
model = '
# f : 潜在変数
# x : 観測変数
f1 =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f1 =~ f2
f2 =~ f1
'
fit <- sem(model, data=X)
console
solve.default(tmp) でエラー:
Lapack routine dgesv: システムは正確に特異です: U[2,2] = 0
一方、次の様にf1
とf2
の関係を=~
ではなく~
で表すとエラーが消失しました。
R
model = '
# f : 潜在変数
# x : 観測変数
f1 =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
# ここを変更した
f2 ~ f1
f1 ~ f2
'
fit <- sem(model, data=X)