Поясніть, як `eigen` допомагає інвертувати матрицю


13

Моє запитання стосується техніки обчислень, що експлуатується в geoR:::.negloglik.GRFабо geoR:::solve.geoR.

У налаштуваннях лінійної змішаної моделі: де і - фіксовані та випадкові ефекти відповідно. Такожβ b Σ = cov ( Y )

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

Оцінюючи ефекти, виникає потреба в обчисленні що зазвичай можна зробити, використовуючи щось на зразок , але іноді майже незворотний, тому використовуйте трюк( 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

(можна побачити в geoR:::.negloglik.GRFі geoR:::.solve.geoR), що означає розкладання де і тому

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

Два питання:

  1. Яким чином цей власний розпад допомагає інвертувати ?(XΣ1X)
  2. Чи існують інші життєздатні альтернативи (які є надійними та стабільними)? (наприклад, qr.solveабо chol2inv?)

Відповіді:


15

1) Ейгендекомпозиція насправді не дуже допомагає. Це, безумовно, більш стабільно чисельно, ніж факторизація Чолеського, що корисно, якщо ваша матриця погано обумовлена ​​/ майже сингулярна / має високий номер умови. Таким чином , ви можете використовувати eigendecomposition і це дасть вам А рішення вашої проблеми. Але мало гарантій, що це буде ПРАВИЛЬНЕ рішення. Чесно кажучи, щойно явно ви інвертуєте , шкода вже зроблена. Формування просто погіршує справи. Ейгендекомпозиція допоможе вам виграти битву, але війна, безумовно, програна.ΣXTΣ1X

2) Не знаючи специфіки вашої проблеми, це я би робив. По- перше, виконати розкладання Холецкого на , так що . Потім виконайте QR-факторизацію на щоб . Будь ласка , переконайтеся , що обчислювальний з допомогою прямої підстановки - DO NOT явно інвертного . Тоді ви отримуєте: Звідси ви можете вирішити будь-яку потрібну вам праву частину. Але знову ж таки,ΣΣ=LLTL1XL1X=QRL1XL

XTΣ1X=XT(LLT)1X=XTLTL1X=(L1X)T(L1X)=(QR)TQR=RTQTQT=RTR
R(або ). Використовуйте заміну вперед та назад.RTR

До речі, мені цікаво праворуч вашого рівняння. Ви писали , що це . Ви впевнені, що це не ? Бо якби це було, ви можете скористатися подібним трюком з правого боку: І тоді ви можете доставити переворот, коли ви вирішите вирішити для : 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
Rдля завершального кроку, правда? Це просто відстала заміна. :-)

Спасибі. це корисна відповідь. Щоб бути ясним, ваша альтернатива chol / qr допоможе виграти війну? або просто виграти гру краще, ніж те, що робить Eigen?
qoheleth

На це непросте запитання. Я впевнений, що поєднання факторів Cholesky і QR дасть вам кращу відповідь (і швидшу відповідь). Чи справді це правильна відповідь, залежить від джерела проблеми. У цьому випадку є 2 потенційних джерела. Або стовпці є майже лінійно залежними, або наближається до однини. Коли ви формуєте , ці проблеми посилюються. Підхід Cholesky + QR не пом'якшує жодну з цих проблем, але не дозволяє погіршити ситуацію. Σ X T Σ - 1 XXΣXTΣ1X
Білл Восснер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.