Решение методом наименьших квадратов при наличии известной ковариации
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)
возвращает обычное решение методом наименьших квадратов в линейную систему equations A*x = B
, т.е. x
является n-1 вектором, который минимизирует сумму квадратичных невязок (B - A*x)'*(B - A*x)
, где A
является m на n, и B
является m-1. B
может также быть m-by-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-by-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
принят, чтобы иметь ковариационную матрицу σ2V
(или (σ2) ×diag
(1./W)
), то mse
является оценкой σ2.
[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] Странг, G., Введение в Прикладную математику, Wellesley-Кембридж, 1986, p. 398.