25.4 Линейный метод наименьших квадратов
Octave также поддерживает минимизацию методом линейных наименьших квадратов. То есть Octave может найти параметр b, при котором модель y = x*b наилучшим образом соответствует данным (x,y), если предположить наличие гауссовского шума с нулевым средним. Если предполагается, что шум изотропен, задачу можно решить с помощью операторов ‘\’ или ‘/’ либо функции ols. В общем случае, когда предполагается, что шум анизотропен, требуется gls.
-
:
[beta, sigma, r] =ols(y, x) -
Оценивание обычным методом наименьших квадратов (OLS).
Метод OLS применяется к многомерной модели y = x*b + e, где y — матрица размера t на p, x — матрица размера t на k, b — матрица размера k на p, а e — матрица размера t на p.
Каждая строка y представляет собой p-мерное наблюдение, в котором каждый столбец соответствует переменной. Аналогично, строки x представляют собой k-мерные наблюдения или, возможно, заданные значения. Кроме того, ранг набора наблюдений x должен быть достаточным и равняться k, иначе b нельзя оценить однозначно.
Предполагается, что ошибки наблюдений e происходят из лежащего в основе p-мерного распределения с нулевым средним и ковариационной матрицей размера p на p S, причём обе величины постоянны при условии x. Кроме того, матрица S постоянна для каждого наблюдения, поэтому
mean (e) = 0иcov (vec (e)) = kron (s, I). (Для случаев, не удовлетворяющих этим условиям, например при автокоррелированных ошибках, см. обобщённый метод наименьших квадратов gls, обеспечивающий более эффективное оценивание.)Возвращаемые значения beta, sigma и r определены следующим образом.
- beta
-
Оценка матрицы b методом OLS. beta вычисляется напрямую с помощью
inv (x'*x) * x' * y, если матрицаx'*xимеет полный ранг. В противном случаеbeta = pinv (x) * y, гдеpinv (x)обозначает псевдообратную матрицу x. - sigma
-
Оценка матрицы s методом OLS,
sigma = (y-x*beta)' * (y-x*beta) / (t-rank(x))
- r
Матрица остатков метода OLS,
r = y - x*beta.
-
:
[beta, v, r] =gls(y, x, o) -
Модель обобщённого метода наименьших квадратов (GLS).
Выполняет оценивание обобщённым методом наименьших квадратов для многомерной модели y = x*B + E, где y — матрица размера t на p, x — матрица размера t на k, b — матрица размера k на p, а e — матрица размера t на p.
Каждая строка y представляет собой p-мерное наблюдение, в котором каждый столбец соответствует переменной. Аналогично, строки x представляют собой k-мерные наблюдения или, возможно, заданные значения. Кроме того, ранг набора наблюдений x должен быть достаточным и равняться k, иначе b нельзя оценить однозначно.
Предполагается, что ошибки наблюдений e происходят из лежащего в основе p-мерного распределения с нулевым средним, однако дисперсии наблюдений могут различаться. То есть в общем случае
mean (e) = 0иcov (vec (e)) = (s^2)*o, где s — скаляр, а o — матрица размера t*p на t*p.Возвращаемые значения beta, v и r определены следующим образом.
- beta
-
Оценка матрицы b методом GLS.
- v
-
Оценка скаляра s^2 методом GLS.
- r
Матрица остатков метода GLS, r = y - x*beta.
См. также: ols.
-
:
x =lsqnonneg(c, d) -
:
x =lsqnonneg(c, d, x0) -
:
x =lsqnonneg(c, d, x0, options) -
:
[x, resnorm] =lsqnonneg(…) -
:
[x, resnorm, residual] =lsqnonneg(…) -
:
[x, resnorm, residual, exitflag] =lsqnonneg(…) -
:
[x, resnorm, residual, exitflag, output] =lsqnonneg(…) -
:
[x, resnorm, residual, exitflag, output, lambda] =lsqnonneg(…) -
Минимизирует
norm (c*x - d)при условииx >= 0.c и d должны быть вещественными матрицами.
x0 — необязательное начальное приближение решения x.
options — структура параметров, позволяющая изменить поведение алгоритма (см.
optimset).lsqnonnegраспознаёт следующие параметры:"MaxIter","TolX".Выходные данные:
- resnorm
-
Квадрат 2-нормы остатка:
norm (c*x-d)^2 - residual
-
Остаток:
d-c*x - exitflag
-
Индикатор сходимости. Значение 0 означает, что превышено число итераций и сходимость не достигнута; значение >0 означает, что алгоритм сошёлся. (Алгоритм устойчив и сойдётся при достаточном числе итераций.)
- output
-
Структура с двумя полями:
-
"algorithm": Использованный алгоритм ("nnls") -
"iterations": Число выполненных итераций.
-
- lambda
-
Множители Лагранжа. Если они ненулевые, соответствующие значения x должны быть равны нулю, что указывает на то, что решение находится на координатной плоскости. Величина множителя показывает, насколько улучшился бы остаток при ослаблении ограничений
x >= 0в этом направлении.
-
:
x =lscov(A, b) -
:
x =lscov(A, b, V) -
:
x =lscov(A, b, V, alg) -
:
[x, stdx, mse, S] =lscov(…) -
Вычисляет обобщённую линейную аппроксимацию методом наименьших квадратов.
Оценивает x в соответствии с моделью b = Ax + w, где предполагается, что шум w имеет нормальное распределение с ковариационной матрицей {\sigma^2} V.
Если матрица коэффициентов A имеет размер n на p, то вектор/массив постоянных членов b должен иметь размер n на k.
Необязательный входной аргумент V может быть n-элементным вектором положительных весов (обратных дисперсий) либо симметричной положительно полуопределённой матрицей размера n на n, представляющей ковариацию b. Если V не задан, возвращается решение обычным методом наименьших квадратов.
Входной аргумент alg, задающий рекомендуемый метод решения, в настоящее время игнорируется.
Помимо матрицы оценки методом наименьших квадратов x (p на k), функция также возвращает stdx (p на k) — стандартное отклонение ошибки оценки x; mse (k на 1) — оценённые коэффициенты масштаба ковариации ошибок данных (\sigma^2); и S (p на p или p на p на k, если k > 1) — ковариацию ошибки x.
Источник: Golub и Van Loan (1996), Вычисления с матрицами (3-е изд.), Johns Hopkins, раздел 5.6.3
-
: optimset
() -
:
options =optimset() -
:
options =optimset(par, val, …) -
:
options =optimset(old, par, val, …) -
:
options =optimset(old, new) -
Создаёт структуру параметров для функций оптимизации.
При вызове без входных и выходных аргументов
optimsetвыводит список всех допустимых параметров оптимизации.При вызове с одним выходным аргументом и без входных возвращает структуру параметров, в которой все допустимые параметры инициализированы значением
[].При вызове со списком пар «параметр/значение» возвращает структуру параметров, в которой инициализированы только указанные параметры.
Если первый входной аргумент — существующая структура параметров old, значения обновляются либо из списка par/val, либо из структуры параметров new.
Если par не совпадает в точности с именем стандартного параметра,
optimsetпопытается сопоставить par со стандартным параметром и установить его значение, если соответствие будет найдено. Сопоставление нечувствительно к регистру и выполняется по совпадению символов в начале имени параметра.optimsetвыдаёт ошибку, если обнаруживает несколько неоднозначных соответствий. Если соответствий стандартным параметрам не найдено, выдаётся предупреждение и создаётся нестандартный параметр.Стандартный список допустимых параметров:
- AutoScaling
- ComplexEqn
- Display
-
Запрашивает подробный вывод результатов оптимизации. Допустимые значения:
-
"off"[по умолчанию] -
Не выводить сообщения.
"iter"-
Выводить промежуточные результаты на каждой итерации цикла.
"final"-
Выводить результат последней итерации цикла.
"notify"Выводить результат последней итерации цикла, если функции не удалось сойтись.
-
- FinDiffType
- FunValCheck
-
Если этот параметр включён, при возврате целевой функцией недопустимого значения (комплексного числа, NaN или Inf) выводится ошибка. Должно быть задано значение
"on"или"off"[по умолчанию]. Примечание: функцииfzeroиfminbndкорректно обрабатывают значения Inf, поэтому в данном случае ошибку вызовут только комплексные значения или NaN. - GradObj
-
Если задано значение
"on", минимизируемая функция должна возвращать второй аргумент — градиент, или первую производную функции в точке x. Если задано значение"off"[по умолчанию], градиент вычисляется методом конечных разностей. - Jacobian
-
Если задано значение
"on", минимизируемая функция должна возвращать второй аргумент — матрицу Якоби, или первую производную функции в точке x. Если задано значение"off"[по умолчанию], матрица Якоби вычисляется методом конечных разностей. - MaxFunEvals
-
Максимальное число вычислений функции до остановки оптимизации. Должно быть положительным целым числом.
- MaxIter
-
Максимальное число итераций алгоритма до остановки оптимизации. Должно быть положительным целым числом.
- OutputFcn
-
Функция, определяемая пользователем и выполняемая один раз за итерацию алгоритма.
- TolFun
-
Критерий завершения для выходного значения функции. Если разность вычисленных значений целевой функции на двух последовательных итерациях алгоритма меньше
TolFun, оптимизация останавливается. Должно быть положительным скаляром. - TolX
-
Критерий завершения для входного значения функции. Если разность значений x — текущей точки поиска — на двух последовательных итерациях алгоритма меньше
TolX, оптимизация останавливается. Должно быть положительным скаляром. - TypicalX
- Updating
Пользователь или другие загруженные пакеты Octave могут расширить этот список. Обновлённый список допустимых параметров можно получить, вызвав
optimsetбез аргументов.Примечание 1: При сопоставлении кратких имён параметров учитываются только имена из стандартного списка, и par всегда будет дополнен до имени стандартного параметра, даже если существует точное совпадение с нестандартным именем. Значение нестандартного параметра, неоднозначного с одним или несколькими стандартными параметрами, нельзя задать с помощью
optimset; его можно задать только с помощьюsetfieldили используя точечную нотацию для структур.Примечание 2: Структура параметров оптимизации предназначена главным образом для работы с известными параметрами с помощью
optimsetиoptimget. Создание нестандартных или неоднозначных параметров, а также загрузка или выгрузка пакетов, изменяющих список известных параметров после создания структуры параметров оптимизации, может привести к непредсказуемому поведению при последующих вызовахoptimsetилиoptimget.См. также: optimget.
-
:
val =optimget(options, par) -
:
val =optimget(options, par, default) -
Возвращает значение указанного параметра par из структуры параметров оптимизации options, созданной с помощью
optimset.Если par не определён, возвращается значение default, если оно задано; в противном случае возвращается пустая матрица.
Если par не совпадает в точности с именем стандартного параметра,
optimgetпопытается сопоставить par со стандартным параметром и вернуть значение этого параметра, если соответствие будет найдено. Сопоставление нечувствительно к регистру и выполняется по совпадению символов в начале имени параметра.optimgetвыдаёт ошибку, если обнаруживает несколько неоднозначных соответствий. Если соответствий стандартным параметрам не найдено, выдаётся предупреждение. Сведения о стандартном списке параметров см. вoptimset.Примечание: При сопоставлении кратких имён параметров учитываются только имена из стандартного списка, и par всегда будет дополнен до имени стандартного параметра, даже если существует точное совпадение с нестандартным именем. Значение нестандартного параметра, неоднозначного с одним или несколькими стандартными параметрами, нельзя получить с помощью
optimget; к нему можно обратиться только с помощьюgetfieldили используя точечную нотацию для структур.См. также: optimset.
© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Linear-Least-Squares.html