如果我正在做标准 OLS 并想要计算 beta 值(OLS 估计器),以下哪一个是数值更稳定的方法?为什么?
假设列已经以均值为中心并归一化,以解决做:
1)
2)
在哪里表示摩尔-彭罗斯逆,和来自 QR 分解andsolve是一个类似于 python 或 r 中的求解函数的函数。
我会认为(2)更好似乎有更高的条件数,但在实践中(至少在 python 中)我发现从(1)派生的 beta 值可以更好地最小化残差平方和。
如果我正在做标准 OLS 并想要计算 beta 值(OLS 估计器),以下哪一个是数值更稳定的方法?为什么?
假设列已经以均值为中心并归一化,以解决做:
1)
2)
在哪里表示摩尔-彭罗斯逆,和来自 QR 分解andsolve是一个类似于 python 或 r 中的求解函数的函数。
我会认为(2)更好似乎有更高的条件数,但在实践中(至少在 python 中)我发现从(1)派生的 beta 值可以更好地最小化残差平方和。
使用 Moore-Penrose 伪逆矩阵的在可以直接解释秩不足设计矩阵的意义上更稳定. 允许我们自然地使用身份:和; 矩阵可以用作“代理”矩阵的真正逆矩阵, 即使逆矩阵不存在。此外,“通常”的计算方式通过使用矩阵的奇异值分解, 在哪里, 在方法上和计算上都经过了很好的研究。我们简单地取对角矩阵中非零奇异值的倒数,我们很高兴。Moore-Penrose 伪逆在许多证明中很常见,因为它们“只是存在”并大大简化了许多推导。
也就是说,在大多数情况下,使用 Moore-Penrose Pseudo-inverse 并不是一个好的做法,除非我们有充分的理由(例如,我们的程序始终使用小的且可能是秩退化的协方差矩阵)。原因是:1. 它可以隐藏我们数据的真正潜在问题(例如变量重复)和 2. 它不必要地昂贵(我们有更好的选择)。最后,注意满秩的 Moore-Penrose 伪逆可以通过 QR 分解来计算,, 作为:在哪里是一个上三角矩阵,来自“瘦/缩减/瘦”的 QR 分解. 因此,如果反正是满级。(Gentle 的矩阵代数:统计学中的理论、计算和应用提供了丰富的信息,如果人们希望进一步探索这个问题——关于广义逆的第 3.6 节应该是一个相关的起点。)
稍微详细说明我的第一点:如果我们遇到共线性问题或只是有一个(即比数据点更多的预测变量)而不是使用隐藏问题. 通过使用 Moore-Penrose 伪逆求解的方程组的条件可能仍然非常糟糕,导致解不稳定和/或误导性推断。因此,如果数值稳定性是一个问题,我建议直接使用正则化而不是 Moore-Penrose 伪逆。请注意,在速度方面,计算也是有问题的;对于大型系统,基于梯度下降法或交替最小二乘法的潜在迭代方法要快得多(例如,在推荐系统文献中,请参阅 Paterek (2008)改进正则化奇异值分解以实现非常简洁的协同过滤)。