Решение методом наименьших квадратов в присутствии известной ковариации
x = lscov(A,B)
x = lscov(A,B,w)
x = lscov(A,B,V)
x = lscov(A,B,V,alg)
[x,stdx] = lscov(...)
[x,stdx,mse] = lscov(...)
[x,stdx,mse,S] = lscov(...)
x = lscov(A,B) возвращает решение для обычных наименьших квадратов в линейную систему уравнений A*x = B, т.е. x вектор n-by-1, минимизирующий сумму квадратичных ошибок (B - A*x)'*(B - A*x), где A m-by-n, и B m-by-1. B также может быть матрицей m-на-k, и lscov возвращает одно решение для каждого столбца B. Когда rank(A) < n, lscov устанавливает максимально возможное количество элементов x до нуля, чтобы получить «основное решение».
x = lscov(A,B,w), где w является векторной длиной m действительных положительных весов, возвращает взвешенное решение наименьших квадратов в линейную систему A*x = B, то есть x минимизирует (B - A*x)'*diag(w)*(B - A*x). w обычно содержит либо счетчики, либо обратные отклонения.
x = lscov(A,B,V), где V является m-на-m вещественной симметричной положительной определенной матрицы, возвращает обобщенное решение наименьших квадратов в линейную систему A*x = B с ковариационной матрицей, пропорциональной V, то есть x минимизирует (B - A*x)'*inv(V)*(B - A*x).
В более общем плане V может быть положительным полудефинитом, и lscov прибыль x что сводит к минимуму e'*e, при условии A*x + T*e = B, где минимизация завершена x и e, и T*T' = V. Когда V является полуопределенным, эта проблема имеет решение только в том случае, если B согласуется с A и V (то есть B находится в пространстве столбца [A T]), в противном случае lscov возвращает ошибку.
По умолчанию lscov вычисляет разложение Холеского V и, фактически, инвертирует этот фактор для преобразования задачи в обычные наименьшие квадраты. Однако, если lscov определяет, что V полудефинит, он использует алгоритм ортогонального разложения, который позволяет избежать инвертирования V.
x = lscov(A,B,V,alg) определяет алгоритм, используемый для вычисления x когда V является матрицей. alg могут иметь следующие значения:
'chol' использует разложение Холеского V.
'orth' использует ортогональные разложения и более подходит, когда V является плохо обусловленным или единичным, но является более дорогостоящим с точки зрения вычислений.
[x,stdx] = lscov(...) возвращает оцененные стандартные ошибки x. Когда A является дефицитом ранга, stdx содержит нули в элементах, соответствующих обязательно нулевым элементам x.
[x,stdx,mse] = lscov(...) возвращает среднее значение ошибки в квадрате. Если B предполагается, что она имеет ковариационную матрицуV (или (start2) ×diag(1./W)), то mse - оценка, равная
[x,stdx,mse,S] = lscov(...) возвращает оцененную ковариационную матрицу x. Когда A является дефицитом ранга, S содержит нули в строках и столбцах, соответствующих обязательно нулевым элементам x. lscov не может вернуться S если он вызывается с несколькими правыми сторонами, то есть если size(B,2) > 1.
Стандартные формулы для этих величин, когда A и V являются полным званием, являются
x = inv(A'*inv(V)*A)*A'*inv(V)*B
mse = B'*(inv(V) - inv(V)*A*inv(A'*inv(V)*A)*A'*inv(V))*B./(m-n)
S = inv(A'*inv(V)*A)*mse
stdx = sqrt(diag(S))
Однако lscov использует методы, которые быстрее и стабильнее и применимы к случаям с дефицитом ранга.
lscov предполагает, что ковариационная матрица B известен только до масштабного коэффициента. mse является оценкой этого неизвестного масштабного коэффициента, и lscov масштабирование выходных данных S и stdx соответствующим образом. Однако, если V известно, что это именно ковариационная матрица Bтогда это масштабирование не нужно. Для получения соответствующих оценок в этом случае следует выполнить масштабирование S и stdx около 1/mse и sqrt(1/mse)соответственно.
Оператор обратной косой черты MATLAB ® (\) позволяет выполнять линейную регрессию путем вычисления оценок коэффициентов регрессии с использованием обычных наименьших квадратов (OLS). Также можно использоватьlscov для вычисления одних и тех же оценок OLS. С помощью lscov, можно также вычислить оценки стандартных ошибок для этих коэффициентов и оценку стандартного отклонения члена ошибки регрессии:
x1 = [.2 .5 .6 .8 1.0 1.1]';
x2 = [.1 .3 .4 .9 1.1 1.4]';
X = [ones(size(x1)) x1 x2];
y = [.17 .26 .28 .23 .27 .34]';
a = X\y
a =
0.1203
0.3284
-0.1312
[b,se_b,mse] = lscov(X,y)
b =
0.1203
0.3284
-0.1312
se_b =
0.0643
0.2267
0.1488
mse =
0.0015Использовать lscov для вычисления взвешенного соответствия наименьшим квадратам (WLS) путем предоставления вектора относительных весов наблюдения. Например, можно уменьшить влияние ненадежного наблюдения на посадку:
w = [1 1 1 1 1 .1]';
[bw,sew_b,msew] = lscov(X,y,w)
bw =
0.1046
0.4614
-0.2621
sew_b =
0.0309
0.1152
0.0814
msew =
3.4741e-004Использовать lscov для вычисления общего соответствия наименьшим квадратам (GLS) путем обеспечения ковариационной матрицы наблюдения. Например, данные не могут быть независимыми:
V = .2*ones(length(x1)) + .8*diag(ones(size(x1)));
[bg,sew_b,mseg] = lscov(X,y,V)
bg =
0.1203
0.3284
-0.1312
sew_b =
0.0672
0.2267
0.1488
mseg =
0.0019Вычислите оценку ковариационной матрицы коэффициентов для совпадений OLS, WLS или GLS. Стандартные ошибки коэффициента равны квадратным корням значений на диагонали этой ковариационной матрицы:
[b,se_b,mse,S] = lscov(X,y);
S
S =
0.0041 -0.0130 0.0075
-0.0130 0.0514 -0.0328
0.0075 -0.0328 0.0221
[se_b sqrt(diag(S))]
ans =
0.0643 0.0643
0.2267 0.2267
0.1488 0.1488Вектор x минимизирует количество (A*x-B)'*inv(V)*(A*x-B). Классическое решение линейной алгебры для этой задачи
x = inv(A'*inv(V)*A)*A'*inv(V)*B
но lscov вместо этого функция вычисляет QR-разложение A а затем изменяет Q около V.
[1] Странг, Г., Введение в прикладную математику, Уэлсли-Кембридж, 1986, с. 398.