Coo*_*ter 5 algorithm r matrix matrix-inverse
我需要以下对角线:
diag(X %*% solve(A) %*% t(X))
Run Code Online (Sandbox Code Playgroud)
其中A是满秩矩阵,X是矩形矩阵.这两个A和X稀疏.
我知道发现矩阵的逆是坏的,除非你真的需要它.但是,我无法看到如何重写公式,以便用两个参数solve(A)替换solve,这样线性系统就可以在没有显式反转的情况下得到解决.那可能吗?
李哲源*_*李哲源 10
也许在我真正开始之前,我需要提一下,如果你这样做
diag(X %*% solve(A, t(X)))
Run Code Online (Sandbox Code Playgroud)
避免了矩阵逆.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.
Run Code Online (Sandbox Code Playgroud)
solve(A, t(X))和之间的区别solve(A) %*% t(X)是效率问题.%*%后者的一般矩阵乘法比solve它本身贵得多.
然而,即使你使用solve(A, t(X)),你也不是最快的轨道,因为你有另一个%*%.
此外,由于您只需要对角元素,因此在首次获得完整矩阵时会浪费大量时间.我在下面的回答将让你走上最快的轨道.
我在LaTeX中重写了所有内容,内容也大大扩展,包括对R实现的引用.如果您发现它们有用,最后会给出QR分解,奇异值分解和Pivoted Cholesky分解的额外资源.
额外资源
如果您对旋转Cholesky分解感兴趣,可以参考通过QR分解,SVD(和Cholesky分解?)计算投影/帽子矩阵.在那里我还讨论了QR分解和奇异值分解.
上述链接在普通最小二乘回归上下文中设置.对于加权最小二乘,您可以参考从QR分解得到的帽子矩阵,用于加权最小二乘回归.
QR分解也采用紧凑的形式.如果您想了解有关QR分解如何完成和存储的更多信息,您可以参考QR分解返回的什么是"qraux".
这些问题和答案都集中在数值矩阵计算上.以下给出了一些统计应用:
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |