LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-07-02

要点

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0