mxRowObjective-help

Wiki home page

[toc list: ol; title: Table of Contents; minlevel: 1; maxlevel: 4; attachments: 1;]

Description:

This function creates a new MxRowObjective object.

Usage:

mxRowObjective(rowAlgebra, reduceAlgebra, dimnames, rowResults = "rowResults", filteredDataRow = "filteredDataRow", existenceVector = "existenceVector")

Arguments:

rowAlgebra: A character string indicating the name of the algebra to be evaluated row-wise.

reduceAlgebra: A character string indicating the name of the algebra that collapses the row results into a single number which is then optimized.

dimnames: A character vector of names corresponding to columns be extracted from the data set.

rowResults: The name of the auto-generated "rowResults" matrix. See details.

filteredDataRow: The name of the auto-generated "filteredDataRow" matrix. See details.

existenceVector: The name of the auto-generated "existenceVector" matrix. See details.

Details:

Objective functions are functions for which free parameter values are chosen such that the value of the objective function is minimized. The mxRowObjective function evaluates a user-defined MxAlgebra object called the ‘rowAlgebra’ in a row-wise fashion. It then stores results of the row-wise evaluation in another MxAlgebra object called the ‘rowResults’. Finally, the mxRowObjective function collapses the row results into a single number which is then used for optimization. The MxAlgebra object named by the ‘reduceAlgebra’ collapses the row results into a single number.

The ‘filteredDataRow’ is populated in a row-by-row fashion with all the non-missing data from the current row. You cannot assume that the length of the filteredDataRow matrix remains constant (unless you have no missing data). The ‘existenceVector’ is populated in a row-by-row fashion with a value of 1.0 in column j if a non-missing value is present in the data set in column j, and a value of 0.0 otherwise. Use the functions omxSelectRows, omxSelectCols, and omxSelectRowsAndCols to shrink other matrices so that their dimensions will be conformable to the size of ‘filteredDataRow’.

Value:

Returns a new MxRowObjective object. MxRowObjective objects should be included with models with referenced MxAlgebra objects.

Examples:

<em># Model that adds two data columns row-wise, then sums that column</em>
<em># Notice no optimization is performed here.</em>
xdat &lt;- data.frame(a=rnorm(10), b=1:10) # Make data set
amod &lt;- mxModel(
        mxAlgebra(sum(filteredDataRow), name = 'rowAlgebra'),
        mxAlgebra(sum(rowResults), name = 'reduceAlgebra'),
        mxRowObjective(rowAlgebra='rowAlgebra',reduceAlgebra='reduceAlgebra',dimnames=c('a','b')),
        mxData(observed=xdat, type='raw')
)
 
<em># Model that find the parameter that minimizes the sum of the</em>
<em>#  squared difference between the parameter and a data row.</em>
 
bmod &lt;- mxModel(
    mxMatrix(values=.75, ncol=1, nrow=1, free=TRUE, name='B'),
    mxAlgebra((filteredDataRow - B) ^ 2, name='rowAlgebra'),
    mxAlgebra(sum(rowResults), name='reduceAlgebra'),
    mxRowObjective(rowAlgebra='rowAlgebra',reduceAlgebra='reduceAlgebra',dimnames=c('a')),
    mxData(observed=xdat, type='raw')
)