Использование QR-разложения для решения наименьших квадратов в Matlab
Я использую Matlab для оценки регрессионной модели с обычными наименьшими квадратами (OLS).
Модель y = xB
, где x
очень разреженная матрица с размерностью 500000 x 2500
, Я использую разложение QR:
[C,R] = qr(x,y,0)
а затем оценивая b
с
b = R\C
Мой вопрос заключается в том, нужно ли мне беспокоиться о числовых ошибках здесь. Есть ли какая-то дополнительная итерация, которую мне нужно сделать? Должен ли я проверить номер условия R
, или же R'R
? Любое руководство будет высоко ценится.
1 ответ
Matlab рекомендуемый способ:
b = X\y;
Посетите http://www.mathworks.com/help/matlab/ref/mldivide.html и, в частности, раздел More About, чтобы узнать, как matlab обрабатывает различные случаи под капотом.
Если вы хотите использовать разреженность X, просто объявите X как разреженную, X = sparse(X)
перед звонком \
,