R: Multivariate Normal Integration

omxMnor {OpenMx} | R Documentation

## Multivariate Normal Integration

### Description

Given a covariance matrix, a means vector, and vectors of lower and upper bounds, returns the multivariate normal integral across the space between bounds.

### Usage

    omxMnor(covariance, means, lbound, ubound)

### Arguments

`covariance` | the covariance matrix describing the multivariate normal distribution.
`means` | a row vector containing means of the variables of the underlying distribution.
`lbound` | a row vector containing the lower bounds of the integration in each variable.
`ubound` | a row vector containing the upper bounds of the integration in each variable.

### Details

The order of columns in the ‘means’, ‘lbound’, and ‘ubound’ vectors are assumed to be the same as that of the covariance matrix. That is, means[i] is considered to be the mean of the variable whose variance is in covariance[i,i]. That variable will be integrated from lbound[i] to ubound[i] as part of the integration.

The value of ubound[i] or lbound[i] may be set to Inf or -Inf if a boundary at positive or negative infinity is desired.

For all i, ubound[i] must be strictly greater than lbound[i].

### Examples

    data(myFADataRaw)

    covariance <- cov(myFADataRaw[,1:3])
    means <- colMeans(myFADataRaw[,1:3])
    lbound <- c(-Inf, 0,   1)    # Integrate from -Infinity to 0 on first variable
    ubound <- c(0,    Inf, 2.5)  # From 0 to +Infinity on second, and from 1 to 2.5 on third
    omxMnor(covariance, means, lbound, ubound)
    # 0.0005995

    # An alternative specification of the bounds follows
    # Integrate from -Infinity to 0 on first variable
    v1bound = c(-Inf, 0)
    # From 0 to +Infinity on second
    v2bound = c(0, Inf)
    # and from 1 to 2.5 on third
    v3bound = c(1, 2.5)
    bounds <- cbind(v1bound, v2bound, v3bound)
    lbound <- bounds[1,]
    ubound <- bounds[2,]
    omxMnor(covariance, means, lbound, ubound)

[Package OpenMx version 2.18.1 Index]