New mxConstraint() interface implementation
[openmx:openmx.git] / man / mxConstraint.Rd
1 \name{mxConstraint}
2 \alias{mxConstraint}
3
4 \title{Create MxConstraint Object}
5
6 \description{
7 This function creates a new \link{MxConstraint} object.
8 }
9
10 \usage{
11 mxConstraint(expression, name = NA)
12 }
13
14 \arguments{
15    \item{expression}{An R expression of matrix operators and matrix functions.}
16    \item{name}{An optional character string indicating the name of the object.}
17 }
18
19 \details{
20 The mxConstraint function defines relationships between two \link{MxAlgebra} or \link{MxMatrix} objects. They are used to affect the estimation of free parameters in the referenced objects. The constraint relation is written identically to how a \link{MxAlgebra} expression would be written.  The outermost operator in this relation must be either \sQuote{<}, \sQuote{==} or \sQuote{>}. To affect an estimation or optimization, an \link{MxConstraint} object must be included in an \link{MxModel} object with all referenced \link{MxAlgebra} and \link{MxMatrix} objects.
21
22 The mxConstraint function should not be used to constrain free parameters, either by name or by their position in an \link{MxMatrix} or \link{MxAlgebra} object. Free parameters in the same \link{MxModel} are constrained to equality by giving them the same name in their respective 'labels' matrices.
23 }
24
25 \value{
26 Returns an \link{MxConstraint} object. If used as an argument in an \link{MxModel} object, the objects referenced in the 'alg1' and 'alg2' arguments must also be included prior to optimization.
27 }
28
29 \references{
30 The OpenMx User's guide can be found at http://openmx.psyc.virginia.edu/documentation.
31 }
32
33 \seealso{
34 \link{MxConstraint} for the S4 class created by mxConstraint. \link{MxAlgebra} and \link{MxMatrix} for objects which may be entered as arguments in the 'alg' and 'alg2' arguments, and \link{mxAlgebra} and \link{mxMatrix} for the functions that create them. More information about the OpenMx package may be found \link[=OpenMx]{here}. 
35 }
36
37 \examples{
38 #Create a constraint between MxMatrices 'A' and 'B'
39 constraint <- mxConstraint(A > B, name = 'AdominatesB')
40
41 # Constrain a matrix of free parameters 'K' to be equal to matrix 'limit'
42 K <- mxMatrix(type="Full", nrow=2, ncol=2, free=TRUE, name="K")
43 limit <- mxMatrix(type="Full", nrow=2, ncol=2, free=FALSE, name="limit", values=1:4)
44
45 model<- mxModel("con_test", K, limit, 
46         mxConstraint(K == limit, name = "Klimit_equality"), 
47         mxAlgebra(min(K), name="minK"), 
48         mxAlgebraObjective("minK")
49 )
50 \dontrun{
51 fit <- mxRun(model)
52 fit@matrices$K@values
53 }
54 #      [,1] [,2]
55 # [1,]    1    3
56 # [2,]    2    4
57
58 }