Jelaskan bagaimana `eigen` membantu membalik matriks

13

Pertanyaan saya berkaitan dengan teknik perhitungan yang dieksploitasi di geoR:::.negloglik.GRFatau geoR:::solve.geoR.

Dalam pengaturan model campuran linier: mana dan masing-masing adalah efek tetap dan acak. Juga,

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

Ketika memperkirakan efek, ada kebutuhan untuk menghitung yang biasanya dapat dilakukan menggunakan sesuatu seperti , tetapi kadang-kadang hampir tidak dapat dibalik, jadi gunakan triknya( 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

(dapat dilihat pada geoR:::.negloglik.GRFdan geoR:::.solve.geoR) yang merupakan jumlah pembusukan mana dan karenanya

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

Dua pertanyaan:

  1. Bagaimana dekomposisi eigen ini membantu pembalikan ?(XΣ-1X)
  2. Apakah ada alternatif lain yang layak (yang kuat dan stabil)? (misalnya qr.solveatau chol2inv?)
qoheleth
sumber

Jawaban:

15

1) Komposisi eigend tidak terlalu membantu. Ini tentu saja lebih stabil secara numerik daripada faktorisasi Cholesky, yang membantu jika matriks Anda tidak dikondisikan / hampir tunggal / memiliki angka kondisi tinggi. Sehingga Anda dapat menggunakan eigendecomposition dan itu akan memberi Anda A solusi untuk masalah Anda. Tetapi ada sedikit jaminan bahwa itu akan menjadi solusi yang TEPAT . Jujur, setelah Anda membalikkan secara eksplisit , kerusakan sudah terjadi. Membentuk X T Σ - 1 X hanya memperburuk keadaan. Komposisi eigend akan membantu Anda memenangkan pertempuran, tetapi perang pasti hilang.ΣXTΣ1X

2) Tanpa mengetahui secara spesifik masalah Anda, inilah yang akan saya lakukan. Pertama, melakukan faktorisasi Cholesky pada sehingga Σ = L L T . Kemudian melakukan QR faktorisasi pada L - 1 X sehingga L - 1 X = Q R . Pastikan untuk menghitung L - 1 X menggunakan penggantian maju - JANGAN membalikkan L secara eksplisit . Jadi Anda mendapatkan: X T Σ - 1 X = X T ( LΣΣ=LLTL1XL1X=QRL1XL Dari sini, Anda dapat menyelesaikan sisi kanan yang Anda inginkan. Tapi sekali lagi, jangan eksplisit invertR(atauRTR). Gunakan penggantian maju dan mundur jika diperlukan.

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

XTΣYXTΣ1Y

XTΣ1Y=XT(LLT)1Y=XTLTL1Y=(L1X)TL1Y=(QR)TL1Y=RTQTL1Y
β
XTΣ1Xβ=XTΣ1YRTRβ=RTQTL1YRβ=QTL1Yβ=R1QTL1Y
R
Bill Woessner
sumber
Terima kasih. ini adalah respons yang bermanfaat. Untuk lebih jelasnya, apakah alternatif Anda akan membantu memenangkan perang? atau hanya memenangkan permainan lebih baik daripada yang dilakukan eigen?
qoheleth
XΣXTΣ1X