Rの基本パッケージ stats 中の行列分解関数の簡易紹介
行列分解関数は多変量解析、線形モデル等の多くの関数の内部で用いられる。 QR 分解と特異値分解 (SVD, singular value decomposition) がその中心である。
行列の QR 分解を計算する。これは LINPACK ルーティン DQRDC または LAPACK ルーティン DGEQP3 (複素行列に対しては ZGEQP3) で用いられている手法への インタフェイスである。
qr(x, tol = 1e-07 , LAPACK = FALSE) qr.coef(qr, y) qr.qy(qr, y) qr.qty(qr, y) qr.resid(qr, y) qr.fitted(qr, y, k = qr$rank) qr.solve(a, b, tol = 1e-7) ## クラス qr に対する S3 メソッド solve(a, b, ...) is.qr(x) as.qr(x)
これらの関数は QR オブジェクトから元の行列 X もしくは分解成分行列 Q, R を返す。
qr.X(qr, complete = FALSE, ncol =) qr.Q(qr, complete = FALSE, Dvec =) qr.R(qr, complete = FALSE)
長方形行列の特異値分解を計算する。
svd(x, nu = min(n, p), nv = min(n, p), LINPACK = FALSE) La.svd(x, nu=min(n, p), nv=min(n, p), method=c("dgesdd","dgesvd"))
実正定値符号対称行列のコレスキ分解 (Cholesky decomposition) を計算する。
chol(x, pivot = FALSE, LINPACK = pivot) La.chol(x)
対称正定値符号正方行列の逆行列をコレスキ分解から求める。
chol2inv(x, size = NCOL(x), LINPACK = FALSE) La.chol2inv(x, size = ncol(x))
これらの関数は係数行列が上・下三角行列である線型方程式を解く。
backsolve(r, x, k= ncol(r), upper.tri = TRUE, transpose = FALSE) forwardsolve(l, x, k= ncol(l), upper.tri = FALSE, transpose = FALSE)