**lavaan** is an extremely versatile package for
structural equation modeling. It covers a wide range of different
estimation procedures beyond the basic maximum likelihood estimation
with listwise deletion of missings. **lessSEM** tries to
cover some of these procedures out of the box. That is, when provided
with a **lavaan** model, **lessSEM** will
check the estimator, missing data procedure, etc. and try to match
it.

lessSEMmay not yet provide all procedures implemented inlavaan. If you run into cases wherelessSEMdoes not match thelavaanmodel correctly, please let us know at GitHub.

By default, **lavaan** will use maximum likelihood
estimation with listwise deletion of missing data. If you pass such a
“default” model to **lessSEM**, the same procedures will be
used as well:

```
library(lessSEM)
dataset <- simulateExampleData()
lavaanSyntax <- "
f =~ l1*y1 + l2*y2 + l3*y3 + l4*y4 + l5*y5 +
l6*y6 + l7*y7 + l8*y8 + l9*y9 + l10*y10 +
l11*y11 + l12*y12 + l13*y13 + l14*y14 + l15*y15
f ~~ 1*f
"
lavaanModel <- lavaan::sem(lavaanSyntax,
data = dataset,
std.lv = TRUE)
lsem <- lasso(
lavaanModel = lavaanModel,
regularized = paste0("l", 6:15),
nLambdas = 50)
```

You can also use `meanstructure = TRUE`

and
**lessSEM** will automatically add a meanstructure as
well.

Missing data is a very common problem in real data analysis.
Different procedures have been developed to address with issue, with
full-information-maximum-likelihood being among the most famous ones. In
lavaan, you can use this procedure by setting
`missing = "ml"`

:

```
library(lessSEM)
dataset <- simulateExampleData(percentMissing = 20)
lavaanSyntax <- "
f =~ l1*y1 + l2*y2 + l3*y3 + l4*y4 + l5*y5 +
l6*y6 + l7*y7 + l8*y8 + l9*y9 + l10*y10 +
l11*y11 + l12*y12 + l13*y13 + l14*y14 + l15*y15
f ~~ 1*f
"
lavaanModel <- lavaan::sem(lavaanSyntax,
data = dataset,
std.lv = TRUE,
# note: we change the missing procedure
missing = "ml")
lsem <- lasso(
lavaanModel = lavaanModel,
regularized = paste0("l", 6:15),
nLambdas = 50)
```

WarningWLS is under development and not fully supported at the moment.

Weighted least squares estimation is an alternative to maximum
likelihood estimation that is prominent in case of non-normal data.
Again, **lavaan** covers a wide range of different weighted
least squares estimators that can be selected with the
`estimator = x`

option. These estimators differ in their
weight matrix. **lessSEM** extracts the weights
automatically from **lavaan**. The following weighted least
squares variants are supported: `estimator = "wls"`

,
`estimator = "dwls"`

, `estimator = "gls"`

, and
`estimator = "uls"`

.

Again, **lessSEM** will try to copy the procedure used
in **lavaan** automatically:

```
library(lessSEM)
# Note: WLS needs much larger sample sizes
dataset <- simulateExampleData(N = 1000)
lavaanSyntax <- "
f =~ l1*y1 + l2*y2 + l3*y3 + l4*y4 + l5*y5 +
l6*y6 + l7*y7 + l8*y8 + l9*y9 + l10*y10 +
l11*y11 + l12*y12 + l13*y13 + l14*y14 + l15*y15
f ~~ 1*f
"
lavaanModel <- lavaan::sem(lavaanSyntax,
data = dataset,
std.lv = TRUE,
estimator = "wls")
lsem <- lasso(
lavaanModel = lavaanModel,
regularized = paste0("l", 6:15),
nLambdas = 50)
```

Changing the estimator just requires replacing
`estimator = "wls"`

with any of the other weighted least
squares variants mentioned above:

```
library(lessSEM)
# Note: WLS needs much larger sample sizes
dataset <- simulateExampleData(N = 1000)
lavaanSyntax <- "
f =~ l1*y1 + l2*y2 + l3*y3 + l4*y4 + l5*y5 +
l6*y6 + l7*y7 + l8*y8 + l9*y9 + l10*y10 +
l11*y11 + l12*y12 + l13*y13 + l14*y14 + l15*y15
f ~~ 1*f
"
lavaanModel <- lavaan::sem(lavaanSyntax,
data = dataset,
std.lv = TRUE,
estimator = "uls")
lsem <- lasso(
lavaanModel = lavaanModel,
regularized = paste0("l", 6:15),
nLambdas = 50)
```

Currently, the only procedure to select final parameters that is
supported by **lessSEM** out of the box is
cross-validation. AIC or BIC are not supported.

**lavaan** supports ordered data. This is not yet
implemented in **lessSEM**. Check **lslx** for
an implementation of regularized SEM with categorical data (Huang,
2020).

- Huang, P.-H. (2020). Penalized Least Squares for Structural Equation Modeling with Ordinal Responses. Multivariate Behavioral Research, 1–19. https://doi.org/10.1080/00273171.2020.1820309
- Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1–36. https://doi.org/10.18637/jss.v048.i02