The core function of mxsem is to create a parameter
table, where all loadings, regressions, and (co-)variances are
specified. This parameter table is then used to set up an
mxModel with the mxPath
-function. It can
be useful to visually inspect the parameter table created by
mxsem. To this end, set the
return_parameter_table
-argument to TRUE
:
library(mxsem)
model <- '
# latent variable definitions
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + a1*y2 + b*y3 + c1*y4
dem65 =~ y5 + a2*y6 + b*y7 + c2*y8
# regressions
dem60 ~ g1*ind60
dem65 ~ g2*ind60 + g3*dem60
# residual correlations
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
! delta_a
! g1g3
a2 := a1 + delta_a
g1g3 := g1*g3
'
model_list <- mxsem(model = model,
data = OpenMx::Bollen,
return_parameter_table = TRUE)
print(model_list$parameter_table)
#> $parameter_table
#> lhs op rhs modifier lbound ubound free
#> 1 ind60 =~ x1 1.0 TRUE
#> 2 ind60 =~ x2 TRUE
#> 3 ind60 =~ x3 TRUE
#> 4 dem60 =~ y1 1.0 TRUE
#> 5 dem60 =~ y2 a1 TRUE
#> 6 dem60 =~ y3 b TRUE
#> 7 dem60 =~ y4 c1 TRUE
#> 8 dem65 =~ y5 1.0 TRUE
#> 9 dem65 =~ y6 a2 FALSE
#> 10 dem65 =~ y7 b TRUE
#> 11 dem65 =~ y8 c2 TRUE
#> 12 dem60 ~ ind60 g1 TRUE
#> 13 dem65 ~ ind60 g2 TRUE
#> 14 dem65 ~ dem60 g3 TRUE
#> 15 y1 ~~ y5 TRUE
#> 16 y2 ~~ y4 TRUE
#> 17 y2 ~~ y6 TRUE
#> 18 y3 ~~ y7 TRUE
#> 19 y4 ~~ y8 TRUE
#> 20 y6 ~~ y8 TRUE
#> 21 ind60 ~~ ind60 TRUE
#> 22 dem60 ~~ dem60 TRUE
#> 23 dem65 ~~ dem65 TRUE
#> 24 y1 ~~ y1 TRUE
#> 25 y2 ~~ y2 TRUE
#> 26 y3 ~~ y3 TRUE
#> 27 y4 ~~ y4 TRUE
#> 28 y6 ~~ y6 TRUE
#> 29 x1 ~~ x1 TRUE
#> 30 x2 ~~ x2 TRUE
#> 31 x3 ~~ x3 TRUE
#> 32 y5 ~~ y5 TRUE
#> 33 y7 ~~ y7 TRUE
#> 34 y8 ~~ y8 TRUE
#> 35 y1 ~ 1 TRUE
#> 36 y2 ~ 1 TRUE
#> 37 y3 ~ 1 TRUE
#> 38 y4 ~ 1 TRUE
#> 39 y6 ~ 1 TRUE
#> 40 x1 ~ 1 TRUE
#> 41 x2 ~ 1 TRUE
#> 42 x3 ~ 1 TRUE
#> 43 y5 ~ 1 TRUE
#> 44 y7 ~ 1 TRUE
#> 45 y8 ~ 1 TRUE
#>
#> $user_defined
#> character(0)
#>
#> $algebras
#> lhs op rhs
#> 1 a2 := a1+delta_a
#> 2 g1g3 := g1*g3
#>
#> $variables
#> $variables$manifests
#> [1] "y1" "y2" "y3" "y4" "y6" "x1" "x2" "x3" "y5" "y7" "y8"
#>
#> $variables$latents
#> [1] "ind60" "dem60" "dem65"
#>
#>
#> $new_parameters
#> [1] "delta_a" "g1g3"
#>
#> $new_parameters_free
#> [1] "TRUE" "FALSE"
The element parameter_table$parameter_table
specifies
all loadings (op
is =~
), regressions
(op
is ~
), and (co-)variances (op
is ~~
). The modifier
specifies parameter
labels, lbound
is the lower bound and ubound
is the upper bound for parameters. Finally, free
specifies
if a parameter is estimated (TRUE
) or fixed
(FALSE
).
If there are algebras, these are listed in the
parameter_table$algebras
data.frame. Note that the new
parameters delta_a
and g1g3
used in these
algebras are listed in parameter_table$new_parameters
,
while parameter_table$new_parameters_free
specifies for
each of these new parameters if they are free or fixed. In this case
g1g3
is fixed because it is the product of two other
parameters.
The variables
specify which of the variables are
manifest (observed) and which are latent (unobserved). Each manifest
variable must also be found in the data set.