# mroot: Smallest square root of matrix In mgcv: Mixed GAM Computation Vehicle with Automatic Smoothness Estimation

## Description

Find a square root of a positive semi-definite matrix, having as few columns as possible. Uses either pivoted choleski decomposition or singular value decomposition to do this.

## Usage

 `1` ```mroot(A,rank=NULL,method="chol") ```

## Arguments

 `A` The positive semi-definite matrix, a square root of which is to be found. `rank` if the rank of the matrix `A` is known then it should be supplied. `NULL` or <1 imply that it should be estimated. `method` `"chol"` to use pivoted choloeski decompositon, which is fast but tends to over-estimate rank. `"svd"` to use singular value decomposition, which is slow, but is the most accurate way to estimate rank.

## Details

The function uses SVD, or a pivoted Choleski routine. It is primarily of use for turning penalized regression problems into ordinary regression problems.

## Value

A matrix, B with as many columns as the rank of A, and such that A=BB'.

## Author(s)

Simon N. Wood simon.wood@r-project.org

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11``` ``` require(mgcv) set.seed(0) a <- matrix(runif(24),6,4) A <- a%*%t(a) ## A is +ve semi-definite, rank 4 B <- mroot(A) ## default pivoted choleski method tol <- 100*.Machine\$double.eps chol.err <- max(abs(A-B%*%t(B)));chol.err if (chol.err>tol) warning("mroot (chol) suspect") B <- mroot(A,method="svd") ## svd method svd.err <- max(abs(A-B%*%t(B)));svd.err if (svd.err>tol) warning("mroot (svd) suspect") ```

mgcv documentation built on Oct. 6, 2021, 9:07 a.m.