Test Positive Definiteness of a List of Square Matrices

Share:

Description

It tests the positive definiteness of a square matrix or a list of square matrices. It returns TRUE if the matrix is positive definite. It returns FALSE if the matrix is either non-positive definite or not symmetric. Variables with NA in the diagonals will be removed before testing. It returns NA when there are missing correlations even after deleting the missing variables.

Usage

1
is.pd(x, check.asyCov=FALSE, cor.analysis=TRUE, tol=1e-06)

Arguments

x

A square matrix or a list of square matrices

check.asyCov

If it is TRUE, it mirrors the checking in asyCov.

cor.analysis

Whether the input matrix is a correlation or a covariance matrix. It is ignored when check.asyCov=FALSE.

tol

Tolerance (relative to largest variance) for numerical lack of positive-definiteness in x. It is adopted from mvrnorm.

Value

If the input is a matrix, it returns TRUE, FALSE or NA. If the input is a list of matrices, it returns a list of TRUE, FALSE or NA.

Author(s)

Mike W.-L. Cheung <mikewlcheung@nus.edu.sg>

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
A <- diag(1,3)
is.pd(A)
# TRUE

B <- matrix(c(1,2,2,1), ncol=2)
is.pd(B)
# FALSE

is.pd(list(A, B))
# TRUE FALSE

C <- A
C[2,1] <- C[1,2] <- NA
is.pd(C)
# NA

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.