Pita
You are correct, it cannot be assumed that the a*b term is normally distributed, but this is not new, there is a lot of literature about it.
Now, in lavaan if you do the analysis with the default features, this would lead to what is called the sobel test. Which means that the inference is made with the wald test assuming the product term is normally distributed.
There are mainly 2 ways that are recommended to deal with this, (a) use bootstrap Confidence Intervals and standard errors as bootstrap does not assume the parameter is normally distributed, for example
mod_med <- '
shs ~ cp*ple + b*grat
grat ~ a*ple
## indirect
ind := a*b
tot := a*b + cp ## total
'
fit_med_boot <- sem(mod_med, data=dat, meanstructure=T,fixed.x=F,
se="bootstrap", bootstrap=5000, verbose=T)
summary(fit_med_boot, standardize=T, rsquare=T)
parameterestimates(fit_med_boot, boot.ci.type="bca.simple",
level=0.95, standardize=T,
zstat = F, pvalue = F)
the second option (b) is to use the montecarlo simulation approach which is available with a function from semTools, like this
exp_ind <- 'a*b'
exp_tot <- 'a*b + cp'
mont_ind <- monteCarloMed(exp_ind, object = fit_med_sobel,
plot=T, CI=95)
mont_ind
mont_tot <- monteCarloMed(exp_tot, object = fit_med_sobel,
plot=T, CI=95)
mont_tot