在R语言中寻找逆矩阵

3
我有一个方差协方差矩阵 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是不正确的?我应该做哪些修改来纠正它?
2个回答

4
你在分母中正确地找到了行列式,但其余部分是错误的。

enter image description here

非对角元素应该带有相反的符号,而对角元素应该交换。当比较这两个矩阵时,这两件事情都很明显。

手动完成这些操作并不是最方便的事情,因此使用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

3
正确的公式是:
 (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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接