Consider a classical mediation setup with three variables: Y is the dependent variable, X is the predictor, and M is a mediator. For illustration, we create a toy dataset containing these three variables, and fit a path analysis model that includes the direct effect of X on Y and the indirect effect of X on Y via M.

``````set.seed(1234)
X <- rnorm(100)
M <- 0.5*X + rnorm(100)
Y <- 0.7*M + rnorm(100)
Data <- data.frame(X = X, Y = Y, M = M)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
fit <- sem(model, data = Data)
summary(fit)
``````
``````lavaan (0.6-1) converged normally after  12 iterations

Number of observations                           100

Estimator                                         ML
Model Fit Test Statistic                       0.000
Degrees of freedom                                 0
Minimum Function Value               0.0000000000000

Parameter Estimates:

Information                                 Expected
Information saturated (h1) model          Structured
Standard Errors                             Standard

Regressions:
Estimate  Std.Err  z-value  P(>|z|)
Y ~
X          (c)    0.036    0.104    0.348    0.728
M ~
X          (a)    0.474    0.103    4.613    0.000
Y ~
M          (b)    0.788    0.092    8.539    0.000

Variances:
Estimate  Std.Err  z-value  P(>|z|)
.Y                 0.898    0.127    7.071    0.000
.M                 1.054    0.149    7.071    0.000

Defined Parameters:
Estimate  Std.Err  z-value  P(>|z|)
ab                0.374    0.092    4.059    0.000
total             0.410    0.125    3.287    0.001
``````

The example illustrates the use of the `":="` operator in the lavaan model syntax. This operator ‘defines’ new parameters which take on values that are an arbitrary function of the original model parameters. The function, however, must be specified in terms of the parameter labels that are explicitly mentioned in the model syntax. By default, the standard errors for these defined parameters are computed by using the so-called Delta method. As with other models, bootstrap standard errors can be requested simply by specifying `se = "bootstrap"` in the fitting function.