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.

Note that, if the result for an MxAlgebra depends upon one or more "definition variables" (see `mxMatrix()`

), then the value returned after the call to `mxRun()`

will be computed using the values of those definition variables in the first (i.e., first before any automated sorting is done) row of the raw dataset.

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)

`expm`

Matrix Exponential

`logm`

Matrix Logarithm

`omxExponential`

Matrix Exponential

`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

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

[Package *OpenMx* version 2.2.6 Index]