mxAlgebra {OpenMx} | R Documentation |
This function creates a new MxAlgebra object.
mxAlgebra(expression, name = NA, dimnames = NA, ..., fixed = FALSE)
expression |
An R expression of OpenMx-supported matrix operators and matrix functions. |
name |
An optional character string indicating the name of the object. |
dimnames |
list. The dimnames attribute for the algebra: a list of length 2 giving the row and column names respectively. An empty list is treated as NULL, and a list of length one as row names. The list can be named, and the list names will be used as names for the dimensions. |
... |
Not used. Forces argument ‘fixed’ to be specified by name. |
fixed |
If TRUE, this algebra will not be recomputed automatically when things it depends on change. mxComputeOnce can be used to force it to recompute. |
The mxAlgebra function is used to create algebraic expressions that operate on one or more
MxMatrix objects. To evaluate an MxAlgebra object,
it must be placed in an MxModel object, along with all referenced MxMatrix
objects and the mxFitFunctionAlgebra
function.
The mxFitFunctionAlgebra
function must reference by name the MxAlgebra
object to be evaluated.
The following operators and functions are supported in mxAlgebra:
Operators
solve()
Inversion
t()
Transposition
^
Elementwise powering
%^%
Kronecker powering
+
Addition
-
Subtraction
%*%
Matrix Multiplication
*
Elementwise product
/
Elementwise division
%x%
Kronecker product
%&%
Quadratic product
Functions
cov2cor
Convert covariance matrix to correlation matrix
chol
Cholesky Decomposition
cbind
Horizontal adhesion
rbind
Vertical adhesion
det
Determinant
tr
Trace
sum
Sum
prod
Product
max
Maximum
min
Min
abs
Absolute value
sin
Sine
sinh
Hyperbolic sine
cos
Cosine
cosh
Hyperbolic cosine
tan
Tangent
tanh
Hyperbolic tangent
exp
Exponent
log
Natural Logarithm
sqrt
Square root
p2z
Standard-normal quantile
lgamma
Log-gamma function
eigenval
Eigenvalues of a square matrix. Usage: eigenval(x); eigenvec(x); ieigenval(x); ieigenvec(x)
rvectorize
Vectorize by row
cvectorize
Vectorize by column
vech
Half-vectorization
vechs
Strict half-vectorization
vech2full
Inverse half-vectorization
vechs2full
Inverse strict half-vectorization
vec2diag
Create matrix from a diagonal vector (similar to diag)
diag2vec
Extract diagonal from matrix (similar to diag)
omxMnor
Multivariate Normal Integration
omxAllInt
All cells Multivariate Normal Integration
omxNot
Perform unary negation on a matrix
omxAnd
Perform binary and on two matrices
omxOr
Perform binary or on two matrices
omxGreaterThan
Perform binary greater on two matrices
omxLessThan
Perform binary less than on two matrices
omxApproxEquals
Perform binary equals to (within a specified epsilon) on two matrices
omxExponential
Matrix Exponential
Returns a new MxAlgebra object.
The OpenMx User's guide can be found at http://openmx.psyc.virginia.edu/documentation.
MxAlgebra for the S4 class created by mxAlgebra. mxFitFunctionAlgebra for an objective function which takes an MxAlgebra or MxMatrix object as the function to be minimized.
MxMatrix and mxMatrix for objects which may be entered in the expression
argument and the function that creates them. More information about the OpenMx package may be found here.
A <- mxMatrix("Full", nrow = 3, ncol = 3, values=2, name = "A") # Simple example: algebra B simply evaluates to the matrix A B <- mxAlgebra(A, name = "B") # Compute A + B C <- mxAlgebra(A + B, name = "C") # Compute sin(C) D <- mxAlgebra(sin(C), name = "D") # Make a model and evaluate the mxAlgebra object 'D' A <- mxMatrix("Full", nrow = 3, ncol = 3, values=2, name = "A") model <- mxModel(model="AlgebraExample", A, B, C, D ) fit <- mxRun(model) mxEval(D, fit) # Numbers in mxAlgebras are upgraded to 1x1 matrices # Example of Kronecker powering (%^%) and multiplication (%*%) A <- mxMatrix(type="Full", nrow=3, ncol=3, value=c(1:9), name="A") m1 <- mxModel(model="kron", A, mxAlgebra(A %^% 2, name="KroneckerPower")) mxRun(m1)$KroneckerPower # Running kron # mxAlgebra 'KroneckerPower' # $formula: A %^% 2 # $result: # [,1] [,2] [,3] # [1,] 1 16 49 # [2,] 4 25 64 # [3,] 9 36 81