在R语言中的广义逆矩阵

4

我可以使用MASS库中的ginv函数来获取矩阵的Moore-Penrose广义逆。

m <- matrix(1:9, 3, 3)
library(MASS)
ginv(m)

在SAS中,我们拥有多个函数来获得矩阵的广义逆。SVD可用于找到广义逆,但这仍然是一个Moore-Penrose逆。我想知道是否有R中的任何函数可以获得矩阵的广义逆(它不是唯一的),除了Moore-Penrose广义逆。感谢您的帮助和时间。
编辑:
矩阵A的广义逆定义为满足方程AGA = A的任何矩阵G。
该G不是Moore-Penrose广义逆,因此不是唯一的。

2
你想要哪些其他的伪逆?您能更准确地描述您想从 SAS 模仿什么吗? - Iterator
1
引用R帮助列表中经常出现的签名:“您正在尝试解决什么问题?” - Ben Bolker
2个回答

6
大多数情况下,您并不需要矩阵的逆,因为在计算结束时,由于四舍五入误差,最终结果可能会被破坏。
通常更典型的做法是使用部分主元和缩放来创建LU分解。使用它对右手边向量执行前/后代换以获得解。如果您有多个RHS向量,则可以重复应用它,这尤其有帮助。
您需要使用Matrix包才能执行此操作。请参考:Matrix

感谢您的评论。您是否可以提供一个例子?谢谢。 - MYaseen208

0

没错,R包不再可用确实很不方便。不过你可以使用pracma包作为替代。 还有你的Moore-Penrose广义逆矩阵:

pinv(m)

小心使用 pracma::pinv,对于具有复数元素的矩阵,它会返回错误的结果。我今天已经给作者发了一封邮件告诉他了。伪逆矩阵也可以在 EigenR 包中找到。 - Stéphane Laurent

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