Lapack routine dgesv: system is exactly singular: U[51,51] = 0

382 views
Skip to first unread message

ryan chesnut

unread,
Jan 14, 2023, 11:28:42 AM1/14/23
to lavaan
Hello lavaan community,

I'm encountering the following error message when estimating a cross-lagged panel model using version 0.6-13: Lapack routine dgesv: system is exactly singular: U[51,51] = 0.

I've previously estimated this model using version 0.6-12 with no issues. I've downgraded to version 0.6-12 and the model estimates again seemingly fine. As always, I appreciate the help this group provides.

Here is my model syntax:
t2t5distress.pf.clpm5 <-'
#measurement model
t2dis=~t2ptsdsum+f2*t2depsum+f3*t2anxsum
t3dis=~f1*t3ptsdsum+f2*t3depsum+f3*t3anxsum
t4dis=~f1*t4ptsdsum+f2*t4depsum+f3*t4anxsum
t5dis=~f1*t5ptsdsum+f2*t5depsum+f3*t5anxsum
t2pf=~f4*t2parent_func1r+f5*t2parent_func2r+f6*t2parent_func3r+f7*t2parent_func4r+f8*t2parent_func5r
t3pf=~f4*T3PARENT_FUNC1+f5*T3PARENT_FUNC2+f6*T3PARENT_FUNC3+f7*T3PARENT_FUNC4+f8*T3PARENT_FUNC5
t4pf=~f4*T4PARENT_FUNC1+f5*T4PARENT_FUNC2+f6*T4PARENT_FUNC3+f7*T4PARENT_FUNC4+f8*T4PARENT_FUNC5
t5pf=~f4*T5PARENT_FUNC1+f5*T5PARENT_FUNC2+f6*T5PARENT_FUNC3+f7*T5PARENT_FUNC4+f8*T5PARENT_FUNC5
t2self=~t2mi3+t2mi4+t2mi5+t2mi6
t2oth=~t2mi1+t2mi2+t2mi7+t2mi8+t2mi9
t1combat=~t1expos1r+t1expos2r+t1expos3r+t1expos4r+t1expos5r+t1expos6r+t1expos7r+t1expos8r+t1expos9r
#correlated residuals
t2ptsdsum~~t3ptsdsum+t4ptsdsum+t5ptsdsum
t3ptsdsum~~t4ptsdsum+t5ptsdsum
t4ptsdsum~~t5ptsdsum
t2depsum~~t3depsum+t4depsum+t5depsum
t3depsum~~t4depsum+t5depsum
t4depsum~~t5depsum
t2anxsum~~t3anxsum+t4anxsum+t5anxsum
t3anxsum~~t4anxsum+t5anxsum
t4anxsum~~t5anxsum
t2mi1~~t2mi2; t2mi3~~t2mi4; t2mi5~~t2mi6; t2mi7~~t2mi8+t2mi9
t2parent_func1r~~T3PARENT_FUNC1+T4PARENT_FUNC1+T5PARENT_FUNC1
T3PARENT_FUNC1~~T4PARENT_FUNC1+T5PARENT_FUNC1
T4PARENT_FUNC1~~T5PARENT_FUNC1
t2parent_func2r~~T3PARENT_FUNC2+T4PARENT_FUNC2+T5PARENT_FUNC2
T3PARENT_FUNC2~~T4PARENT_FUNC2+T5PARENT_FUNC2
T4PARENT_FUNC2~~T5PARENT_FUNC2
t2parent_func3r~~T3PARENT_FUNC3+T4PARENT_FUNC3+T5PARENT_FUNC3
T3PARENT_FUNC3~~T4PARENT_FUNC3+T5PARENT_FUNC3
T4PARENT_FUNC3~~T5PARENT_FUNC3
t2parent_func4r~~T3PARENT_FUNC4+T4PARENT_FUNC4+T5PARENT_FUNC4
T3PARENT_FUNC4~~T4PARENT_FUNC4+T5PARENT_FUNC4
T4PARENT_FUNC4~~T5PARENT_FUNC4
t2parent_func5r~~T3PARENT_FUNC5+T4PARENT_FUNC5+T5PARENT_FUNC5
T3PARENT_FUNC5~~T4PARENT_FUNC5+T5PARENT_FUNC5
T4PARENT_FUNC5~~T5PARENT_FUNC5
#correlated disturbances
t2self~~t2oth+t2dis+t2pf
t2oth~~t2dis+t2pf
t2dis~~t2pf
t3dis~~t3pf
t4dis~~t4pf
#LV variances
t2dis~~1*t2dis
t3dis~~NA*t3dis
t4dis~~NA*t4dis
t5dis~~NA*t5dis
t2pf~~1*t2pf
t3pf~~NA*t3pf
t4pf~~NA*t4pf
t5pf~~NA*t5pf
#structural model
t2self~t1combat+T1GENDER+t1paygrade2+t1deptimer+t2numkids+navy+marines+af+ngr+t2secondmarr+t2nevermarried+t2sdw+race
t2oth~t1combat+T1GENDER+t1paygrade2+t1deptimer+t2numkids+navy+marines+af+ngr+t2secondmarr+t2nevermarried+t2sdw+race
t2dis~t1combat+T1GENDER+t1paygrade2+t1deptimer+t2numkids+navy+marines+af+ngr+t2secondmarr+t2nevermarried+t2sdw+race
t2pf~t1combat+T1GENDER+t1paygrade2+t1deptimer+t2numkids+navy+marines+af+ngr+t2secondmarr+t2nevermarried+t2sdw+race
t3dis~c1*t2dis+a1*t2self+a2*t2oth+b1*t2pf
t4dis~c2*t2dis+c3*t3dis+a3*t2self+a4*t2oth+b2*t2pf+b3*t3pf
t5dis~c4*t2dis+c5*t3dis+c6*t4dis+a5*t2self+a6*t2oth+b4*t2pf+b5*t3pf+b6*t4pf
t3pf~c7*t2pf+b7*t2dis+a7*t2self+a8*t2oth
t4pf~c8*t2pf+c9*t3pf+b8*t2dis+b9*t3dis+a9*t2self+a10*t2oth
t5pf~c10*t2pf+c11*t3pf+c12*t4pf+b10*t2dis+b11*t3dis+b12*t4dis+a11*t2self+a12*t2oth
#Indirect Effects
t2s.t3d.t4p := a1*b9
t2o.t3d.t4p := a2*b9
t2s.t4d.t5p := a3*b12
t2o.t4d.t5p := a4*b12
t2s.t3d.t4d.t5p := a1*c3*b12
t2o.t3d.t4d.t5p := a2*c3*b12
t2s.t3p.t4p := a7*c9
t2o.t3p.t4p := a8*c9
t2s.t4p.t5p := a9*c12
t2o.t4p.t5p := a10*c12
t2s.t3p.t4p.t5p := a7*c9*c12
t2o.t3p.t4p.t5p := a8*c9*c12
t2s.t3d.t4p.t5p := a1*b9*c12
t2o.t3d.t4p.t5p := a2*b9*c12
t2d.t3d.t4p := c1*b9
t2d.t3d.t4d.t5p := c1*c3*b12
t3d.t4d.t5p := c3*b12
t2d.t3p.t4p := b7*c9
t2d.t3p.t4p.t5p := b7*c9*c12
t3d.t4p.t5p := b9*c12
'
t2t5distress.pf.clpm5.fit <- sem(t2t5distress.pf.clpm5,spss1,estimator="MLR",missing="FIML.x",std.lv=TRUE)
summary(t2t5distress.pf.clpm5.fit,fit.measures=TRUE,standardized=TRUE,rsquare=TRUE)

Thanks,

Ryan

Terrence Jorgensen

unread,
Jan 19, 2023, 4:13:29 AM1/19/23
to lavaan
If you can provide the data for a reprex, it could be useful to open an issue on GitHub. 

Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

Yves Rosseel

unread,
Jan 19, 2023, 4:25:20 AM1/19/23
to lav...@googlegroups.com
This is most likely due to a bug in 0.6-13 (only) that occurs if you have:
- missing = "ml" (or "fiml", or "fiml.x")
- exogenous observed 'x' covariates in the model
- fixed.x = TRUE (which is the default)

and you request the default fit measures. The error occurs in a new
piece of code that computes the 'robust' RMSEA in case of incomplete data.

As a workaround, either set fixed.x = FALSE, or downgrade to 0.6-12:

library(remotes)
install_version("lavaan", "0.6-12")

or install the github version where this bug has been fixed:

library(remotes)
install_github("yrosseel/lavaan")

A new version of lavaan (0.6-14) including this fix will probably be
released in a few weeks.

Yves.
Reply all
Reply to author
Forward
0 new messages