Wyjaśnij, w jaki sposób „własny” pomaga odwrócić macierz

13

Moje pytanie dotyczy techniki obliczeniowej wykorzystywanej w geoR:::.negloglik.GRFlub geoR:::solve.geoR.

W liniowym modelu mieszanym: gdzie i to odpowiednio efekty stałe i losowe. Ponadtoβ b Σ = cov ( Y )

Y=Xβ+Zb+e
βbΣ=cov(Y)

Podczas szacowania efektów konieczne jest obliczenie które normalnie można wykonać za pomocą czegoś podobnego , ale czasami jest prawie nieodwracalny, więc zastosuj lewę( X Σ - 1 X )

(XΣ1X)1XΣ1Y
solve(XtS_invX,XtS_invY)(XΣ1X)geoR
t.ei=eigen(XtS_invX)
crossprod(t(t.ei$vec)/sqrt(t.ei$val))%*%XtS_invY

(można zobaczyć w geoR:::.negloglik.GRFi geoR:::.solve.geoR), co oznacza rozkład gdzie a zatem

(XΣ1X)=ΛDΛ1
( X ' Σ - 1 X ) - 1 = ( D - 1 / 2 Λ - 1 ) " ( D - 1 / 2 Λ - 1 )Λ=Λ1
(XΣ1X)1=(D1/2Λ1)(D1/2Λ1)

Dwa pytania:

  1. W jaki sposób rozkład własny pomaga odwrócić ?(XΣ1X)
  2. Czy istnieją inne realne alternatywy (które są solidne i stabilne)? (np. qr.solveczy chol2inv?)
qoheleth
źródło

Odpowiedzi:

15

1) Skład eigend nie bardzo pomaga. Jest z pewnością bardziej stabilny numerycznie niż rozkład na czynniki Choleskiego, co jest pomocne, jeśli macierz jest źle uwarunkowana / prawie pojedyncza / ma wysoką liczbę warunków. Więc można użyć eigendecomposition i to daje A rozwiązanie problemu. Ale nie ma gwarancji, że będzie to PRAWIDŁOWE rozwiązanie. Szczerze mówiąc, po jawnym odwróceniu obrażenia już zostały wyrządzone. Formowanie tylko pogarsza sprawę. Skład eigend pomoże ci wygrać bitwę, ale wojna z pewnością jest przegrana.X T Σ - 1 XΣXTΣ1X

2) Nie znając specyfiki twojego problemu, właśnie to bym zrobił. Po pierwsze, należy wykonać na czynniki Cholesky'iego o , tak że . Następnie dokonaj faktoryzacji QR na , aby . Pamiętaj, aby obliczyć stosując substytucję przód - NIE wyraźnie inwertowany . Otrzymujesz: Odtąd możesz rozwiązać dowolną prawą stronę. Ale znowu,ΣΣ=LLTL1XL1X=QRL1XL

XTΣ1X=XT(LLT)1X=XTLTL1X=(L1X)T(L1X)=(QR)TQR=RTQTQT=RTR
R(lub ). W razie potrzeby użyj substytucji do przodu i do tyłu.RTR

BTW, jestem ciekawa prawej strony twojego równania. Napisałeś, że to . Czy na pewno nie jest to ? Ponieważ gdyby tak było, możesz użyć podobnej sztuczki po prawej stronie: A potem możesz podać zamach stanu, gdy pójdziesz rozwiązać : XTΣYXTΣ1Y β X T Σ - 1 X β = X T Σ - 1 Y R T R β = R T Q T L - 1 Y R β = Q T L - 1 Y β = R - 1 Q T L - 1 Y R

XTΣ1Y=XT(LLT)1Y=XTLTL1Y=(L1X)TL1Y=(QR)TL1Y=RTQTL1Y
β
XTΣ1Xβ=XTΣ1YRTRβ=RTQTL1YRβ=QTL1Yβ=R1QTL1Y
Rna ostatni krok, prawda? To tylko wsteczna zamiana. :-)
Bill Woessner
źródło
Dzięki. to jest pomocna odpowiedź. Mówiąc wprost, czy twoja alternatywa dla chol / qr pomoże wygrać wojnę? czy po prostu wygrywając grę lepiej niż to, co robi?
qoheleth
Trudno odpowiedzieć na to pytanie. Jestem przekonany, że połączenie faktoryzacji Cholesky'ego i QR daje lepszą odpowiedź (i szybszą odpowiedź). To, czy jest to prawidłowa odpowiedź, naprawdę zależy od źródła problemu. W takim przypadku istnieją 2 potencjalne źródła. Albo kolumny są prawie liniowo zależne, albo zbliża się do liczby pojedynczej. Kiedy tworzysz , problemy te się wzmacniają. Podejście Cholesky + QR nie łagodzi (i nie może) żadnego z tych problemów, ale zapobiega pogorszeniu sytuacji. Σ X T Σ - 1 XXΣXTΣ1X
Bill Woessner