| mxAlgebra {OpenMx} | R Documentation |
This function creates a new MxAlgebra object.
mxAlgebra(expression, name = NA, dimnames = NA, ..., fixed = FALSE,
joinKey=as.character(NA), joinModel=as.character(NA))
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. |
joinKey |
The name of the column in current model's raw data that is used as a foreign key to match against the primary key in joinModel's raw data. |
joinModel |
The name of the model that this matrix joins against. |
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: pre- and post-multiply B by A and its transpose t(A), i.e: A %&% B == A %*% B %*% t(A)
Functions
cov2corConvert covariance matrix to correlation matrix
cholCholesky Decomposition
cbindHorizontal adhesion
rbindVertical adhesion
detDeterminant
trTrace
sumSum
meanArithmetic mean
prodProduct
maxMaximum
minMin
absAbsolute value
sinSine
sinhHyperbolic sine
asinArcsine
asinhInverse hyperbolic sine
cosCosine
coshHyperbolic cosine
acosArccosine
acoshInverse hyperbolic cosine
tanTangent
tanhHyperbolic tangent
atanArctangent
atanhInverse hyperbolic tangent
expExponent
logNatural Logarithm
sqrtSquare root
p2zStandard-normal quantile
logp2zStandard-normal quantile from log probabilities
lgammaLog-gamma function
lgamma1pCompute log(gamma(x+1)) accurately for small x
eigenvalEigenvalues of a square matrix. Usage: eigenval(x); eigenvec(x); ieigenval(x); ieigenvec(x)
rvectorizeVectorize by row
cvectorizeVectorize by column
vechHalf-vectorization
vechsStrict half-vectorization
vech2fullInverse half-vectorization
vechs2fullInverse strict half-vectorization
vec2diagCreate matrix from a diagonal vector (similar to diag)
diag2vecExtract diagonal from matrix (similar to diag)
expmMatrix Exponential
logmMatrix Logarithm
omxExponentialMatrix Exponential
omxMnorMultivariate Normal Integration
omxAllIntAll cells Multivariate Normal Integration
omxNotPerform unary negation on a matrix
omxAndPerform binary and on two matrices
omxOrPerform binary or on two matrices
omxGreaterThanPerform binary greater on two matrices
omxLessThanPerform binary less than on two matrices
omxApproxEqualsPerform binary equals to (within a specified epsilon) on two matrices
omxSelectRowsFilter rows from a matrix
omxSelectColsFilter columns from a matrix
omxSelectRowsAndColsFilter rows and columns from a matrix
There are also several multiargument functions usable in MxAlgebras, which apply themselves elementwise to the matrix provided as their first argument. These functions have slightly different usage from their R counterparts. Their result is always a matrix with the same dimensions as that provided for their first argument. Values must be provided for ALL arguments of these functions, in order. Provide zeroes as logical values of FALSE, and non-zero numerical values as logical values of TRUE. For most of these functions, OpenMx cycles over values of arguments other than the first, by column (i.e., in column-major order), to the length of the first argument. Notable exceptions are the log, log.p, and lower.tail arguments to probability-distribution-related functions, for which only the [1,1] element is used. It is recommended that all arguments after the first be either (1) scalars, or (2) matrices with the same dimensions as the first argument.
| Function | Arguments | Notes |
dbeta | x,shape1,shape2,ncp,log | The algorithm for the non-central beta distribution is used for non-negative values of ncp. Negative ncp values are ignored, and the algorithm for the central beta distribution is used. |
pbeta | x,shape1,shape2,ncp,lower.tail,log.p | Values of ncp are handled as with dbeta(). |
besselJ & besselY | x,nu | |
besselI & besselK | x,nu,expon.scaled | Note that OpenMx does cycle over the elements of expon.scaled. |
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