當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。