ロバストなフィッティング問題のために、「ハット」行列の対角要素であるレバレッジ値によって外れ値を見つけたいと思います。データ行列を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 などの最小二乗問題直交法を当てはめた場合、ハット行列は単純な形式になります。明示的な形式のハット行列 (LaTeX で記述) については、QR 因子分解、SVD (およびコレスキー因子分解?)による私の回答の計算射影/ハット行列をチェックしてください。OP には完全なハット行列が必要なので、対角要素のみを効率的に計算する方法を示していないことに注意してください。しかし、それは本当に簡単です。直交法の場合、ハット行列は形式 で終わることに注意してくださいQQ'
。対角線は行単位の内積です。異なる行間のクロス積は非対角になります。R では、このような行単位の内積は として計算できますrowSums(Q ^ 2)
。
私の答え逆行列を取らずに効率的にdiag(X % % solve(A) % % t(X)) を計算する方法は? より一般的な設定になっています。ハット マトリックスは の特殊なケースA = X'X
です。この回答では、コレスキー分解や LU 分解などの三角分解の使用に焦点を当て、対角要素のみを計算する方法を示します。ハット行列は最終的に form になるため、ここではcolSums
なく表示されます。rowSums
Q'Q
最後に、統計的なことを指摘したいと思います。レバレッジが高いだけでは外れ値にはなりません。高いレバレッジと高い残差 (つまり、高いクック距離) の組み合わせは、外れ値を示します。