Spiega come `eigen` aiuta a invertire una matrice


13

La mia domanda riguarda una tecnica di calcolo sfruttata in geoR:::.negloglik.GRFo geoR:::solve.geoR.

In una configurazione lineare mista: dove e sono rispettivamente gli effetti fissi e casuali. Inoltre,

Y=Xβ+ZB+e
βBΣ=COV(Y)

Quando si stimano gli effetti, è necessario calcolare che normalmente può essere fatto usando qualcosa di simile , ma a volte è quasi non invertibile, quindi usa il trucco

(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

(può essere visto in geoR:::.negloglik.GRFe geoR:::.solve.geoR) che equivale a decomposizione dove e quindi

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

Due domande:

  1. In che modo questa decomposizione degli automi aiuta a invertire ?(X'Σ-1X)
  2. Esistono altre alternative praticabili (robuste e stabili)? (es. qr.solveo chol2inv?)

Risposte:


15

1) La composizione elettronica non aiuta molto. È certamente più numericamente stabile di una fattorizzazione di Cholesky, che è utile se la tua matrice è mal condizionata / quasi singolare / ha un numero di condizione elevato. Quindi puoi usare la composizione elettronica e ti darà una soluzione al tuo problema. Ma c'è poca garanzia che sarà la soluzione GIUSTA . Onestamente, una volta invertito esplicitamente , il danno è già stato fatto. Formare peggiora le cose. La composizione elettronica ti aiuterà a vincere la battaglia, ma la guerra è sicuramente persa.X T Σ - 1 XΣXTΣ1X

2) Senza conoscere i dettagli del tuo problema, questo è quello che farei. In primo luogo, eseguire una fattorizzazione di Cholesky su in modo che . Quindi eseguire una fattorizzazione QR su modo che . Si prega di essere sicuri di calcolare con la sostituzione in avanti - NON esplicitamente invertito . Quindi ottieni: Da qui puoi risolvere qualsiasi lato destro che desideri. Ma ancoraΣΣ=LLTL1XL1X=QRL1XL

XTΣ1X=XT(LLT)1X=XTLTL1X=(L1X)T(L1X)=(QR)TQR=RTQTQT=RTR
R(o ). Utilizzare le sostituzioni avanti e indietro se necessario.RTR

A proposito, sono curioso del lato destro della tua equazione. Lei ha scritto che si tratta di . Sei sicuro che non sia ? Se così fosse, potresti usare un trucco simile sul lato destro: E poi puoi consegnare il coup de grâce quando vai a risolvere per : XTΣYXTΣ1Y

XTΣ1Y=XT(LLT)1Y=XTLTL1Y=(L1X)TL1Y=(QR)TL1Y=RTQTL1Y
β
XTΣ1Xβ=XTΣ1YRTRβ=RTQTL1YRβ=QTL1Yβ=R1QTL1Y
Rper l'ultimo passaggio, giusto? Questa è solo una sostituzione arretrata. :-)

Grazie. questa è una risposta utile Giusto per essere espliciti, la tua alternativa col / qr ti aiuterà a vincere la guerra? o semplicemente vincere la partita meglio di ciò che fa eigen?
qoheleth,

È una domanda difficile a cui rispondere. Sono fiducioso che combinare le fattorizzazioni Cholesky e QR ti darà una risposta migliore (e una risposta più veloce). Se è la risposta giusta dipende davvero dalla fonte del problema. In questo caso, ci sono 2 potenziali fonti. O le colonne di sono quasi linearmente dipendenti o si avvicina al singolare. Quando si forma , questi problemi si amplificano a vicenda. L'approccio Cholesky + QR non mitiga (e non può) mitigare nessuno di questi problemi, ma impedisce alla situazione di peggiorare. XΣXTΣ1X
Bill Woessner,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.