R: Shrinkage Estimates of Partial Correlation and Partial...

pcor.shrink {corpcor} | R Documentation

## Shrinkage Estimates of Partial Correlation and Partial Variance

### Description

The functions `pcor.shrink` and `pvar.shrink` compute shrinkage estimates of partial correlation and partial variance, respectively.

### Usage

    pcor.shrink(x, lambda, w, verbose=TRUE)
    pvar.shrink(x, lambda, lambda.var, w, verbose=TRUE)

### Arguments

`x` | a data matrix
`lambda` | the correlation shrinkage intensity (range 0-1). If `lambda` is not specified (the default) it is estimated using an analytic formula from Sch\"afer and Strimmer (2005) - see `cor.shrink`. For `lambda=0` the empirical correlations are recovered.
`lambda.var` | the variance shrinkage intensity (range 0-1). If `lambda.var` is not specified (the default) it is estimated using an analytic formula from Opgen-Rhein and Strimmer (2007) - see details below. For `lambda.var=0` the empirical variances are recovered.
`w` | optional: weights for each data point - if not specified uniform weights are assumed (`w = rep(1/n, n)` with `n = nrow(x)`).
`verbose` | report progress while computing (default: TRUE)

### Details

The partial variance var(X_k | rest) is the variance of X_k conditioned on the remaining variables. It equals the inverse of the corresponding diagonal entry of the precision matrix (see Whittaker 1990).

The partial correlations corr(X_k, X_l | rest) is the correlation between X_k and X_l conditioned on the remaining variables. It equals the sign-reversed entries of the off-diagonal entries of the precision matrix, standardized by the the squared root of the associated inverse partial variances.

Note that using `pcor.shrink(x)` much faster than `cor2pcor(cor.shrink(x))`.

For details about the shrinkage procedure consult Sch\"afer and Strimmer (2005), Opgen-Rhein and Strimmer (2007), and the help page of `cov.shrink`.

### Value

`pcor.shrink` returns the partial correlation matrix. Attached to this matrix are the standardized partial variances (i.e. PVAR/VAR) that can be retrieved using `attr` under the attribute "spv".

`pvar.shrink` returns the partial variances.

### Author(s)

Juliane Sch\"afer and Korbinian Strimmer (http://strimmerlab.org).

### References

Opgen-Rhein, R., and K. Strimmer. 2007. Accurate ranking of differentially expressed genes by a distribution-free shrinkage approach. Statist. Appl. Genet. Mol. Biol. 6:9. (http://www.bepress.com/sagmb/vol6/iss1/art9/)

Sch\"afer, J., and K. Strimmer. 2005. A shrinkage approach to large-scale covariance estimation and implications for functional genomics. Statist. Appl. Genet. Mol. Biol. 4:32. (http://www.bepress.com/sagmb/vol4/iss1/art32/)

Whittaker J. 1990. Graphical Models in Applied Multivariate Statistics. John Wiley, Chichester.

### See Also

`invcov.shrink`, `cov.shrink`, `cor2pcor`

### Examples

    # load corpcor library
    library("corpcor")

    # generate data matrix
    p = 50
    n = 10
    X = matrix(rnorm(n*p), nrow = n, ncol = p)

    # partial variance
    pv = pvar.shrink(X)
    pv

    # partial correlations (fast and recommend way)
    pcr1 = pcor.shrink(X)

    # other possibilities to estimate partial correlations
    pcr2 = cor2pcor( cor.shrink(X) )

    # all the same
    sum((pcr1 - pcr2)^2)

[Package corpcor version 1.6.8 Index]