Рабочая тетрадь метод наименьших квадратов. Где применяется метод наименьших квадратов

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

Таким образом, решение примера сводится к нахождению экстремума функции двух переменных.

Вывод формул для нахождения коэффициентов. Составляется и решается система из двух уравнений с двумя неизвестными. Находим частные производные функции по переменным а и b , приравниваем эти производные к нулю.

Решаем полученную систему уравнений любым методом (например методом подстановки или методом Крамера) и получаем формулы для нахождения коэффициентов по методу наименьших квадратов (МНК).

При данных а и b функция принимает наименьшее значение.

Вот и весь метод наименьших квадратов. Формула для нахождения параметра a содержит суммы , , , и параметр n - количество экспериментальных данных. Значения этих сумм рекомендуем вычислять отдельно. Коэффициент b находится после вычисления a .

Основная сфера применения таких полиномов - обработка экспериментальных данных (построение эмпирических формул). Дело в том, что интерполяционный полином, построенный по значениям функции, полученным с помощью эксперимента, будет испытывать сильное влияние "экспериментального шума", к тому же при интерполировании узлы интерполяции не могут повторяться, т.е. нельзя использовать результаты повторных экспериментов при одинаковых условиях. Среднеквадратичный же полином сглаживает шумы и позволяет использовать результаты многократных экспериментов.

Численное интегрирование и дифференцирование. Пример.

Численное интегрирование – вычисление значения определённого интеграла (как правило, приближённое). Под численным интегрированием понимают набор численных методов для нахождения значения определённого интеграла.

Численное дифференцирование – совокупность методов вычисления значения производной дискретно заданной функции.

Интегрирование

Постановка задачи. Математическая постановка задачи: необходимо найти значение определенного интеграла

где a, b - конечны, f(x) - непрерывна на [а, b].

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

В большинстве методов используется представление интеграла в виде конечной суммы (квадратурная формула):

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

Можно выделить три группы методов:

1. Метод с разбиением отрезка интегрирования на равные интервалы. Разбиение на интервалы производится заранее, обычно интервалы выбираются равными (чтобы легче было вычислить функцию на концах интервалов). Вычисляют площади и суммируют их (методы прямоугольников, трапеции, Симпсона).

2. Методы с разбиением отрезка интегрирования с помощью специальных точек (метод Гаусса).

3. Вычисление интегралов с помощью случайных чисел (метод Монте-Карло).

Метод прямоугольников. Пусть функцию (рисунок) необходимо проинтегрировать численным методом на отрезке . Разделим отрезок на N равных интервалов. Площадь каждой из N криволинейных трапеций можно заменить на площадь прямоугольника.

Ширина всех прямоугольников одинакова и равна:

В качестве выбора высоты прямоугольников можно выбрать значение функции на левой границе. В этом случае высота первого прямоугольника составит f(a), второго – f(x 1),…, N-f(N-1).

Если в качестве выбора высоты прямоугольника взять значение функции на правой границе, то в этом случае высота первого прямоугольника составит f(x 1), второго – f(x 2), …, N – f(x N).

Как видно, в этом случае одна из формул дает приближение к интегралу с избытком, а вторая с недостатком. Существует еще один способ – использовать для аппроксимации значение функции в середине отрезка интегрирования:

Оценка абсолютной погрешности метода прямоугольников (середина)

Оценка абсолютной погрешности методов левых и правых прямоугольников.

Пример. Вычислить для всего интервала и с делением интервала на четыре участка

Решение. Аналитическое вычисление данного интеграла дает I=агсtg(1)–агсtg(0)=0,7853981634. В нашем случае:

1)h = 1; xо = 0; x1 = 1;

2) h = 0,25 (1/4); x0 = 0; x1 = 0,25; x2 = 0,5; х3 = 0,75; x4 = 1;

Вычислим методом левых прямоугольников:

Вычислим методом правых прямоугольников:

Вычислим методом средних прямоугольников:

Метод трапеций. Использование для интерполяции полинома первой степени (прямая линия, проведенная через две точки) приводит к формуле трапеций. В качестве узлов интерполирования берутся концы отрезка интегрирования. Таким образом, криволинейная трапеция заменяется на обычную трапецию, площадь которой может быть найдена как произведение полусуммы оснований на высоту

В случае N отрезков интегрирования для всех узлов, за исключением крайних точек отрезка, значение функции войдет в общую сумму дважды (так как соседние трапеции имеют одну общую сторону)

Формула трапеции может быть получена, если взять половину суммы формул прямоугольников по правому и левому краям отрезка:

Проверка устойчивости решения. Как правило, чем меньше длина каждого интервала, т.е. чем больше число этих интервалов, тем меньше различаются приближенное и точное значение интеграла. Это справедливо для большинства функций. В методе трапеций ошибка вычисления интеграла ϭ приблизительно пропорциональна квадрату шага интегрирования (ϭ ~ h 2).Таким образом, для вычисления интеграла некоторой функции в переделах a,b необходимо разделить отрезок на N 0 интервалов и найти сумму площадей трапеции. Затем нужно увеличить число интервалов N 1 , опять вычислить сумму трапеции и сравнить полученное значение с предыдущим результатом. Это следует повторять до тех пор (N i), пока не будет достигнута заданная точность результата (критерий сходимости).

Для методов прямоугольников и трапеции обычно на каждом шаге итерации число интервалов увеличивается в 2 раза (N i +1 =2N i).

Критерий сходимости:

Главное преимущество правила трапеций – его простота. Однако если при вычислении интеграла требуется высокая точность, применение этого метода может потребовать слишком большого количества итераций.

Абсолютная погрешность метода трапеций оценивается как
.

Пример. Вычислить приближенно определенный интеграл по формуле трапеций.

а) Разбив отрезок интегрирования на 3 части.
б) Разбив отрезок интегрирования на 5 частей.

Решение:
а) По условию отрезок интегрирования нужно разделить на 3 части, то есть .
Вычислим длину каждого отрезка разбиения: .

Таким образом, общая формула трапеций сокращается до приятных размеров:

Окончательно:

Напоминаю, что полученное значение – это приближенное значение площади.

б) Разобьём отрезок интегрирования на 5 равных частей, то есть . увеличивая количество отрезков, мы увеличиваем точность вычислений.

Если , то формула трапеций принимает следующий вид:

Найдем шаг разбиения:
, то есть, длина каждого промежуточного отрезка равна 0,6.

При чистовом оформлении задачи все вычисления удобно оформлять расчетной таблицей:

В первой строке записываем «счётчик»

В результате:

Ну что же, уточнение, и серьёзное, действительно есть!
Если для 3-х отрезков разбиения , то для 5-ти отрезков . Если взять еще больше отрезком => будет еще точнее.

Формула Симпсона. Формула трапеции дает результат, сильно зависящий от величины шага h, что сказывается на точности вычисления определенного интеграла особенно в тех случаях, когда функция имеет немонотонный характер. Можно предположить повышение точности вычислений, если вместо отрезков прямых, заменяющих криволинейные фрагменты графика функции f(x), использовать, например, фрагменты парабол, приводимых через три соседние точки графика. Подобная геометрическая интерпретация лежит в основе метода Симпсона для вычисления определенного интеграла. Весь интервал интегрирования a,b разбивается N отрезков, длина отрезка также будет равна h=(b-a)/N.

Формула Симпсона имеет вид:

остаточный член

С увеличением длины отрезков точность формулы падает, поэтому для увеличения точности применяют составную формулу Симпсона. Весь интервал интегрирования разбивается на четное число одинаковых отрезков N, длина отрезка также будет равна h=(b-a)/N. Составная формула Симпсона имеет вид:

В формуле выражения в скобках представляют собой суммы значений подынтегральной функции соответственно на концах нечетных и четных внутренних отрезков.

Остаточный член формулы Симпсона пропорционален уже четвертой степени шага:

Пример: Пользуясь правилом Симпсона вычислить интеграл . (Точное решение - 0,2)

Метод Гаусса

Квадратурная формула Гаусса . Основной принцип квадратурных формул второй разновидности виден из рисунка 1.12: необходимо так разместить точки х 0 и х 1 внутри отрезка [a ;b ], чтобы площади "треугольников" в сумме были равны площади "сегмента". При использовании формулы Гаусса исходный отрезок [a ;b ] сводится к отрезку [-1;1] заменой переменной х на

0.5∙(b a )∙t + 0.5∙(b + a ).

Тогда , где .

Такая замена возможна, если a и b конечны, а функция f (x ) непрерывна на [a ;b ]. Формула Гаусса при n точках x i , i =0,1,..,n -1 внутри отрезка [a ;b ]:

, (1.27)

где t i и A i для различных n приводятся в справочниках. Например, при n =2 A 0 =A 1 =1; при n =3: t 0 =t 2 »0.775, t 1 =0, A 0 =A 2 »0.555, A 1 »0.889.

Квадратурная формула Гаусса

получена с весовой функцией равной единице p(x)= 1 и узлами x i , являющимися корнями полиномов Лежандра

Коэффициенты A i легко вычисляются по формулам

i =0,1,2,...n .

Значения узлов и коэффициентов для n=2,3,4,5 приведены в таблице

Порядок Узлы Коэффициенты
n =2 x 1 =0 x 0 = -x 2 =0.7745966692 A 1 =8/9 A 0 =A 2 =5/9
n =3 x 2 = -x 1 =0.3399810436 x 3 = -x 0 =0.8611363116 A 1 =A 2 =0.6521451549 A 0 =A 3 =0.6521451549
n=4 x 2 = 0 x 3 = -x 1 = 0.5384693101 x 4 =-x 0 =0.9061798459 A 0 =0.568888899 A 3 =A 1 =0.4786286705 A 0 =A 4 =0.2869268851
n =5 x 5 = -x 0 =0.9324695142 x 4 = -x 1 =0.6612093865 x 3 = -x 2 =0.2386191861 A 5 =A 0 =0.1713244924 A 4 =A 1 =0.3607615730 A 3 =A 2 =0.4679139346

Пример. Вычислить значение по формуле Гаусса для n =2:

Точное значение: .

Алгоритм вычисления интеграла по формуле Гаусса предусматривает не удвоение числа микроотрезков, а увеличение числа ординат на 1 и сравнение полученных значений интеграла. Преимущество формулы Гаусса – высокая точность при сравнительно малом числе ординат. Недостатки: неудобна при расчетах вручную; необходимо держать в памяти ЭВМ значения t i , A i для различных n .

Погрешность квадратурной формулы Гаусса на отрезке будет при этом Для формула остаточного члена будет причем коэффициент α N быстро убывает с ростом N . Здесь

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

Дифференцирование. При решении задач часто бывает необходимо найти производную определенного порядка от функции f(x), заданной таблично. Кроме того, иногда в силу сложности аналитического выражения функции f(x) ее непосредственное дифференцирование слишком затрудненно, а также при численном решении дифференциальных уравнений. В этих случаях используют численное дифференцирование.

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

Первая работа, в которой заложены основы метода наименьших квадратов,была выполнена Лежандром в 1805. В статье «Новые методы определения орбит комет», он писал: «После того, как полностью использованы все условия задачи, необходимо определить коэффициенты так, чтобы величины их ошибок были наименьшими из возможных. Наиболее простым путем достижения этого является метод, который состоитв отыскании минимума суммы квадратов ошибок».В настоящее время методприменяетсявесьма широкопри аппроксимации неизвестных функциональных зависимостей, задаваемых множеством экспериментальных отсчетов, с целью полученияаналитического выражения,наилучшим образом приближенного к натурному эксперименту.

Пусть на основании эксперимента требуется установить функциональнуюзависимость величины y от величины x : .Ипусть в результате эксперимента получено n значений y при соответствующих значениях аргумента x . Если экспериментальные точки расположены на координатной плоскости так, как на рисунке, то, зная, что при проведении эксперимента имеют место погрешности,можно предположить, что зависимость носит линейный характер, т.е. y = ax + b .Отметим, что метод не накладывает ограничений на вид функции, т.е. его можно применятьк любым функциональным зависимостям.

С точки зрения экспериментаторачасто более естественно считать, что последовательность взятия отсчетов фиксирована заранее, т.е. является независимой переменной, аотсчеты - зависимой переменной.Это особенно ясно видно, еслипод понимаютсямоменты времени, что наиболее широко имеет местов технических приложениях.Но это лишь весьма распространенный частный случай. Например, необходимо провести классификацию некоторых образцов по размеру. Тогда независимой переменной будет номер образца, зависимой – его индивидуальный размер.

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

Вернемсяк рисунку. Пунктирные линии показывают, чтопогрешности могут возникать не только из-занесовершенства измерительных процедур, но и по причине неточности задания независимой переменной.При выбранном виде функции остается подобрать входящие в нее параметры a и b .Понятно, что количество параметровможет быть больше двух, что характерно только для линейных функций.В общем виде будем считать

.(1)

Требуется выбрать коэффициенты a , b , c … так, чтобывыполнилось условие

. (2)

Найдем значения a , b , c …, обращающие левую часть (2) в минимум. Для этого определим стационарные точки (точки, вкоторых первая производная обращается в нуль)путем дифференцирования левой части (2)по a , b , c :

(3)

и т.д.Полученная система уравнений содержит столько жеуравнений, сколько неизвестных a , b , c …. Решить такую систему в общем виде нельзя, поэтому необходимо задаться,хотя бы ориентировочно,конкретным видом функции .Далее рассмотрим два случая:линейной и квадратичной функций.

Линейнаяфункция .

Рассмотрим сумму квадратов разностей экспериментальных значений и значений функции в соответствующих точках:

(4)

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

;

.


Или

(5)

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

Убедимся, что при найденных значениях a и b имеет минимум. Для этого найдем , и :

, , .

Следовательно,

− = ,

>0,

т.е. выполнено достаточное условие минимума для функции двух переменных.

Квадратичная функция .

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

.

Требуется найти коэффициенты a , b и c .Имеем

– функцию трех переменных a , b , c .

В этом случае система (3) принимает вид:

Или:

Решив эту систему линейных уравнений, определим неизвестные a , b , c .

Пример. Пусть на основании эксперимента получены четыре значения искомой функции y = (x ) при четырех значениях аргумента, которые приведены в таблице:

Находит широкое применение в эконометрике в виде четкой экономической интерпретации ее параметров.

Линейная регрессия сводится к нахождению уравнения вида

или

Уравнение вида позволяет по заданным значениям параметра х иметь теоретические значения результативного признака, подставляя в него фактические значения фактора х .

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

Классический подход к оцениванию параметров линейной регрессии основан на методе наименьших квадратов (МНК).

МНК позволяет получить такие оценки параметров а и в, при которых сумма квадратов отклонений фактических значений ре-зультативного признака (у) от расчетных (теоретических) ми-нимальна:

Чтобы найти минимум функции, надо вычислить част-ные производные по каждому из параметров а и b и приравнять их к нулю.

Обозначим через S, тогда:

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

Решая систему нормальных уравнений (3.5) либо методом последовательного исключения переменных, либо методом определителей, найдем искомые оценки параметров а и в.

Параметр в называется коэффициентом регрессии. Его величина показывает среднее изменение результата с изменением фактора на одну единицу.

Уравнение регрессии всегда дополняется показателем тесноты связи. При использовании линейной регрессии в качестве такого показателя выступает линейный коэффициент корреляции . Существуют разные модификации формулы линейного коэффициента корреляции. Некоторые из них приведены ниже:

Как известно, линейный коэффициент корреляции находится в границах: -1 1.

Для оценки качества подбора линейной функции рассчитывается квадрат

Линейного коэффициента корреляции называемый коэффициентом детерминации . Коэффициент детерминации характеризует долю дисперсии результативного признака у, объясняемую регрессией, в общей дисперсии результативного признака:

Соответственно величина 1 - характеризует долю диспер-сии у, вызванную влиянием остальных не учтенных в модели факторов.

Вопросы для самоконтроля

1. Суть метода наименьших квадратов?

2. Сколькими переменными предоставляется парная регрессия?

3. Каким коэффициентом определяется теснота связи между переменами?

4. В каких пределах определяется коэффициент детерминации?

5. Оценка параметра b в корреляционно-регрессионном анализе?

1. Кристофер Доугерти. Введение в эконометрию. - М.: ИНФРА - М, 2001 - 402 с.

2. С.А. Бородич. Эконометрика. Минск ООО «Новое знание» 2001.


3. Р.У. Рахметова Краткий курс по эконометрике. Учебное пособие. Алматы. 2004. -78с.

4. И.И. Елисеева.Эконометрика. - М.: «Финансы и статистика»,2002

5. Ежемесячный информационно-аналитический журнал.

Нелинейные экономические модели. Нелинейные модели регрессии. Преобразование переменных.

Нелинейные экономические модели..

Преобразование переменных.

Коэффициент эластичности.

Если между экономическими явлениями существуют нели-нейные соотношения, то они выражаются с помощью соответ-ствующих нелинейных функций: например, равносторонней ги-перболы , параболы второй степени и д.р.

Различают два класса нелинейных регрессий:

1. Регрессии, нелинейные относительно включенных в анализ объясняющих переменных, но линейные по оцениваемым параметрам, например:

Полиномы различных степеней - , ;

Равносторонняя гипербола - ;

Полулогарифмическая функция - .

2. Регрессии, нелинейные по оцениваемым параметрам, например:

Степенная - ;

Показательная - ;

Экспоненциальная - .

Общая сумма квадратов отклонений индивидуальных значений результативного признака у от среднего значения вызвана влиянием множества причин. Условно разделим всю совокупность причин на две группы: изучаемый фактор х и прочие факторы.

Если фактор не оказывает влияния на результат, то линия регрес-сии на графике параллельна оси ох и

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

Поскольку не все точки поля корреляции лежат на линии регрессии, то всегда имеет место их разброс как обусловленный вли-янием фактора х , т. е. регрессией у по х, так и вызванный действием прочих причин (необъясненная вариация). Пригод-ность линии регрессии для прогноза зависит от того, какая часть общей вариации признака у приходится на объясненную вариа-цию

Очевидно, что если сумма квадратов отклонений, обусловленная регрессией, будет больше остаточной суммы квадратов, то уравнение регрессии статистически значимо и фактор х оказывает существенное воздействие на результат у.

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

Оценка значимости уравнения регрессии в целом дается с по-мощью F -критерия Фишера. При этом выдвигается нулевая ги-потеза, что коэффициент регрессии равен нулю, т. е. b = 0, и следовательно, фактор х не оказывает влияния на результат у.

Непосредственному расчету F-критерия предшествует анализ дисперсии. Центральное место в нем занимает разложе-ние общей суммы квадратов отклонений переменной у от средне го значения у на две части - «объясненную» и «необъясненную»:

- общая сумма квадратов отклонений;

- сумма квадратов отклонения объясненная регрессией;

- остаточная сумма квадратов отклонения.

Любая сумма квадратов отклонений связана с числом степе-ней свободы, т. е. с числом свободы независимого варьирования признака. Число степеней свободы связано с числом единиц совокупности n и с числом определяемых по ней констант. Применительно к исследуемой проблеме число cтепеней свободы должно показать, сколько независимых откло-нений из п возможных требуется для образования данной суммы квадратов.

Дисперсия на одну степень свободы D .

F-отношения (F-критерий):

Ecли нулевая гипотеза справедлива , то факторная и остаточная дисперсии не отличаются друг от друга. Для Н 0 необходимо опровержение,чтобы факторная дисперсия превышала остаточную в несколько раз. Английским статистиком Снедекором раз-работаны таблицы критических значений F -отношений при разных уровняхсущественности нулевой гипотезы и различном числе степенейсвободы. Табличное значение F -критерия — это максимальная величина отношения дисперсий, которая может иметь место прислучайном их расхождении для данного уровня вероятности наличия нулевой гипотезы. Вычисленное значение F -отношения признается достоверным, если о больше табличного.

В этом случае нулевая гипотеза об отсутствии связи признаков отклоняется и делается вывод о существенности этой связи: F факт > F табл Н 0 отклоняется.

Если же величина окажется меньше табличной F факт ‹, F табл , то вероятность нулевой гипотезы выше заданного уровня и она не может быть отклонена без серьезного риска сделать неправильный вывод о наличии связи. В этом случае уравнение регрессии считается статистически незначимым. Н о не отклоняется.

Стандартная ошибка коэффициента регрессии

Для оценки существенности коэффициента регрессии его ве-личина сравнивается с его стандартной ошибкой, т. е. определяется фактическое значение t -критерия Стьюдентa: которое затем сравнивается с табличным значением при определенном уровне значимости и числе степеней свободы (n - 2).

Стандартная ошибка параметра а :

Значимость линейного коэффициента корреляции проверя-ется на основе величины ошибки коэффициента корреляции т r:

Общая дисперсия признака х :

Множественная линейная регрессия

Построение модели

Множественная регрессия представляет собой регрессию результативного признака с двумя и большим числом факторов, т. е. модель вида

Регрессия может дать хороший результат при модели-ровании, если влиянием других факторов, воздействующих на объект исследования, можно пренебречь. Поведение отдельных экономи-ческих переменных контролировать нельзя, т. е. не удается обес-печить равенство всех прочих условий для оценки влияния одно-го исследуемого фактора. В этом случае следует попытаться выявить влияние других факторов, введя их в модель, т. е. пост-роить уравнение множественной регрессии: y = a+b 1 x 1 +b 2 +…+b p x p + .

Основная цель множественной регрессии — построить модель с большим числом факторов, определив при этом влияние каждого из них в отдельности, а также совокупное их воздействие на моделируемый показатель. Спецификация модели включает в себя два круга вопросов: отбор фак-торов и выбор вида уравнения регрессии

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

Постановка задачи на конкретном примере

Предположим, имеются два показателя X и Y. Причем Y зависит от X. Так как МНК интересует нас с точки зрения регрессионного анализа (в Excel его методы реализуются с помощью встроенных функций), то стоит сразу же перейти к рассмотрению конкретной задачи.

Итак, пусть X — торговая площадь продовольственного магазина, измеряемая в квадратных метрах, а Y — годовой товарооборот, определяемый в миллионах рублей.

Требуется сделать прогноз, какой товарооборот (Y) будет у магазина, если у него та или иная торговая площадь. Очевидно, что функция Y = f (X) возрастающая, так как гипермаркет продает больше товаров, чем ларек.

Несколько слов о корректности исходных данных, используемых для предсказания

Допустим, у нас есть таблица, построенная по данным для n магазинов.

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

Суть метода

Данные таблицы можно изобразить на декартовой плоскости в виде точек M 1 (x 1 , y 1), … M n (x n , y n). Теперь решение задачи сведется к подбору аппроксимирующей функции y = f (x), имеющей график, проходящий как можно ближе к точкам M 1, M 2, .. M n .

Конечно, можно использовать многочлен высокой степени, но такой вариант не только труднореализуем, но и просто некорректен, так как не будет отражать основную тенденцию, которую и нужно обнаружить. Самым разумным решением является поиск прямой у = ax + b, которая лучше всего приближает экспериментальные данные, a точнее, коэффициентов - a и b.

Оценка точности

При любой аппроксимации особую важность приобретает оценка ее точности. Обозначим через e i разность (отклонение) между функциональными и экспериментальными значениями для точки x i , т. е. e i = y i - f (x i).

Очевидно, что для оценки точности аппроксимации можно использовать сумму отклонений, т. е. при выборе прямой для приближенного представления зависимости X от Y нужно отдавать предпочтение той, у которой наименьшее значение суммы e i во всех рассматриваемых точках. Однако, не все так просто, так как наряду с положительными отклонениями практически будут присутствовать и отрицательные.

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

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

В Excel, как известно, существует встроенная функция автосуммы, позволяющая вычислить значения всех значений, расположенных в выделенном диапазоне. Таким образом, ничто не помешает нам рассчитать значение выражения (e 1 2 + e 2 2 + e 3 2 + ... e n 2).

В математической записи это имеет вид:

Так как изначально было принято решение об аппроксимировании с помощью прямой, то имеем:

Таким образом, задача нахождения прямой, которая лучше всего описывает конкретную зависимость величин X и Y, сводится к вычислению минимума функции двух переменных:

Для этого требуется приравнять к нулю частные производные по новым переменным a и b, и решить примитивную систему, состоящую из двух уравнений с 2-мя неизвестными вида:

После нехитрых преобразований, включая деление на 2 и манипуляции с суммами, получим:

Решая ее, например, методом Крамера, получаем стационарную точку с некими коэффициентами a * и b * . Это и есть минимум, т. е. для предсказания, какой товарооборот будет у магазина при определенной площади, подойдет прямая y = a * x + b * , представляющая собой регрессионную модель для примера, о котором идет речь. Конечно, она не позволит найти точный результат, но поможет получить представление о том, окупится ли покупка в кредит магазина конкретной площади.

Как реализоавать метод наименьших квадратов в Excel

В "Эксель" имеется функция для расчета значения по МНК. Она имеет следующий вид: «ТЕНДЕНЦИЯ» (известн. значения Y; известн. значения X; новые значения X; конст.). Применим формулу расчета МНК в Excel к нашей таблице.

Для этого в ячейку, в которой должен быть отображен результат расчета по методу наименьших квадратов в Excel, введем знак «=» и выберем функцию «ТЕНДЕНЦИЯ». В раскрывшемся окне заполним соответствующие поля, выделяя:

  • диапазон известных значений для Y (в данном случае данные для товарооборота);
  • диапазон x 1 , …x n , т. е. величины торговых площадей;
  • и известные, и неизвестные значения x, для которого нужно выяснить размер товарооборота (информацию об их расположении на рабочем листе см. далее).

Кроме того, в формуле присутствует логическая переменная «Конст». Если ввести в соответствующее ей поле 1, то это будет означать, что следует осуществить вычисления, считая, что b = 0.

Если нужно узнать прогноз для более чем одного значения x, то после ввода формулы следует нажать не на «Ввод», а нужно набрать на клавиатуре комбинацию «Shift» + «Control»+ «Enter» («Ввод»).

Некоторые особенности

Регрессионный анализ может быть доступен даже чайникам. Формула Excel для предсказания значения массива неизвестных переменных — «ТЕНДЕНЦИЯ» — может использоваться даже теми, кто никогда не слышал о методе наименьших квадратов. Достаточно просто знать некоторые особенности ее работы. В частности:

  • Если расположить диапазон известных значений переменной y в одной строке или столбце, то каждая строка (столбец) с известными значениями x будет восприниматься программой в качестве отдельной переменной.
  • Если в окне «ТЕНДЕНЦИЯ» не указан диапазон с известными x, то в случае использования функции в Excel программа будет рассматривать его как массив, состоящий из целых чисел, количество которых соответствует диапазону с заданными значениями переменной y.
  • Чтобы получить на выходе массив «предсказанных» значений, выражение для вычисления тенденции нужно вводить как формулу массива.
  • Если не указаны новые значения x, то функция «ТЕНДЕНЦИЯ» считает их равным известным. Если и они не заданы, то в качестве аргумента берется массив 1; 2; 3; 4;…, который соразмерен диапазону с уже заданными параметрами y.
  • Диапазон, содержащий новые значения x должен состоять из такого же или большего количества строк или столбцов, как диапазон с заданными значениями y. Иными словами он должен быть соразмерным независимым переменным.
  • В массиве с известными значениями x может содержаться несколько переменных. Однако если речь идет лишь об одной, то требуется, чтобы диапазоны с заданными значениями x и y были соразмерны. В случае нескольких переменных нужно, чтобы диапазон с заданными значениями y вмещался в одном столбце или в одной строке.

Функция «ПРЕДСКАЗ»

Реализуется с помощью нескольких функций. Одна из них называется «ПРЕДСКАЗ». Она аналогична «ТЕНДЕНЦИИ», т. е. выдает результат вычислений по методу наименьших квадратов. Однако только для одного X, для которого неизвестно значение Y.

Теперь вы знаете формулы в Excel для чайников, позволяющие спрогнозировать величину будущего значения того или иного показателя согласно линейному тренду.

  • Tutorial

Введение

Я математик-программист. Самый большой скачок в своей карьере я совершил, когда научился говорить:«Я ничего не понимаю!» Сейчас мне не стыдно сказать светилу науки, что мне читает лекцию, что я не понимаю, о чём оно, светило, мне говорит. И это очень сложно. Да, признаться в своём неведении сложно и стыдно. Кому понравится признаваться в том, что он не знает азов чего-то-там. В силу своей профессии я должен присутствовать на большом количестве презентаций и лекций, где, признаюсь, в подавляющем большинстве случаев мне хочется спать, потому что я ничего не понимаю. А не понимаю я потому, что огромная проблема текущей ситуации в науке кроется в математике. Она предполагает, что все слушатели знакомы с абсолютно всеми областями математики (что абсурдно). Признаться в том, что вы не знаете, что такое производная (о том, что это - чуть позже) - стыдно.

Но я научился говорить, что я не знаю, что такое умножение. Да, я не знаю, что такое подалгебра над алгеброй Ли. Да, я не знаю, зачем нужны в жизни квадратные уравнения. К слову, если вы уверены, что вы знаете, то нам есть над чем поговорить! Математика - это серия фокусов. Математики стараются запутать и запугать публику; там, где нет замешательства, нет репутации, нет авторитета. Да, это престижно говорить как можно более абстрактным языком, что есть по себе полная чушь.

Знаете ли вы, что такое производная? Вероятнее всего вы мне скажете про предел разностного отношения. На первом курсе матмеха СПбГУ Виктор Петрович Хавин мне определил производную как коэффициент первого члена ряда Тейлора функции в точке (это была отдельная гимнастика, чтобы определить ряд Тейлора без производных). Я долго смеялся над таким определением, покуда в итоге не понял, о чём оно. Производная не что иное, как просто мера того, насколько функция, которую мы дифференцируем, похожа на функцию y=x, y=x^2, y=x^3.

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

Задача на ближайшее время: я поручил своим студентам понять, что такое линейно-квадратичный регулятор . Не постесняйтесь, потратьте три минуты своей жизни, сходите по ссылке. Если вы ничего не поняли, то нам с вами по пути. Я (профессиональный математик-программист) тоже ничего не понял. И я уверяю, в этом можно разобраться «на пальцах». На данный момент я не знаю, что это такое, но я уверяю, что мы сумеем разобраться.

Итак, первая лекция, которую я собираюсь прочитать своим студентам после того, как они в ужасе прибегут ко мне со словами, что линейно-квадратичный регулятор - это страшная бяка, которую никогда в жизни не осилить, это методы наименьших квадратов . Умеете ли вы решать линейные уравнения? Если вы читаете этот текст, то скорее всего нет.

Итак, даны две точки (x0, y0), (x1, y1), например, (1,1) и (3,2), задача найти уравнение прямой, проходящей через эти две точки:

иллюстрация

Эта прямая должна иметь уравнение типа следующего:

Здесь альфа и бета нам неизвестны, но известны две точки этой прямой:

Можно записать это уравнение в матричном виде:

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

Давайте заменим конкретные матрицы на их символьное представление:

Тогда (alpha, beta) может быть легко найдено:

Более конкретно для наших предыдущих данных:

Что ведёт к следующему уравнению прямой, проходящей через точки (1,1) и (3,2):

Окей, тут всё понятно. А давайте найдём уравнение прямой, проходящей через три точки: (x0,y0), (x1,y1) и (x2,y2):

Ой-ой-ой, а ведь у нас три уравнения на две неизвестных! Стандартный математик скажет, что решения не существует. А что скажет программист? А он для начала перепишет предыдующую систему уравнений в следующем виде:

В нашем случае векторы i,j,b трёхмерны, следовательно, (в общем случае) решения этой системы не существует. Любой вектор (alpha\*i + beta\*j) лежит в плоскости, натянутой на векторы (i, j). Если b не принадлежит этой плоскости, то решения не существует (равенства в уравнении не достичь). Что делать? Давайте искать компромисс. Давайте обозначим через e(alpha, beta) насколько именно мы не достигли равенства:

И будем стараться минимизировать эту ошибку:

Почему квадрат?

Мы ищем не просто минимум нормы, а минимум квадрата нормы. Почему? Сама точка минимума совпадает, а квадрат даёт гладкую функцию (квадратичную функцию от агрументов (alpha,beta)), в то время как просто длина даёт функцию в виде конуса, недифференцируемую в точке минимума. Брр. Квадрат удобнее.

Очевидно, что ошибка минимизируется, когда вектор e ортогонален плоскости, натянутой на векторы i и j .

Иллюстрация

Иными словами: мы ищем такую прямую, что сумма квадратов длин расстояний от всех точек до этой прямой минимальна:

UPDATE: тут у меня косяк, расстояние до прямой должно измеряться по вертикали, а не ортогональной проекцией. Вот этот комментатор прав.

Иллюстрация

Совсеми иными словами (осторожно, плохо формализовано, но на пальцах должно быть ясно): мы берём все возможные прямые между всеми парами точек и ищем среднюю прямую между всеми:

Иллюстрация

Иное объяснение на пальцах: мы прикрепляем пружинку между всеми точками данных (тут у нас три) и прямой, что мы ищем, и прямая равновесного состояния есть именно то, что мы ищем.

Минимум квадратичной формы

Итак, имея данный вектор b и плоскость, натянутую на столбцы-векторы матрицы A (в данном случае (x0,x1,x2) и (1,1,1)), мы ищем вектор e с минимум квадрата длины. Очевидно, что минимум достижим только для вектора e , ортогонального плоскости, натянутой на столбцы-векторы матрицы A :

Иначе говоря, мы ищем такой вектор x=(alpha, beta), что:

Напоминаю, что этот вектор x=(alpha, beta) является минимумом квадратичной функции ||e(alpha, beta)||^2:

Тут нелишним будет вспомнить, что матрицу можно интерпретирвать в том числе как и квадратичную форму, например, единичная матрица ((1,0),(0,1)) может быть интерпретирована как функция x^2 + y^2:

квадратичная форма

Вся эта гимнастика известна под именем линейной регрессии .

Уравнение Лапласа с граничным условием Дирихле

Теперь простейшая реальная задача: имеется некая триангулированная поверхность, необходимо её сгладить. Например, давайте загрузим модель моего лица:

Изначальный коммит доступен . Для минимизации внешних зависимостей я взял код своего софтверного рендерера, уже на хабре. Для решения линейной системы я пользуюсь OpenNL , это отличный солвер, который, правда, очень сложно установить: нужно скопировать два файла (.h+.c) в папку с вашим проектом. Всё сглаживание делается следующим кодом:

For (int d=0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i &face = faces[i]; for (int j=0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

X, Y и Z координаты отделимы, я их сглаживаю по отдельности. То есть, я решаю три системы линейных уравнений, каждое имеет количество переменных равным количеству вершин в моей модели. Первые n строк матрицы A имеют только одну единицу на строку, а первые n строк вектора b имеют оригинальные координаты модели. То есть, я привязываю по пружинке между новым положением вершины и старым положением вершины - новые не должны слишком далеко уходить от старых.

Все последующие строки матрицы A (faces.size()*3 = количеству рёбер всех треугольников в сетке) имеют одно вхождение 1 и одно вхождение -1, причём вектор b имеет нулевые компоненты напротив. Это значит, я вешаю пружинку на каждое ребро нашей треугольной сетки: все рёбра стараются получить одну и ту же вершину в качестве отправной и финальной точки.

Ещё раз: переменными являются все вершины, причём они не могут далеко отходить от изначального положения, но при этом стараются стать похожими друг на друга.

Вот результат:

Всё бы было хорошо, модель действительно сглажена, но она отошла от своего изначального края. Давайте чуть-чуть изменим код:

For (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

В нашей матрице A я для вершин, что находятся на краю, добавляю не строку из разряда v_i = verts[i][d], а 1000*v_i = 1000*verts[i][d]. Что это меняет? А меняет это нашу квадратичную форму ошибки. Теперь единичное отклонение от вершины на краю будет стоить не одну единицу, как раньше, а 1000*1000 единиц. То есть, мы повесили более сильную пружинку на крайние вершины, решение предпочтёт сильнее растянуть другие. Вот результат:

Давайте вдвое усилим пружинки между вершинами:
nlCoefficient(face[ j ], 2); nlCoefficient(face[(j+1)%3], -2);

Логично, что поверхность стала более гладкой:

А теперь ещё в сто раз сильнее:

Что это? Представьте, что мы обмакнули проволочное кольцо в мыльную воду. В итоге образовавшаяся мыльная плёнка будет стараться иметь наименьшую кривизну, насколько это возможно, касаясь-таки границы - нашего проволочного кольца. Именно это мы и получили, зафиксировав границу и попросив получить гладкую поверхность внутри. Поздравляю вас, мы только что решили уравнение Лапласа с граничными условиями Дирихле. Круто звучит? А на деле всего-навсего одну систему линейных уравнений решить.

Уравнение Пуассона

Давайте ещё крутое имя вспомним.

Предположим, что у меня есть такая картинка:

Всем хороша, только стул мне не нравится.

Разрежу картинку пополам:



И выделю руками стул:

Затем всё, что белое в маске, притяну к левой части картинки, а заодно по всей картинке скажу, что разница между двумя соседними пикселями должна равняться разнице между двумя соседними пикселями правой картинки:

For (int i=0; i

Вот результат:

Код и картинки доступны