对于稳健的拟合问题,我想通过杠杆值找到异常值,它是“帽子”矩阵的对角线元素。设数据矩阵为X
(n * p),Hat矩阵为:
Hat = X(X'X)^{-1}X'
X'
的转置在哪里X
。
当n
很大时,Hat 矩阵是一个巨大的 ( n * n
)。所以计算它很耗时。我想知道是否有更快的方法来计算杠杆值?
对于稳健的拟合问题,我想通过杠杆值找到异常值,它是“帽子”矩阵的对角线元素。设数据矩阵为X
(n * p),Hat矩阵为:
Hat = X(X'X)^{-1}X'
X'
的转置在哪里X
。
当n
很大时,Hat 矩阵是一个巨大的 ( n * n
)。所以计算它很耗时。我想知道是否有更快的方法来计算杠杆值?
你没有指定编程语言,所以我只关注算法部分。
如果您已经拟合了最小二乘问题正交方法,例如 QR 分解和 SVD,那么帽子矩阵就是简单的形式。您可以查看我的答案Compute projection / hat matrix via QR factorization, SVD (and Cholesky factorization?)以获得帽子矩阵的显式形式(用 LaTeX 编写)。请注意,那里的 OP 需要完整的帽子矩阵,所以我没有演示如何仅有效地计算对角线元素。但这真的很简单。请注意,对于正交方法,帽子矩阵以 形式结束QQ'
。对角线是逐行内积。不同行之间的叉积给出非对角线。在 R 中,这种逐行内积可以计算为rowSums(Q ^ 2)
。
我的回答如何有效地计算 diag(X % % solve(A) % % t(X)) 而不采用矩阵求逆?处于更一般的环境中。帽子矩阵是 的一个特例A = X'X
。这个答案侧重于使用三角分解,如 Cholesky 分解和 LU 分解,并展示了如何仅计算对角线元素。您将看到colSums
而不是rowSums
在这里,因为帽子矩阵以 form 结束Q'Q
。
最后,我想指出一些统计数据。单独的高杠杆并不意味着异常值。高杠杆率和高残差(即高库克距离)的组合表明异常值。