This function can be used to extract or calculate with model matrices given a `"semMatriModel"`

object (from `modelMatrices`

) or a `"semPlotModel"`

object or any of the input types that can be used in `semPlotModel`

directly.

If the model is not specified it is attempted to be identified by the given algebra.

1 | ```
semMatrixAlgebra(object, algebra, group, simplify = TRUE, model, endoOnly = FALSE)
``` |

`object` |
A |

`algebra` |
An R expression to use. |

`group` |
Groups the algebra should be used on. If more than one a list is returned with the result for each group. |

`simplify` |
If TRUE and only one group is used, return output as is instead of in a list. |

`model` |
Model to be used in |

`endoOnly` |
Only needed when the model is |

The `"lisrel"`

model uses the following matrix names: `LY`

, `TE`

, `PS`

, `BE`

, `LX`

, `TD`

, `PH`

, `GA`

, `TY`

, `TX`

, `AL`

and `KA`

.

The `"mplus"`

model uses the following matrix names: `Lambda`

, `Nu`

, `Theta`

, `Kappa`

, `Alpha`

, `Beta`

, `Gamma`

and `Psi`

.

The `"ram"`

model uses the following matrix names: `F`

, `A`

and `S`

.

A list containing output per group

Sacha Epskamp <mail@sachaepskamp.com>

`semPlotModel`

`semPlotModel-class`

`modelMatrices`

`lisrelModel`

`ramModel`

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | ```
## Mplus user guide SEM example:
outfile <- tempfile(fileext=".out")
download.file("http://www.statmodel.com/usersguide/chap5/ex5.11.out",outfile)
# Plot model:
semPaths(outfile,intercepts=FALSE)
# Obtain latent regressions (mplus)
semMatrixAlgebra(outfile, Beta)
# mplus model implied covariance:
mat1 <- semMatrixAlgebra(outfile,
Lambda %*% Imin(Beta, TRUE) %*% Psi %*% t(Imin(Beta, TRUE)) %*% t(Lambda) + Theta)
# Lisrel model implied covariance:
mat2 <- semMatrixAlgebra(outfile,
LY %*% Imin(BE, TRUE) %*% PS %*% t(Imin(BE, TRUE)) %*% t(LY) + TE, endoOnly = TRUE)
# RAM model implied covariance:
mat3 <- semMatrixAlgebra(outfile,
F %*% Imin(A,TRUE) %*% S %*% t(Imin(A, TRUE)) %*% t(F))
## Not run:
# Plot:
library("qgraph")
pdf("Models.pdf",width=15,height=5)
layout(t(1:3))
qgraph(round(cov2cor(mat1),5), maximum=1, edge.labels=TRUE, layout = "spring",
cut = 0.4, minimum = 0.1)
title("Mplus model")
qgraph(round(cov2cor(mat2),5), maximum=1, edge.labels=TRUE, layout = "spring",
cut = 0.4, minimum = 0.1)
title("LISREL model")
qgraph(round(cov2cor(mat3),5), maximum=1, edge.labels=TRUE, layout = "spring",
cut = 0.4, minimum = 0.1)
title("RAM model")
dev.off()
## End(Not run)
# They are the same.
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.