Это старая версия (1.813) МетодНаименьшихКвадратов.

Содержание

Метод наименьших квадратов

Простейший случай

Общая постановка задачи

Допустим, в рамках некого эксперимента было проведено n измерений. Каждое измерение представляет собой пару (x sub i , y sub i ), где x sub i — вход, y sub i — выход (такую пару будем называть «точкой»).

Результаты эксперимента могут быть записаны в таблице: left \[
matrix {
ccol{x sub 1 above x sub 2 above vdots above x sub i above vdots above x sub n}
}
right \]
~
left \[
matrix {
ccol{y sub 1 above y sub 2 above vdots above y sub i above vdots above y sub n}
}
right \]

В первом столбце будут находиться все значения входов: bold x = (x sub 1 , x sub 2 , ldots , x sub i , ldots , x sub n ), а во втором все значения выходов: bold y = (y sub 1 , y sub 2 , ldots , y sub i , ldots , y sub n ).

Мы хотим описать экспериментальные данные линейной функцией («подогнать» их к прямой). Почти никогда не встречается ситуаций, при которых все точки будут лежать на одной прямой. Поэтому наша цель — найти такую линейную функцию (прямую), которая в некотором смысле наилучшим образом описывала бы полученные результаты. Значения этой функции будем называть оценками и обозначим y hat sub i . Сама функция будет иметь вид: y hat sub i = k x sub i + b.

Каждому измерению входа x sub i будет соответствовать реальное значение y sub i и оценка y hat sub i . Разницу между реальным значением и оценкой будем называть отклонением и обозначим d sub i = y sub i - y hat sub i  = y sub i - k x sub i - b.


  • Картинка или даже две.

Таким образом, нам нужна такая линейная функция, для которой общее отклонение реальных экспериментальных значений от оценок было бы наименьшим. При этом общее отклонение не обязательно должно быть измерено как сумма отклонений для всех измерений.

Выбор способа «подгонки»

Существует большое количество способов измерить общее отклонение реальных экспериментальных значений от их оценок. Приведём самые очевидные из них:

  1. сумма значений отклонений sum from i=1 to n d sub i
  2. сумма абсолютных значений отклонений sum from i=1 to n | d sub i |
  3. сумма квадратов отклонений sum from i=1 to n d sub i sup 2

Каждый из этих способов имеет как свои плюсы, так и свои минусы. В каком-то смысле, все они «плохие», поэтому наша задача выбрать наименее «плохой» из них: тот, чьи плюсы перевесят минусы. Для выбора рассмотрим их по отдельности.

Несомненным достоинством первого способа является его чрезвычайная простота. Однако такой способ небезопасен с точки зрения статистических выбросов. Если в наших данных есть два выброса, лежащие по разные стороны от прямой на примерно одном и том же расстоянии, то они погасят друг друга. Если таких выбросов будет много (при малых выборках бывает достаточно и двух), то это может дать нам прямую с неверным углом наклона k. Такая проблема у статистиков называется «робастностью» (от англ. robust, что означает «крепкий», «твердый»).


  • Картинка с иллюстрацией взаимного погашения.

Казалось бы, недостатки первого способа полностью снимаются вторым. Взятие абсолютного значения (модуля) должно обезопасить нас от проблем с взаимопогашающимися разносторонними выбросами. Однако и у этого способа есть существенные недостатки.

Забегая несколько вперед, скажем, что для получения коэффициентов наилучшей линейной функции мы воспользуемся математическим аппаратом дифференциального исчисления. Модуль же не является всюду дифференцируемой функций. И если это кажется не такой большой проблемой в нашем примере, то когда мы расширим МНК на случай многих независимых переменных, это может сделать вычислительную задачу чрезвычайно трудноразрешимой (а в момент, когда этот метод был открыт и просто практически неразрешимой). Кроме того, неприемлимость данного способа (бо́льшую приемлимость другого) доказал в своё время великий русский математик Андрей Андреевич Марков, чьи работы позволили использовать МНК в статистическом оценивании.


  • Ссылка на Маркова через boref.

Третий способ, давший имя методу наименьших квадратов, позволяет избежать проблем, связанных с робастностью. Более сильные отклонения вносят бо́льшие вклады, а слабые отклонения нивелируются — взаимного погашения при этом возникнуть не может, т. к. квадрат числа неотрицателен. Вместе с этим, уходит и проблема, связанная с дифференцированием: квадратическая функция является всюду дифференцируемой. Этим, а также и другими причинами (в том числе и причинами, выявленными А. А. Марковым в связи с использованием МНК в статистическом оценивании), был обусловлен выбор способа.

Таким образом мы можем формализовать описанную нами задачу: необходимо наити такие значения коэффициентов k и b, при которых функция sum from i=1 to n d sub i sup 2 примет наименьшее значение.

Математическая формализация

min from k,b left ( sum from i=1 to n d sub i sup 2 right ) = 
min from k,b left ( sum from i=1 to n (y sub i - k x sub i - b) sup 2 right )
  • Формулы нужно всё-таки запихать в портянку. Здесь они не годятся.

Необходимое условие минимума: left {
lpile {
{partial sum from i=1 to n (y sub i - k x sub i - b) sup 2} over {partial k} = 0 ~ , above
{partial sum from i=1 to n (y sub i - k x sub i - b) sup 2} over {partial b} = 0
}
right nothing
~ \\(ti ~
left {
lpile {
{-2} sum from i=1 to n x sub i (y sub i - k x sub i - b) = 0 ~ , above
{-2} sum from i=1 to n (y sub i - k x sub i - b) = 0
}
right nothing 
~ \\(ti ~
left {
lpile {
sum from i=1 to n x sub i y sub i - 
k sum from i=1 to n x sub i sup 2 - 
b sum from i=1 to n x sub i = 0 ~ , above 
sum from i=1 to n y sub i -
k sum from i=1 to n x sub i -
sum from i=1 to n b = 0
}
right nothing

Второе уравнение можно немного преобразовать: lpile {
sum from i=1 to n y sub i - k sum from i=1 to n x sub i - sum from i=1 to n b = 0 ~ , above
sum from i=1 to n y sub i - k sum from i=1 to n x sub i - n b = 0
}

Множественный случай

Общая постановка задачи

Допустим теперь мы расширили наш эксперимент. По-прежнему было проведено n измерений, но замерялся не один вход, а m различных входов (выход по-прежднему один).

Результаты эксперимента могут быть записаны в таблице: left \[
matrix {
ccol {x sub 11 above x sub 21 above vdots above x sub i1 above vdots above x sub n1}
ccol {x sub 12 above x sub 22 above vdots above x sub i2 above vdots above x sub n2}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1j above x sub 2j above vdots above x sub ij above vdots above x sub nj}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1m above x sub 2m above vdots above x sub im above vdots above x sub nm}
}
right \]
~
left \[
matrix {
ccol{y sub 1 above y sub 2 above vdots above y sub i above vdots above y sub n}
}
right \]

По строкам расположены результаты измерений, по столбцам — значения входов.

Например, x sub 34 — значение 4-го входа в 3-ем измерении.

С помощью матриц мы можем записать таблицу с экспериментальными данными компактнее. Входы будут находиться в матрице X sub {(n times m)}, а выходы — в векторе-столбце bold y sub {(n times size -2 1)}.

Мы по-прежнему хотим «подогнать» наши экспериментальные данные к линейной функции, но, в отличие от предыдущего случая это будет не прямая, а n-мерная плоскость (для n = 2 это будет обычная плоскость, для n > 2 — гиперплоскость). Вектор значений линейной функции назовём вектором оценкок и обозначим bold y hat. Сама вектор будет иметь вид: bold y hat = 
left \[
matrix {
ccol {y hat sub 1 above y hat sub 2 above vdots above y hat sub i above vdots above y hat sub n}
}
right \] =
X bold k =
left \[
matrix {
ccol {x sub 11 above x sub 21 above vdots above x sub i1 above vdots above x sub n1}
ccol {x sub 12 above x sub 22 above vdots above x sub i2 above vdots above x sub n2}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1j above x sub 2j above vdots above x sub ij above vdots above x sub nj}
ccol {cdots above cdots above ddots above cdots above ddots above cdots}
ccol {x sub 1m above x sub 2m above vdots above x sub im above vdots above x sub nm}
}
right \]
~
left \[
matrix {
ccol {k sub 1 above k sub 2 above vdots above k sub j above vdots above k sub m}
}
right \]

, где bold k sub {(m times size -2 1)}

— вектор-столбец коэффициентов линейной функции.


  • Добавить про свободный член: все значения входа будут равны едиинце.

Разницу между реальным значением и оценкой будем по-прежнему называть отклонением и обозначим bold d = bold y - bold y hat = bold y - X bold k. Распишем это уравнение подробнее:


  • Расписать красиво.

Сумма квадратов отклонений может быть получена как bold d sup roman T bold d. Нам необходимо, найти такой вектор bold k, чтобы сумма квадратов отклонений была минимальна: min from bold k left ( bold d sup roman T bold d right ) = 
min from bold k left ( ( bold y - bold y hat ) sup roman T  ( bold y - bold y hat ) right ) =
min from bold k left ( left ( bold y - X bold k right ) sup roman T left ( bold y - X bold k right ) right )


КатегорияПрикладнаяМатематика