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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
\name{semMatrixAlgebra}
\alias{semMatrixAlgebra}
%- Also NEED an '\alias' for EACH other topic documented here.
\title{
Extract or calculate with model matrices
}
\description{
This function can be used to extract or calculate with model matrices given a \code{"semMatriModel"} object (from \code{\link{modelMatrices}}) or a \code{"semPlotModel"} object or any of the input types that can be used in \code{\link{semPlotModel}} directly.
If the model is not specified it is attempted to be identified by the given algebra.
}
\usage{
semMatrixAlgebra(object, algebra, group, simplify = TRUE, model, endoOnly = FALSE)
}
%- maybe also 'usage' for other objects documented here.
\arguments{
\item{object}{
A \code{"semMatriModel"} object (from \code{\link{modelMatrices}}) or a \code{"semPlotModel"} object or any of the input types that can be used in \code{\link{semPlotModel}} directly.
}
\item{algebra}{
An R expression to use.
}
\item{group}{
Groups the algebra should be used on. If more than one a list is returned with the result for each group.
}
\item{simplify}{
If TRUE and only one group is used, return output as is instead of in a list.
}
\item{model}{
Model to be used in \code{\link{modelMatrices}}, \code{"mplus"}, \code{"ram"} or \code{"lisrel"}
}
\item{endoOnly}{
Only needed when the model is \code{"lisrel"}, sets all variables to endogenous.
}
}
\details{
The \code{"lisrel"} model uses the following matrix names: \code{LY}, \code{TE}, \code{PS}, \code{BE}, \code{LX}, \code{TD}, \code{PH}, \code{GA}, \code{TY}, \code{TX}, \code{AL} and \code{KA}.
The \code{"mplus"} model uses the following matrix names: \code{Lambda}, \code{Nu}, \code{Theta}, \code{Kappa}, \code{Alpha}, \code{Beta}, \code{Gamma} and \code{Psi}.
The \code{"ram"} model uses the following matrix names: \code{F}, \code{A} and \code{S}.
}
\value{
A list containing output per group
}
\author{
Sacha Epskamp <mail@sachaepskamp.com>
}
\seealso{
\code{\link{semPlotModel}}
\code{\link{semPlotModel-class}}
\code{\link{modelMatrices}}
\code{\link{lisrelModel}}
\code{\link{ramModel}}
}
\examples{
## Mplus user guide SEM example:
outfile <- tempfile(fileext=".out")
tryres <- try({
download.file("http://www.statmodel.com/usersguide/chap5/ex5.11.html",outfile)
})
if (!is(tryres,"try-error")){
# 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))
\dontrun{
# 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()
}
# They are the same.
}
}
|