아마도, 난 당신이
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 분해, Singular Value 분해 및 Pivoted Cholesky 분해에 대한 추가 리소스가 제공되므로 유용합니다.
![overview](https://i.stack.imgur.com/xsj81.png)
![chol](https://i.stack.imgur.com/ME3Yx.png)
![lu](https://i.stack.imgur.com/2n7D9.png)
추가 자원 경우
당신이 피벗 Choles에 관심 ky 인수 분해는 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