Решение методом наименьших квадратов при наличии известной ковариации
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-by-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.