`verify(.object)`

- .object
An R object of class cSEMResults resulting from a call to

`csem()`

.

A logical vector indicating which (if any) problem occurred.
A `FALSE`

indicates that the specific problem did not occurred. For models containing second-order
constructs estimated by the two/three-stage approach, a list of two such vectors
(one for the first and one for the second stage) is returned. Status codes are:

1: The algorithm has converged.

2: All absolute standardized loading estimates are smaller than or equal to 1. A violation implies either a negative variance of the measurement error or a correlation larger than 1.

3: The construct VCV is positive semi-definite.

4: All reliability estimates are smaller than or equal to 1.

5: The model-implied indicator VCV is positive semi-definite. This is only checked for linear models (including models containing second-order constructs).

Verify admissibility of the results obtained using `csem()`

.

Results exhibiting one of the following defects are deemed inadmissible: non-convergence of the algorithm used to obtain weights, loadings and/or (congeneric) reliabilities larger than 1, a construct variance-covariance (VCV) and/or model-implied VCV matrix that is not positive semi-definite.

If `.object`

is of class `cSEMResults_2ndorder`

(i.e., estimates are
based on a model containing second-order constructs) both the first and the second stage are checked separately.

Currently, a model-implied indicator VCV matrix for nonlinear model is not
available. `verify()`

therefore skips the check for positive definiteness of the
model-implied indicator VCV matrix for nonlinear models and returns "ok".

```
### Without higher order constructs --------------------------------------------
model <- "
# Structural model
eta2 ~ eta1
eta3 ~ eta1 + eta2
# (Reflective) measurement model
eta1 =~ y11 + y12 + y13
eta2 =~ y21 + y22 + y23
eta3 =~ y31 + y32 + y33
"
# Estimate
out <- csem(threecommonfactors, model)
# Check admissibility
verify(out) # ok!
#> ________________________________________________________________________________
#>
#> Verify admissibility:
#>
#> admissible
#>
#> Details:
#>
#> Code Status Description
#> 1 ok Convergence achieved
#> 2 ok All absolute standardized loading estimates <= 1
#> 3 ok Construct VCV is positive semi-definite
#> 4 ok All reliability estimates <= 1
#> 5 ok Model-implied indicator VCV is positive semi-definite
#> ________________________________________________________________________________
## Examine the structure of a cSEMVerify object
str(verify(out))
#> 'cSEMVerify' Named logi [1:5] FALSE FALSE FALSE FALSE FALSE
#> - attr(*, "names")= chr [1:5] "1" "2" "3" "4" ...
### With higher order constructs -----------------------------------------------
# If the model containes higher order constructs both the first and the second-
# stage estimates estimates are checked for admissibility
if (FALSE) {
require(cSEM.DGP) # download from https://m-e-rademaker.github.io/cSEM.DGP
# Create DGP with 2nd order construct. Loading for indicator y51 is set to 1.1
# to produce a failing first stage model
dgp_2ndorder <- "
## Path model / Regressions
eta2 ~ 0.5*eta1
eta3 ~ 0.35*eta1 + 0.4*eta2
## Composite model
eta1 =~ 0.8*y41 + 0.6*y42 + 0.6*y43
eta2 =~ 1.1*y51 + 0.7*y52 + 0.7*y53
c1 =~ 0.8*y11 + 0.4*y12
c2 =~ 0.5*y21 + 0.3*y22
## Higher order composite
eta3 =~ 0.4*c1 + 0.4*c2
"
dat <- generateData(dgp_2ndorder) # requires the cSEM.DGP package
out <- csem(dat, .model = dgp_2ndorder)
verify(out) # not ok
}
```