当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R mroot 矩阵的最小平方根


R语言 mroot 位于 mgcv 包(package)。

说明

求一个正半定矩阵的平方根,该矩阵的列数尽可能少。使用枢轴乔斯基分解或奇异值分解来执行此操作。

用法

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

参数

A

正半定矩阵,需要求其平方根。

rank

如果矩阵 A 的秩已知,则应提供它。 NULL 或 <1 表示应该进行估计。

method

"chol" 使用枢轴 choloeski 分解,速度很快,但倾向于 over-estimate 等级。 "svd" 使用奇异值分解,虽然速度较慢,但是估计排名的最准确方法。

细节

该函数使用 SVD 或枢轴 Choleski 例程。它主要用于将惩罚回归问题转化为普通回归问题。

矩阵 的列数与 的秩一样多,并且

例子

  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")  

作者

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

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Smallest square root of matrix。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。