R: Perform Pearson Aitken selection

mxPearsonSelCov {OpenMx} | R Documentation

## Perform Pearson Aitken selection

### Description

These functions implement the Pearson Aitken selection formulae.

### Usage

    mxPearsonSelCov(origCov, newCov)
    mxPearsonSelMean(origCov, newCov, origMean)

### Arguments

`origCov` | covariance matrix. The covariance prior to selection.
`newCov` | covariance matrix. A subset of `origCov` to replace.
`origMean` | column vector. A mean vector to adjust.

### Details

Both `mxPearsonSelCov` and `mxPearsonSelMean` match the dimnames of `newCov` and `origCov` to determine which partition of `origCov` to replace with `newCov`.

Let the n \times n covariance matrix R (`origCov`) be partitioned into non-empty, disjoint sets p and q. Let R_{ij} denote the covariance matrix between the p and q variables where the subscripts denote the variable subsets (e.g. R_{pq}). Let column vectors μ_p and μ_q contain the means of p and q variables, respectively. We wish to compute the conditional covariances of the variables in q for a subset of the population where R_{pp} and μ_p are known (or partially known)—that is, we wish to condition the covariances and means of q on those of p. Let V_{pp} (`newCov`) be an arbitrary covariance matrix of the same dimension as R_{pp}. If we replace R_{pp} by V_{pp} then the mean of q (`origMean`) is transformed as

μ_q \to μ_q + R_{qp} R_{pp}^{-1} μ_p

and the covariance of p and q are transformed as

≤ft[ \begin{array}{c|c} R_{pp} & R_{pq} \\ \hline R_{qp} & R_{qq} \end{array} \right] \to ≤ft[ \begin{array}{c|c} V_{pp} & V_{pp}R_{pp}^{-1}R_{pq} \\ \hline R_{qp}R_{pp}^{-1}V_{pp} & R_{qq}-R_{qp} (R_{pp}^{-1} - R_{pp}^{-1} V_{pp} R_{pp}^{-1}) R_{pq} \end{array} \right]

### References

Aitken, A. (1935). Note on selection from a multivariate normal population. Proceedings of the Edinburgh Mathematical Society (Series 2), 4(2), 106-110. doi:10.1017/S0013091500008063

### Examples

    library(OpenMx)

    m1 <- mxModel(
      'selectionTest',
      mxMatrix('Full', 10, 10, values=rWishart(1, 20, toeplitz((10:1)/10))[,,1],
               dimnames=list(paste0('c',1:10),paste0('c',1:10)), name="m1"),
      mxMatrix('Full', 2, 2, values=diag(2),
               dimnames=list(paste0('c',1:2),paste0('c',1:2)), name="m2"),
      mxMatrix('Full', 10, 1, values=runif(10),
               dimnames=list(paste0('c',1:10),c('v')), name="u1"),
      mxAlgebra(mxPearsonSelCov(m1, m2), name="c1"),
      mxAlgebra(mxPearsonSelMean(m1, m2, u1), name="u2")
    )

    m1 <- mxRun(m1)

[Package OpenMx version 2.11.4 Index]