はおそらく、私はあなたが
diag(X %*% solve(A, t(X)))
行う場合には逆行列が回避されることを言及する必要があります。 solve(A, B)
はLU分解を実行し、その結果の三角マトリックス因子を使用して線形システムA x = B
を解きます。 B
を指定しないままにすると、デフォルトで対角行列になりますので、逆行列の計算はA
と明示的に計算されます。
?solve
を慎重に、またヒントのために何度も読んでください。それはLAPACK
ルーチンDGESV
に基づいており、シーンの背後にある数値線形代数を見つけることができます。
DGESV computes the solution to a real system of linear equations
A * X = B,
where A is an N-by-N matrix and X and B are N-by-N RHS matrices.
The LU decomposition with partial pivoting and row interchanges is
used to factor A as
A = P * L * U,
where P is a permutation matrix, L is unit lower triangular, and U is
upper triangular. The factored form of A is then used to solve the
system of equations A * X = B.
solve(A, t(X))
とsolve(A) %*% t(X)
との間の差は、効率の問題です。後者の一般的な行列乗算%*%
は、solve
よりもはるかに高価です。
solve(A, t(X))
を使用しても、別の%*%
があるため、あなたは最速のトラックではありません。
また、対角要素だけを必要とするため、最初に完全な行列を取得するのにかなりの時間を費やします。 私の答えは以下の通りです。
私はLaTeXのすべてを書き直しました。また、R実装への参照を含め、コンテンツも大幅に拡張されています。最後にQR分解、特異値分解、ピボットされたコレスキー因子分解に余分なリソースが与えられます。あなたが旋回しCholesに興味がある場合には
エクストラリソース
あなたはCompute projection/hat matrix via QR factorization, SVD (and Cholesky factorization?)を参照することができます。 QR分解と特異値分解についても議論します。
上記のリンクは、通常の最小二乗回帰コンテキストで設定されます。加重最小二乗についてはGet hat matrix from QR decomposition for weighted least square regressionを参照してください。
QR分解はまた、コンパクトな形を取る。 QR分解がどのように行われ、保存されているかをもっと知りたい場合は、What is "qraux" returned by QR decompositionを参照してください。
これらの質問と回答は、すべて数値行列計算に焦点を当てています。あまりにも早くそれを私は受け入れますが、私は決してしない
@ZheyuanLi:以下は、いくつかの統計的なアプリケーションを提供します – Coolwater