chol() Function in R with Example

Cholesky decomposition, also known as Cholesky factorization, is a method of decomposing the positive-definite matrix. A positive-definite matrix is defined as a symmetric matrix for all possible vectors.

chol() Function in R

The chol() is a built-in R function that computes the Cholesky factorization of a real symmetric positive-definite square matrix. 

Syntax

chol(x, pivot = FALSE, LINPACK = FALSE, tol = -1, …)

Parameters

x: It is an object for which a method exists. The default method applies to real symmetric, positive-definite matrices.

pivot: Should pivoting be used?

LINPACK: It is logical. Should LINPACK be used (now ignored)?

tol: A numeric tolerance for use with pivot = TRUE.

…: They are other optional arguments.

Return Value

It returns the upper triangular factor of the Cholesky decomposition.

Example

To create a matrix in R, use the matrix() function. Let’s create a 2 x 2 matrix.

vt_1 <- c(-1, 3, 5, -7)
mtrx_1 <- matrix(vt_1, nrow = 2, ncol = 2)
print(mtrx_1)

Output

     [,1] [,2]
[1,]  -1    5
[2,]   3   -7

Let’s calculate the Cholesky factorization.

vt_1 <- c(12, 2, 2, 6)
mtrx_1 <- matrix(vt_1, nrow = 2, ncol = 2)
chol_m <- chol(mtrx_1)
print(chol_m)

Output

       [,1]       [,2]
[1,] 3.464102   0.5773503
[2,] 0.000000   2.3804761

Error in chol.default(x): the leading minor of order 2 is not positive definite

Let’s take an example where we will face the leading minor of order 2 is not a positive definite error.

vt_1 <- 1:4
mtrx_1 <- matrix(vt_1, nrow = 2, ncol = 2)
chol_m <- chol(mtrx_1)
print(chol_m)

Output

Error in chol.default(mtrx_1) :
the leading minor of order 2 is not positive definite
Calls: chol -> chol.default
Execution halted

Transposing the matrix

To transpose the matrix in R, use the t() method. We can use the t() method to transpose the resulting upper triangular to get the lower triangular matrix.

vt_1 <- c(12, 2, 2, 6)
mtrx_1 <- matrix(vt_1, nrow = 2, ncol = 2)
chol_m <- chol(mtrx_1)
print(chol_m)
cat("After apply transpose", "\n")
l_t <- t(chol_m)
print(l_t)

Output

       [,1]     [,2]
[1,] 3.464102  0.5773503
[2,] 0.000000  2.3804761

After apply transpose

       [,1]      [,2]
[1,] 3.4641016  0.000000
[2,] 0.5773503  2.380476

The chol.default calls LAPACK routine dpotrf for non-pivoted Cholesky factorization and LAPACK routine dpstrf for pivoted Cholesky factorization.

Both LAPACK routines allow users to choose whether to work with upper triangular or lower triangular, but R disables the lower triangular option and only returns upper triangular.

That is it for chol() function in R.

See also

det() Function in R

Create an empty matrix in R

Leave a Comment