在R中寻找逆矩阵
Finding inverse matrix in R
我有一个方差协方差矩阵S:
> S
[,1] [,2]
[1,] 4 -3
[2,] -3 9
我正试图找到它的反面。
我的代码是:
>invS <- (1/((S[1,1]*S[2,2])-(S[1,2]*S[2,1])))*S
[,1] [,2]
[1,] 0.1481481 -0.1111111
[2,] -0.1111111 0.3333333
但是,如果我使用 solve(),我会得到:
>invSalt <- solve(S)
[,1] [,2]
[1,] 0.3333333 0.1111111
[2,] 0.1111111 0.1481481
为什么 invS 不正确?我应该改变什么来纠正它?
你正确地找到了分母中的行列式,但其余部分是错误的。
非对角线元素应具有相反的符号,而对角线元素应交换。比较两个矩阵时,这两个东西都清晰可见。
这不是手工做的最方便的事情,所以 solve
确实更好。如果你坚持手动做,那么你可以使用
matrix(rev(S), 2, 2) / (prod(diag(S)) - S[1, 2] * S[2, 1]) * (2 * diag(1, 2) - 1)
# [,1] [,2]
# [1,] 0.3333333 0.1111111
# [2,] 0.1111111 0.1481481
正确的公式是
(1/((S[1,1]*S[2,2])-(S[1,2]*S[2,1])))* matrix(c(S[2,2], -S[2,1], -S[1,2], S[1,1]),2)
我有一个方差协方差矩阵S:
> S
[,1] [,2]
[1,] 4 -3
[2,] -3 9
我正试图找到它的反面。
我的代码是:
>invS <- (1/((S[1,1]*S[2,2])-(S[1,2]*S[2,1])))*S
[,1] [,2]
[1,] 0.1481481 -0.1111111
[2,] -0.1111111 0.3333333
但是,如果我使用 solve(),我会得到:
>invSalt <- solve(S)
[,1] [,2]
[1,] 0.3333333 0.1111111
[2,] 0.1111111 0.1481481
为什么 invS 不正确?我应该改变什么来纠正它?
你正确地找到了分母中的行列式,但其余部分是错误的。
非对角线元素应具有相反的符号,而对角线元素应交换。比较两个矩阵时,这两个东西都清晰可见。
这不是手工做的最方便的事情,所以 solve
确实更好。如果你坚持手动做,那么你可以使用
matrix(rev(S), 2, 2) / (prod(diag(S)) - S[1, 2] * S[2, 1]) * (2 * diag(1, 2) - 1)
# [,1] [,2]
# [1,] 0.3333333 0.1111111
# [2,] 0.1111111 0.1481481
正确的公式是
(1/((S[1,1]*S[2,2])-(S[1,2]*S[2,1])))* matrix(c(S[2,2], -S[2,1], -S[1,2], S[1,1]),2)