Erklären Sie, wie "eigen" beim Invertieren einer Matrix hilft

13

Meine Frage bezieht sich auf eine in geoR:::.negloglik.GRFoder ausgenutzte Berechnungstechnik geoR:::solve.geoR.

In einem linearen gemischten Modellaufbau gilt:

Y=Xβ+Zb+e
wobei β und b die festen bzw. zufälligen Effekte sind. Auch ist Σ=cov(Y)

Bei der Abschätzung der Effekte muss berechnet werden, was normalerweise mit etwas wie , aber manchmal ist fast nicht invertierbar, also wende den Trick an( 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

(kann in geoR:::.negloglik.GRFund gesehen werden geoR:::.solve.geoR), was gleichbedeutend ist mit Zerlegen von wobei und daher

(XΣ1X)=ΛDΛ1
Λ=Λ1
(XΣ1X)1=(D1/2Λ1)(D1/2Λ1)

Zwei Fragen:

  1. Wie hilft diese Eigenzerlegung beim Invertieren ?(XΣ1X)
  2. Gibt es andere realisierbare Alternativen (die robust und stabil sind)? (zB qr.solveoder chol2inv?)
Qoheleth
quelle

Antworten:

15

1) Die eigendecomposition hilft nicht wirklich viel. Es ist mit Sicherheit numerisch stabiler als eine Cholesky-Faktorisierung. Dies ist hilfreich, wenn Ihre Matrix schlecht konditioniert / nahezu singulär ist / eine hohe Konditionszahl aufweist. So können Sie die eigendecomposition verwenden und erhalten eine Lösung für Ihr Problem. Es gibt jedoch kaum eine Garantie dafür, dass es sich um die RICHTIGE Lösung handelt. Ehrlich gesagt, wenn Sie ausdrücklich Invertzucker wird der Schaden bereits geschehen. Das Bilden von X T Σ - 1 X macht die Sache nur noch schlimmer. Die eigendecomposition wird Ihnen helfen, die Schlacht zu gewinnen, aber der Krieg ist mit Sicherheit verloren.ΣXTΣ1X

2) Ohne die Einzelheiten Ihres Problems zu kennen, würde ich dies tun. Führen Sie zunächst eine Cholesky-Faktorisierung an sodass Σ = L L T ist . Führen Sie dann eine QR-Faktorisierung an L - 1 X durch, so dass L - 1 X = Q R ist . Bitte stellen Sie sicher, dass Sie L - 1 X durch Forward-Substitution berechnen. Invertieren Sie L NICHT explizit . Dann erhalten Sie: X T Σ - 1 X = X T ( LΣΣ=LLTL1XL1X=QRL1XL Von hier aus können Sie jede gewünschte rechte Seite lösen. Aber auch hier bitte nicht explizitR(oderRTR)invertieren. Verwenden Sie nach Bedarf Vorwärts- und Rückwärtssubstitutionen.

XTΣ1X=XT(LLT)1X=XTLTL1X=(L1X)T(L1X)=(QR)TQR=RTQTQT=RTR
RRTR

Übrigens bin ich neugierig auf die rechte Seite Ihrer Gleichung. Du hast geschrieben, dass es . Sind Sie sicher, dass es nicht X T Σ - 1 Y ist ? Denn wenn es wäre, könnte man einen ähnlichen Trick auf der rechten Seite verwenden: X T Σ - 1 Y = X T ( L L T ) - 1 YXTΣYXTΣ1Y Und dann können Sie den Coup de grâce liefern, wenn Sie nachβzu lösen gehen: 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

XTΣ1Y=XT(LLT)1Y=XTLTL1Y=(L1X)TL1Y=(QR)TL1Y=RTQTL1Y
β Natürlich würden Sie niemals explizitRfür den letzten Schrittinvertieren, oder? Das ist nur eine Rückwärtssubstitution. :-)
XTΣ1Xβ=XTΣ1YRTRβ=RTQTL1YRβ=QTL1Yβ=R1QTL1Y
R
Bill Woessner
quelle
Vielen Dank. Dies ist eine hilfreiche Antwort. Nur um es deutlich auszudrücken: Wird Ihre chol / qr-Alternative helfen, den Krieg zu gewinnen? oder einfach das Spiel besser gewinnen als das, was Eigen macht?
Qoheleth
XΣXTΣ1X