반응형
R에서 행렬의 역
행렬의 역수를 계산하는 데 권장되는 방법이 무엇인지 궁금합니다.
내가 찾은 방법이 만족스럽지 않은 것 같습니다. 예를 들면
> c=rbind(c(1, -1/4), c(-1/4, 1))
> c
[,1] [,2]
[1,] 1.00 -0.25
[2,] -0.25 1.00
> inv(c)
Error: could not find function "inv"
> solve(c)
[,1] [,2]
[1,] 1.0666667 0.2666667
[2,] 0.2666667 1.0666667
> solve(c)*c
[,1] [,2]
[1,] 1.06666667 -0.06666667
[2,] -0.06666667 1.06666667
> qr.solve(c)*c
[,1] [,2]
[1,] 1.06666667 -0.06666667
[2,] -0.06666667 1.06666667
감사!
solve(c)
올바른 역을 제공합니다. 코드의 문제는 행렬 곱셈에 잘못된 연산자를 사용하고 있다는 것입니다. solve(c) %*% c
R에서 행렬 곱셈을 호출 하려면 을 사용해야 합니다.
R은를 호출 할 때 요소 별 곱셈을 수행합니다 solve(c) * c
.
MASS 패키지 에서 ginv () (Moore-Penrose 일반화 역) 함수를 사용할 수 있습니다.
속도에 관심 solve()
이 있고 특이점에 대해 걱정할 필요가없는 경우 ginv()
다음을 확인할 수 있으므로 훨씬 더 빠르기 때문에 선호해야합니다 .
require(MASS)
mat <- matrix(rnorm(1e6),nrow=1e3,ncol=1e3)
t0 <- proc.time()
inv0 <- ginv(mat)
proc.time() - t0
t1 <- proc.time()
inv1 <- solve(mat)
proc.time() - t1
참고 URL : https://stackoverflow.com/questions/11995832/inverse-of-matrix-in-r
반응형
'programing' 카테고리의 다른 글
Eclipse에서 단일 JUnit 테스트 실행 (0) | 2020.09.24 |
---|---|
Rails 세션의 현재 사례 (0) | 2020.09.24 |
pip가 패키지를 올바르게 설치할 수 없음 : 권한 거부 오류 (0) | 2020.09.24 |
Go 선언에서“_,”(밑줄 쉼표)는 무엇입니까? (0) | 2020.09.24 |
bash 스크립트를 실행하는 도커 진입 점이 "권한이 거부되었습니다" (0) | 2020.09.24 |