Help us understand the problem. What is going on with this article?

[R] lavaanパッケージのsem実行時に「システムは正確に特異です: U[2,2] = 0」などと出るエラーの解消法の一例

要点

私のケースでは、以下の様に=~で潜在変数間に双方向のパスを作るとシステムは正確に特異です: 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

一方、次の様にf1f2の関係を=~ではなく~で表すとエラーが消失しました。

R
model = '
# f : 潜在変数
# x : 観測変数

f1 =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6

# ここを変更した
f2 ~ f1
f1 ~ f2
'

fit <- sem(model, data=X)
Masahiro_T
困ったときの再起動
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away