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