Skip to contents

The lavaan.pl package allows the estimation of confirmatory factor models for ordinal data using stochastic and numeric pairwise likelihood optimisation.

Installation

You can install the development version of lavaan.pl from GitHub with:

# install.packages("devtools")
devtools::install_github("giuseppealfonzetti/lavaan.pl")

When the package is installed, you can load it with:

library(lavaan.pl)
#> ℹ Loading required package: lavaan
#> This is lavaan 0.6-19
#> lavaan is FREE software! Please report any bugs.
#> 
#> ── Conflicts ──────────────────────────────────────────────── lavaan.pl 0.1.0.9002 ──
#> ✖ lavaan.pl::cfa() masks lavaan::cfa()

The startup message indicates that the lavaan.pl package provides its own version of the cfa() function, which can be used to estimate lavaan.pl models using the lavaan syntax. An example is given below.

Fitting an ordinal CFA model

Consider the data containing 25 personality items measured on 6-point scale from the International Personality Item Pool (IPIP) dataset. The data set is available in the lavaan.pl package and can be loaded with the following code:

data("bfi")
head(bfi)
#> # A tibble: 6 × 28
#>   A1    A2    A3    A4    A5    C1    C2    C3    C4    C5    E1    E2    E3   
#>   <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord> <ord>
#> 1 6     6     5     6     5     6     6     6     1     3     2     1     6    
#> 2 4     3     1     5     1     3     2     4     2     4     3     6     4    
#> 3 4     4     5     6     5     4     3     5     3     2     1     3     2    
#> 4 4     5     2     2     1     5     5     5     2     2     3     4     3    
#> 5 1     5     6     5     6     4     3     2     4     5     2     1     2    
#> 6 2     6     5     6     5     3     5     6     3     6     2     2     4    
#> # ℹ 15 more variables: E4 <ord>, E5 <ord>, N1 <ord>, N2 <ord>, N3 <ord>,
#> #   N4 <ord>, N5 <ord>, O1 <ord>, O2 <ord>, O3 <ord>, O4 <ord>, O5 <ord>,
#> #   gender <int>, education <int>, age <int>

The lavaan model syntax to fit a confirmatory factor analysis model with 5 latent factors, where the first 5 items load on the first factor and so on, is:

mod <- "
  opn =~ O1 + O2 + O3 + O4 + O5  # Openness
  con =~ C1 + C2 + C3 + C4 + C5  # Conscientiousness
  ext =~ E1 + E2 + E3 + E4 + E5  # Extraversion
  agr =~ A1 + A2 + A3 + A4 + A5  # Agreeableness
  neu =~ N1 + N2 + N3 + N4 + N5  # Neuroticism
"

Users of lavaan will be familiar with this syntax. The call to the cfa() function is made as usual:

# Fit the model (note, this cfa() function is from the lavaan.pl package)
fit <- cfa(model = mod, data = bfi, std.lv = TRUE, test = "mean.var.adjusted")
summary(fit)
#> lavaan.pl 0.1.0.9002 
#>   ⨉
#> lavaan 0.6-19 ended normally after 98 iterations
#> 
#>   Estimator                                        PML
#>   Optimization method                           UCMINF
#>   Number of model parameters                       160
#> 
#>   Number of observations                          2236
#> 
#> Model Test User Model:
#>                                               Standard      Scaled
#>   Test Statistic                              4584.031    7205.822
#>   Degrees of freedom                               265     333.065
#>   P-value (Unknown)                                 NA       0.000
#>   Scaling correction factor                                  0.636
#>     mean+var adjusted correction (PML)                            
#> 
#> Parameter Estimates:
#> 
#>   Parameterization                               Delta
#>   Standard errors                             Sandwich
#>   Information bread                           Observed
#>   Observed information based on                Hessian
#> 
#> Latent Variables:
#>                    Estimate  Std.Err  z-value  P(>|z|)
#>   opn =~                                              
#>     O1                0.647    0.059   10.909    0.000
#>     O2               -0.444    0.093   -4.757    0.000
#>     O3                0.808    0.056   14.370    0.000
#>     O4                0.136    0.056    2.409    0.016
#>     O5               -0.486    0.055   -8.781    0.000
#>   con =~                                              
#>     C1                0.564    0.077    7.302    0.000
#>     C2                0.571    0.069    8.317    0.000
#>     C3                0.543    0.075    7.267    0.000
#>     C4               -0.760    0.072  -10.522    0.000
#>     C5               -0.706    0.073   -9.611    0.000
#>   ext =~                                              
#>     E1                0.540    0.075    7.242    0.000
#>     E2                0.727    0.071   10.213    0.000
#>     E3               -0.690    0.068  -10.223    0.000
#>     E4               -0.742    0.071  -10.511    0.000
#>     E5               -0.620    0.095   -6.535    0.000
#>   agr =~                                              
#>     A1                0.335    0.072    4.662    0.000
#>     A2               -0.663    0.090   -7.368    0.000
#>     A3               -0.771    0.094   -8.183    0.000
#>     A4               -0.545    0.076   -7.217    0.000
#>     A5               -0.774    0.093   -8.336    0.000
#>   neu =~                                              
#>     N1                0.837    0.063   13.230    0.000
#>     N2                0.801    0.063   12.808    0.000
#>     N3                0.755    0.059   12.914    0.000
#>     N4                0.666    0.067   10.009    0.000
#>     N5                0.570    0.070    8.122    0.000
#> 
#> Covariances:
#>                    Estimate  Std.Err  z-value  P(>|z|)
#>   opn ~~                                              
#>     con               0.322    0.083    3.871    0.000
#>     ext              -0.466    0.054   -8.631    0.000
#>     agr              -0.269    0.060   -4.487    0.000
#>     neu              -0.146    0.120   -1.218    0.223
#>   con ~~                                              
#>     ext              -0.390    0.091   -4.283    0.000
#>     agr              -0.370    0.098   -3.781    0.000
#>     neu              -0.301    0.085   -3.532    0.000
#>   ext ~~                                              
#>     agr               0.702    0.083    8.468    0.000
#>     neu               0.267    0.066    4.030    0.000
#>   agr ~~                                              
#>     neu               0.232    0.044    5.303    0.000
#> 
#> Thresholds:
#>                    Estimate  Std.Err  z-value  P(>|z|)
#>     O1|t1            -2.447    0.126  -19.379    0.000
#>     O1|t2            -1.695    0.255   -6.642    0.000
#>     O1|t3            -1.190    0.390   -3.055    0.002
#>     O1|t4            -0.430    0.481   -0.894    0.371
#>     O1|t5             0.455    0.408    1.116    0.265
#>     O2|t1            -0.565    0.344   -1.642    0.101
#>     O2|t2             0.131    0.158    0.828    0.408
#>     O2|t3             0.495    0.198    2.494    0.013
#>     O2|t4             1.011    0.270    3.748    0.000
#>     O2|t5             1.557    0.274    5.676    0.000
#>     O3|t1            -1.990    0.210   -9.454    0.000
#>     O3|t2            -1.451    0.195   -7.447    0.000
#>     O3|t3            -0.956    0.161   -5.936    0.000
#>     O3|t4            -0.122    0.143   -0.852    0.394
#>     O3|t5             0.839    0.228    3.678    0.000
#>     O4|t1            -2.187    0.175  -12.521    0.000
#>     O4|t2            -1.567    0.302   -5.183    0.000
#>     O4|t3            -1.246    0.264   -4.717    0.000
#>     O4|t4            -0.607    0.264   -2.296    0.022
#>     O4|t5             0.255    0.353    0.722    0.470
#>     O5|t1            -0.584    0.277   -2.108    0.035
#>     O5|t2             0.261    0.166    1.576    0.115
#>     O5|t3             0.771    0.153    5.039    0.000
#>     O5|t4             1.341    0.273    4.919    0.000
#>     O5|t5             1.931    0.221    8.758    0.000
#>     C1|t1            -2.011    0.227   -8.853    0.000
#>     C1|t2            -1.432    0.243   -5.897    0.000
#>     C1|t3            -0.960    0.165   -5.815    0.000
#>     C1|t4            -0.269    0.174   -1.545    0.122
#>     C1|t5             0.736    0.293    2.513    0.012
#>     C2|t1            -1.880    0.221   -8.490    0.000
#>     C2|t2            -1.203    0.307   -3.921    0.000
#>     C2|t3            -0.785    0.208   -3.776    0.000
#>     C2|t4            -0.146    0.318   -0.459    0.646
#>     C2|t5             0.828    0.351    2.358    0.018
#>     C3|t1            -1.887    0.221   -8.540    0.000
#>     C3|t2            -1.191    0.234   -5.081    0.000
#>     C3|t3            -0.778    0.183   -4.249    0.000
#>     C3|t4            -0.022    0.246   -0.091    0.927
#>     C3|t5             0.921    0.286    3.219    0.001
#>     C4|t1            -0.550    0.283   -1.948    0.051
#>     C4|t2             0.208    0.183    1.141    0.254
#>     C4|t3             0.664    0.153    4.345    0.000
#>     C4|t4             1.289    0.300    4.301    0.000
#>     C4|t5             2.033    0.188   10.818    0.000
#>     C5|t1            -0.886    0.177   -4.999    0.000
#>     C5|t2            -0.254    0.116   -2.185    0.029
#>     C5|t3             0.047    0.121    0.393    0.695
#>     C5|t4             0.630    0.127    4.949    0.000
#>     C5|t5             1.303    0.188    6.929    0.000
#>     E1|t1            -0.728    0.363   -2.004    0.045
#>     E1|t2            -0.063    0.157   -0.401    0.689
#>     E1|t3             0.311    0.228    1.367    0.172
#>     E1|t4             0.789    0.237    3.329    0.001
#>     E1|t5             1.373    0.307    4.470    0.000
#>     E2|t1            -0.867    0.339   -2.557    0.011
#>     E2|t2            -0.153    0.251   -0.609    0.543
#>     E2|t3             0.169    0.239    0.704    0.481
#>     E2|t4             0.754    0.376    2.003    0.045
#>     E2|t5             1.320    0.277    4.758    0.000
#>     E3|t1            -1.625    0.174   -9.340    0.000
#>     E3|t2            -1.010    0.186   -5.445    0.000
#>     E3|t3            -0.518    0.114   -4.535    0.000
#>     E3|t4             0.267    0.218    1.224    0.221
#>     E3|t5             1.148    0.148    7.737    0.000
#>     E4|t1            -1.628    0.248   -6.553    0.000
#>     E4|t2            -1.061    0.367   -2.890    0.004
#>     E4|t3            -0.716    0.157   -4.566    0.000
#>     E4|t4            -0.263    0.412   -0.638    0.523
#>     E4|t5             0.640    0.251    2.549    0.011
#>     E5|t1            -1.813    0.229   -7.919    0.000
#>     E5|t2            -1.199    0.206   -5.822    0.000
#>     E5|t3            -0.798    0.176   -4.537    0.000
#>     E5|t4            -0.168    0.135   -1.241    0.215
#>     E5|t5             0.790    0.284    2.778    0.005
#>     A1|t1            -0.403    0.107   -3.780    0.000
#>     A1|t2             0.363    0.133    2.737    0.006
#>     A1|t3             0.780    0.134    5.800    0.000
#>     A1|t4             1.270    0.104   12.172    0.000
#>     A1|t5             1.888    0.190    9.963    0.000
#>     A2|t1            -2.156    0.185  -11.659    0.000
#>     A2|t2            -1.558    0.311   -5.017    0.000
#>     A2|t3            -1.223    0.392   -3.116    0.002
#>     A2|t4            -0.513    0.368   -1.393    0.164
#>     A2|t5             0.456    0.311    1.463    0.144
#>     A3|t1            -1.849    0.212   -8.718    0.000
#>     A3|t2            -1.332    0.124  -10.757    0.000
#>     A3|t3            -0.995    0.138   -7.187    0.000
#>     A3|t4            -0.350    0.128   -2.733    0.006
#>     A3|t5             0.593    0.119    4.967    0.000
#>     A4|t1            -1.716    0.266   -6.442    0.000
#>     A4|t2            -1.206    0.253   -4.769    0.000
#>     A4|t3            -0.927    0.199   -4.671    0.000
#>     A4|t4            -0.423    0.188   -2.247    0.025
#>     A4|t5             0.202    0.310    0.651    0.515
#>     A5|t1            -2.015    0.174  -11.584    0.000
#>     A5|t2            -1.364    0.346   -3.942    0.000
#>     A5|t3            -0.946    0.256   -3.701    0.000
#>     A5|t4            -0.277    0.322   -0.861    0.389
#>     A5|t5             0.652    0.369    1.766    0.077
#>     N1|t1            -0.711    0.177   -4.009    0.000
#>     N1|t2            -0.060    0.141   -0.428    0.669
#>     N1|t3             0.335    0.141    2.377    0.017
#>     N1|t4             0.892    0.158    5.647    0.000
#>     N1|t5             1.489    0.201    7.427    0.000
#>     N2|t1            -1.163    0.141   -8.225    0.000
#>     N2|t2            -0.473    0.106   -4.452    0.000
#>     N2|t3            -0.094    0.101   -0.934    0.350
#>     N2|t4             0.570    0.114    5.003    0.000
#>     N2|t5             1.259    0.171    7.382    0.000
#>     N3|t1            -0.924    0.199   -4.631    0.000
#>     N3|t2            -0.210    0.133   -1.580    0.114
#>     N3|t3             0.106    0.138    0.764    0.445
#>     N3|t4             0.685    0.137    5.003    0.000
#>     N3|t5             1.351    0.226    5.969    0.000
#>     N4|t1            -0.961    0.266   -3.606    0.000
#>     N4|t2            -0.235    0.138   -1.699    0.089
#>     N4|t3             0.155    0.196    0.791    0.429
#>     N4|t4             0.768    0.169    4.539    0.000
#>     N4|t5             1.341    0.221    6.082    0.000
#>     N5|t1            -0.714    0.206   -3.467    0.001
#>     N5|t2            -0.035    0.153   -0.231    0.817
#>     N5|t3             0.297    0.134    2.218    0.027
#>     N5|t4             0.825    0.125    6.605    0.000
#>     N5|t5             1.358    0.240    5.653    0.000
#> 
#> Variances:
#>                    Estimate  Std.Err  z-value  P(>|z|)
#>    .O1                0.581                           
#>    .O2                0.803                           
#>    .O3                0.347                           
#>    .O4                0.982                           
#>    .O5                0.764                           
#>    .C1                0.681                           
#>    .C2                0.674                           
#>    .C3                0.705                           
#>    .C4                0.422                           
#>    .C5                0.502                           
#>    .E1                0.708                           
#>    .E2                0.471                           
#>    .E3                0.524                           
#>    .E4                0.450                           
#>    .E5                0.615                           
#>    .A1                0.888                           
#>    .A2                0.561                           
#>    .A3                0.406                           
#>    .A4                0.703                           
#>    .A5                0.401                           
#>    .N1                0.300                           
#>    .N2                0.359                           
#>    .N3                0.429                           
#>    .N4                0.556                           
#>    .N5                0.675                           
#>     opn               1.000                           
#>     con               1.000                           
#>     ext               1.000                           
#>     agr               1.000                           
#>     neu               1.000

All1 lavaan methods should carry over, such as:

head(coef(fit), 10)
#>    opn=~O1    opn=~O2    opn=~O3    opn=~O4    opn=~O5    con=~C1    con=~C2 
#>  0.6474239 -0.4443222  0.8077954  0.1355670 -0.4862491  0.5644095  0.5707375 
#>    con=~C3    con=~C4    con=~C5 
#>  0.5430038 -0.7602739 -0.7055655
head(parameterestimates(fit, se = TRUE))
#>   lhs op rhs    est    se      z pvalue ci.lower ci.upper
#> 1 opn =~  O1  0.647 0.059 10.909  0.000    0.531    0.764
#> 2 opn =~  O2 -0.444 0.093 -4.757  0.000   -0.627   -0.261
#> 3 opn =~  O3  0.808 0.056 14.370  0.000    0.698    0.918
#> 4 opn =~  O4  0.136 0.056  2.409  0.016    0.025    0.246
#> 5 opn =~  O5 -0.486 0.055 -8.781  0.000   -0.595   -0.378
#> 6 con =~  C1  0.564 0.077  7.302  0.000    0.413    0.716
head(fitted(fit)$cov)  # model-implied covariance matrix for the UVs
#>             O1          O2         O3          O4          O5          C1
#> O1  1.00000000 -0.28766483  0.5229860  0.08776931 -0.31480927  0.11770363
#> O2 -0.28766483  1.00000000 -0.3589215 -0.06023543  0.21605128 -0.08077913
#> O3  0.52298603 -0.35892145  1.0000000  0.10951038 -0.39278976  0.14685965
#> O4  0.08776931 -0.06023543  0.1095104  1.00000000 -0.06591932  0.02464649
#> O5 -0.31480927  0.21605128 -0.3927898 -0.06591932  1.00000000 -0.08840156
#> C1  0.11770363 -0.08077913  0.1468597  0.02464649 -0.08840156  1.00000000
#>             C2          C3          C4          C5          E1          E2
#> O1  0.11902330  0.11323963 -0.15854979 -0.14714072 -0.16296125 -0.21935390
#> O2 -0.08168481 -0.07771552  0.10881155  0.10098159  0.11183910  0.15054096
#> O3  0.14850622  0.14128989 -0.19782369 -0.18358852 -0.20332791 -0.27368941
#> O4  0.02492282  0.02371175 -0.03319945 -0.03081045 -0.03412319 -0.04593149
#> O5 -0.08939270 -0.08504886  0.11907915  0.11051035  0.12239239  0.16474621
#> C1  0.32212966  0.30647649 -0.42910580 -0.39822782 -0.11896000 -0.16012604
#>             E3          E4          E5          A1          A2          A3
#> O1  0.20823012  0.22383136  0.18712824 -0.05848422  0.11559794  0.13439674
#> O2 -0.14290679 -0.15361381 -0.12842473  0.04013729 -0.07933401 -0.09223549
#> O3  0.25981019  0.27927598  0.23348123 -0.07297118  0.14423237  0.16768776
#> O4  0.04360224  0.04686905  0.03918362 -0.01224627  0.02420557  0.02814193
#> O5 -0.15639167 -0.16810902 -0.14054306  0.04392470 -0.08682008 -0.10093895
#> C1  0.15200580  0.16339454  0.13660165 -0.06997621  0.13831261  0.16080532
#>             A4          A5          N1          N2          N3          N4
#> O1  0.09506875  0.13494469 -0.07927439 -0.07588719 -0.07159271 -0.06315260
#> O2 -0.06524498 -0.09261154  0.05440543  0.05208082  0.04913355  0.04334116
#> O3  0.11861795  0.16837144 -0.09891122 -0.09468498 -0.08932674 -0.07879594
#> O4  0.01990687  0.02825667 -0.01659962 -0.01589036 -0.01499112 -0.01322380
#> O5 -0.07140158 -0.10135049  0.05953920  0.05699523  0.05376986  0.04743089
#> C1  0.11374949  0.16146094 -0.14224875 -0.13617081 -0.12846487 -0.11332005
#>             N5
#> O1 -0.05398303
#> O2  0.03704816
#> O3 -0.06735501
#> O4 -0.01130375
#> O5  0.04054407
#> C1 -0.09686632

And also plot from the semPlot package:

library(semPlot)

grouplist <- list(
  lat = c("opn", "con", "ext", "agr", "neu"),
  man = rep(c("opn", "con", "ext", "agr", "neu"), each = 5)
)

# Define a named vector of colors for each group (latent factor)
groupcols <- RColorBrewer::brewer.pal(5, "Set2") |>
  rep(each = 5) |>
  adjustcolor(alpha.f = 0.5)

# Now call semPaths
semPaths(fit, whatLabels = "est", layout = "circle", residuals = FALSE, 
         intercept = FALSE, groups = grouplist, color = groupcols, 
         legend = FALSE)

Session information

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.1 (2024-06-14)
#>  os       macOS 15.3
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Asia/Brunei
#>  date     2025-02-08
#>  pandoc   3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package      * version    date (UTC) lib source
#>  abind          1.4-8      2024-09-12 [1] CRAN (R 4.4.1)
#>  arm            1.14-4     2024-04-01 [1] CRAN (R 4.4.0)
#>  backports      1.5.0      2024-05-23 [1] CRAN (R 4.4.0)
#>  base64enc      0.1-3      2015-07-28 [1] CRAN (R 4.4.0)
#>  boot           1.3-31     2024-08-28 [1] CRAN (R 4.4.1)
#>  carData        3.0-5      2022-01-06 [1] CRAN (R 4.4.0)
#>  checkmate      2.3.2      2024-07-29 [1] CRAN (R 4.4.0)
#>  cli            3.6.3      2024-06-21 [1] CRAN (R 4.4.0)
#>  cluster        2.1.8      2024-12-11 [1] CRAN (R 4.4.1)
#>  coda           0.19-4.1   2024-01-31 [1] CRAN (R 4.4.0)
#>  colorspace     2.1-1      2024-07-26 [1] CRAN (R 4.4.0)
#>  corpcor        1.6.10     2021-09-16 [1] CRAN (R 4.4.0)
#>  data.table     1.16.4     2024-12-06 [1] CRAN (R 4.4.1)
#>  digest         0.6.37     2024-08-19 [1] CRAN (R 4.4.1)
#>  dplyr          1.1.4      2023-11-17 [1] CRAN (R 4.4.0)
#>  evaluate       1.0.3      2025-01-10 [1] CRAN (R 4.4.1)
#>  fastmap        1.2.0      2024-05-15 [1] CRAN (R 4.4.0)
#>  fdrtool        1.2.18     2024-08-20 [1] CRAN (R 4.4.1)
#>  foreign        0.8-87     2024-06-26 [1] CRAN (R 4.4.0)
#>  Formula        1.2-5      2023-02-24 [1] CRAN (R 4.4.0)
#>  generics       0.1.3      2022-07-05 [1] CRAN (R 4.4.0)
#>  ggplot2        3.5.1      2024-04-23 [1] CRAN (R 4.4.0)
#>  glasso         1.11       2019-10-01 [1] CRAN (R 4.4.0)
#>  glue           1.8.0      2024-09-30 [1] CRAN (R 4.4.1)
#>  gridExtra      2.3        2017-09-09 [1] CRAN (R 4.4.0)
#>  gtable         0.3.6      2024-10-25 [1] CRAN (R 4.4.1)
#>  gtools         3.9.5      2023-11-20 [1] CRAN (R 4.4.0)
#>  Hmisc          5.2-1      2024-12-02 [1] CRAN (R 4.4.1)
#>  htmlTable      2.4.3      2024-07-21 [1] CRAN (R 4.4.0)
#>  htmltools      0.5.8.1    2024-04-04 [1] CRAN (R 4.4.0)
#>  htmlwidgets    1.6.4      2023-12-06 [1] CRAN (R 4.4.0)
#>  igraph         2.1.2      2024-12-07 [1] CRAN (R 4.4.1)
#>  jpeg           0.1-10     2022-11-29 [1] CRAN (R 4.4.0)
#>  knitr          1.49       2024-11-08 [1] CRAN (R 4.4.1)
#>  kutils         1.73       2023-09-17 [1] CRAN (R 4.4.0)
#>  lattice        0.22-6     2024-03-20 [1] CRAN (R 4.4.1)
#>  lavaan       * 0.6-19     2024-09-26 [1] CRAN (R 4.4.1)
#>  lifecycle      1.0.4      2023-11-07 [1] CRAN (R 4.4.0)
#>  lisrelToR      0.3        2024-02-07 [1] CRAN (R 4.4.0)
#>  lme4           1.1-35.5   2024-07-03 [1] CRAN (R 4.4.0)
#>  magrittr       2.0.3      2022-03-30 [1] CRAN (R 4.4.0)
#>  MASS           7.3-61     2024-06-13 [1] CRAN (R 4.4.0)
#>  Matrix         1.7-1      2024-10-18 [1] CRAN (R 4.4.1)
#>  mi             1.1        2022-06-06 [1] CRAN (R 4.4.0)
#>  minqa          1.2.8      2024-08-17 [1] CRAN (R 4.4.0)
#>  mnormt         2.1.1      2022-09-26 [1] CRAN (R 4.4.0)
#>  munsell        0.5.1      2024-04-01 [1] CRAN (R 4.4.0)
#>  nlme           3.1-166    2024-08-14 [1] CRAN (R 4.4.0)
#>  nloptr         2.1.1      2024-06-25 [1] CRAN (R 4.4.0)
#>  nnet           7.3-19     2023-05-03 [1] CRAN (R 4.4.1)
#>  numDeriv       2016.8-1.1 2019-06-06 [1] CRAN (R 4.4.0)
#>  OpenMx         2.21.13    2024-10-19 [1] CRAN (R 4.4.1)
#>  openxlsx       4.2.7.1    2024-09-20 [1] CRAN (R 4.4.1)
#>  pbapply        1.7-2      2023-06-27 [1] CRAN (R 4.4.0)
#>  pbivnorm       0.6.0      2015-01-23 [1] CRAN (R 4.4.0)
#>  pillar         1.10.1     2025-01-07 [1] CRAN (R 4.4.1)
#>  pkgconfig      2.0.3      2019-09-22 [1] CRAN (R 4.4.0)
#>  lavaan.pl         * 0.1.0.9002 2025-02-08 [1] local
#>  plyr           1.8.9      2023-10-02 [1] CRAN (R 4.4.0)
#>  png            0.1-8      2022-11-29 [1] CRAN (R 4.4.0)
#>  psych          2.4.6.26   2024-06-27 [1] CRAN (R 4.4.0)
#>  qgraph         1.9.8      2023-11-03 [1] CRAN (R 4.4.0)
#>  quadprog       1.5-8      2019-11-20 [1] CRAN (R 4.4.0)
#>  R6             2.5.1      2021-08-19 [1] CRAN (R 4.4.0)
#>  RColorBrewer   1.1-3      2022-04-03 [1] CRAN (R 4.4.0)
#>  Rcpp           1.0.14     2025-01-12 [1] CRAN (R 4.4.1)
#>  RcppClock      1.1        2021-11-06 [1] CRAN (R 4.4.0)
#>  RcppEigen      0.3.4.0.2  2024-08-24 [1] CRAN (R 4.4.1)
#>  RcppParallel   5.1.10     2025-01-24 [1] CRAN (R 4.4.1)
#>  reshape2       1.4.4      2020-04-09 [1] CRAN (R 4.4.0)
#>  rlang          1.1.5      2025-01-17 [1] CRAN (R 4.4.1)
#>  rmarkdown      2.29       2024-11-04 [1] CRAN (R 4.4.1)
#>  rockchalk      1.8.157    2022-08-06 [1] CRAN (R 4.4.0)
#>  rpart          4.1.23     2023-12-05 [1] CRAN (R 4.4.1)
#>  rstudioapi     0.17.1     2024-10-22 [1] CRAN (R 4.4.1)
#>  scales         1.3.0      2023-11-28 [1] CRAN (R 4.4.0)
#>  sem            3.1-16     2024-08-28 [1] CRAN (R 4.4.1)
#>  semPlot      * 1.1.6      2022-08-10 [1] CRAN (R 4.4.0)
#>  sessioninfo    1.2.2      2021-12-06 [1] CRAN (R 4.4.0)
#>  stringi        1.8.4      2024-05-06 [1] CRAN (R 4.4.0)
#>  stringr        1.5.1      2023-11-14 [1] CRAN (R 4.4.0)
#>  tibble         3.2.1      2023-03-20 [1] CRAN (R 4.4.0)
#>  tidyselect     1.2.1      2024-03-11 [1] CRAN (R 4.4.0)
#>  ucminf         1.2.2      2025-01-23 [1] Github (hdakpo/ucminf@a3a411f)
#>  utf8           1.2.4      2023-10-22 [1] CRAN (R 4.4.0)
#>  vctrs          0.6.5      2023-12-01 [1] CRAN (R 4.4.0)
#>  xfun           0.50       2025-01-07 [1] CRAN (R 4.4.1)
#>  XML            3.99-0.17  2024-06-25 [1] CRAN (R 4.4.0)
#>  xtable         1.8-4      2019-04-21 [1] CRAN (R 4.4.0)
#>  yaml           2.3.10     2024-07-26 [1] CRAN (R 4.4.0)
#>  zip            2.3.1      2024-01-27 [1] CRAN (R 4.4.0)
#> 
#>  [1] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────