针对稳健拟合问题,我希望通过杠杆值来找到离群值,杠杆值是“帽子”矩阵的对角线元素。设数据矩阵为X
(n * p),帽子矩阵为:
Hat = X(X'X)^{-1}X'
其中X'
表示X
的转置。
当n
很大时,帽子矩阵是一个巨大的矩阵(n * n
)。因此计算它是耗时的。我想知道是否有更快的方法只计算杠杆值?
针对稳健拟合问题,我希望通过杠杆值来找到离群值,杠杆值是“帽子”矩阵的对角线元素。设数据矩阵为X
(n * p),帽子矩阵为:
Hat = X(X'X)^{-1}X'
其中X'
表示X
的转置。
当n
很大时,帽子矩阵是一个巨大的矩阵(n * n
)。因此计算它是耗时的。我想知道是否有更快的方法只计算杠杆值?
您没有指定编程语言,因此我将仅关注算法部分。
如果您已经使用QR分解和SVD等正交方法拟合了最小二乘问题,则帽子矩阵是简单的形式。您可以查看我的回答通过QR分解、SVD(和Cholesky分解?)计算投影/帽子矩阵以获取帽子矩阵的显式形式(用LaTeX编写)。请注意,那里的OP想要完整的帽子矩阵,因此我没有演示如何高效地计算仅对角线元素。但这非常简单。请注意,对于正交方法,帽子矩阵最终呈现为QQ'
的形式。对角线是逐行内积。不同行之间的叉积给出非对角线元素。在R中,这样的逐行内积可以计算为rowSums(Q ^ 2)
。
A = X'X
。这个答案侧重于使用三角分解(如Cholesky分解和LU分解),并展示如何仅计算对角线元素。您将看到这里使用的是 colSums
而不是 rowSums
,因为帽子矩阵最终呈现为一个形式为 Q'Q
的形式。