Как сделать регрессию в маткаде

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

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

Третий раздел — расчет средних значений и дисперсий выходного параметра Y для всех строк матрицы планирования (построчных средних и дисперсий). Программой выводится таблица, изображенная на рис. 6.2, в столбцах которой представлены рассчитанные значения средних и дисперсий.

Затем выводится таблица в виде одного столбца со значениями дисперсий и производится расчет критерия Кочрена Gr, равного отношению максимальной дисперсии к сумме всех дисперсий. Сравнить полученное значение Gr с табличным (критическим) значением Gt студент должен самостоятельно и затем сделать вывод о воспроизводимости опытов. В программе приведены значения Gt для случаев двух (f= 1) и трех (/=2) повторностей.

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

Выводимые значения средних и дисперсий

Рис. 6.2. Выводимые значения средних и дисперсий

В четвертом разделе программы рассчитываются коэффициенты регрессии по данным эксперимента. Расчет осуществляется по матричному выражению:


где X и X 7 — соответственно расширенная матрица X и транспонированная матрица X; Ys — вектор средних значений Y из выведенной выше таблицы.

Результат расчета выводится в виде таблицы (рис. 6.3). Найденные коэффициенты регрессии соответствуют следующему уравнению, представленному в общем виде:


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


где Ci — дисперсионная матрица, равная



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

Результат расчета коэффициентов регрессии

Рис. 6.3. Результат расчета коэффициентов регрессии

Затем подсчитываются значения критерия Стьюдента для каждого коэффициента:


Результаты расчетов, средние квадратические отклонения коэффициентов и значения критерия Стьюдента tRi выводятся в виде таблиц (рис. 6.4).

Полученные значения критерия Стьюдента надо сравнить с табличным (критическим) значением tT, выводимым программой на экран:


Как говорил небезызвестный герой сказки Эдуарда Успенского по имени Чебурашка, "Мы строили, строили, и наконец построили! Ура!" Вот примерно такими же словами можно охарактеризовать и тот примечательный факт, что мы победоносно подошли к концу нашего с вами разговора о замечательно мощной и удобной математической среде MathCAD. Разговор этот, что и говорить, получился достаточно долгим — почти что на целый год, однако, надеюсь, был и полезен, и интересен читателям серии "MathCAD — это просто!"

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

Итак, давайте для начала вспомним, на чем мы с вами остановились в прошлый раз. А занимались мы в прошлой статье нашей серии двумя интересными вещами: комбинаторикой и распределениями. Это, конечно, очень полезные и интересные темы, однако непосредственно к задачам математической статистики их отнести, на мой взгляд, вряд ли можно. Однако мы с вами сейчас перейдем к тому, ради чего, собственно говоря, все и было задумано — к построению регрессионных зависимостей с помощью MathCAD'а.

Для того, чтобы полноценно разговаривать о регрессиях, думаю, будет не лишним для начала напомнить, что же именно скрывается за этим таинственным словом. У слова этого, кстати сказать, существует масса значений, и далеко не все из них относятся к математической статистике — слово "регрессия" можно встретить даже в книгах по психологии. Но нас сейчас интересует именно статистическое значение этого термина. Регрессия — в теории вероятностей и математической статистике это зависимость среднего значения какой-либо величины от некоторой другой величины или от нескольких величин. Что это означает? Дело в том, что, в отличие от чисто функциональной зависимости у = f(х), когда каждому значению независимой переменной х соответствует одно определенное значение величины у, при регрессионной связи одному и тому же значению х могут соответствовать в зависимости от случая различные значения величины у. Другим важным понятием математической статистики, с которым вам наверняка придется столкнуться в своих расчетах, является корреляция (не стоит путать само понятие корреляции с коэффициентом корреляции, хотя последний термин нередко заменяют первым для краткости). Корреляция — это некая вероятностная или статистическая зависимость, не имеющая, вообще говоря, строго функционального характера. В отличие от функциональной, корреляционная зависимость возникает тогда, когда один из признаков зависит не только от данного второго, но и от ряда случайных факторов или же когда среди условий, от которых зависят и тот, и другой признаки, имеются общие для них обоих условия. Чем именно корреляция отличается от регрессии? Исходя из сказанного выше, очевидно, что термин корреляция — более общий, и потому хуже подходящий по ряду причин для количественного описания различных статистических величин. Кстати, раз уж я упомянул о том, что есть не только корреляция сама по себе, но еще и какой-то ее коэффициент, то, наверное, было бы неплохо сказать, что же этот самый коэффициент собой представляет. Это фактически численный показатель степени связи двух различных статистических величин друг с другом. Глядя на коэффициент корреляции, как правило, можно сказать, связано ли вообще изменение одной величины с изменением другой, и если связано, то насколько сильно. Коэффициент корреляции может принимать значения в интервале от нуля до единицы, и, соответственно, чем больше значение этого коэффициента, тем большая взаимосвязь между двумя переменными обнаруживается.

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

Построение регрессии в MathCAD'е

Самый простой тип регрессии — линейная. Это фактически прямая, которую мы проводим таким образом, чтобы сумма квадратов расстояний до всех экспериментальных точек от нее была минимальной (такой способ минимизации погрешностей аппроксимации называется методом наименьших квадратов). Однако, сами понимаете, описать такой регрессией можно только очень небольшое число всевозможных зависимостей. Именно поэтому гораздо чаще используют полиномиальную регрессию. Это фактически многочлен, который также строится с учетом требования минимизации погрешности приближения. В качестве основы для построения этого полинома могут браться как обычные степенные полиномы (вроде x2, x3, x23, …), так и специфические полиномы Чебышева, Лежандра и т.д., и т.п. Можно построить и другие регрессии, однако это уже довольно сложно, а потому этим заниматься мы не будем. Остановимся же мы на полиномиальной регрессии, которую и будем строить в качестве примера того, как нужно в MathCAD'е работать с регрессиями. Для построения полиномиальной регрессии в MathCAD'е используется функция regress. У нее есть три параметра. Первые два — это те самые экспериментальные данные, для которых мы и строим аналитическую приближенную зависимость (они должны быть записаны в виде вектор-столбцов). Третий же параметр задает степень полиномов, которые в конечном счете будут использоваться в нашей регрессии. С этим параметром нужно работать достаточно аккуратно. Казалось бы, схема предельно проста: чем больше степень полинома, тем с большей точностью можно аппроксимировать данные. Однако это не совсем хорошая идея, потому что чем больше степень, тем больше времени нужно MathCAD'у на построение регрессии. Да и при очень высоких степенях могут проявляться очень необычные эффекты, которые будут приводить к тому, что регрессия будет вести себя самым странным образом. Причина их, собственно говоря, кроется не только в каких-то внутренних особенностях реализации статистических расчетов в MathCAD'е, но и в самих свойствах многочленов, однако здесь, согласитесь, тот случай, когда следствие важнее причины. Поэтому вполне достаточно при построении регрессий ограничиваться пятой или шестой степенью полиномов — это очень неплохой вариант компромисса между точностью и скоростью расчетов. Хотя, если данных сравнительно немного, можно совершенно безболезненно залезть и в более высокие степени. Что ж, давайте взглянем на пример вычислений. Он довольно прост, и вы можете сами увидеть, что аргументы у функции именно такие, как я и говорил.

Как видите, всем наша регрессия хороша, кроме разве что наглядности. Что именно обозначают цифры в столбце z (см. рисунок)? Насколько хорошо такая зависимость отвечает экспериментальным данным? Может быть, стоит увеличить степень полинома, чтобы добиться большей точности? Самый лучший выход — визуализировать полученную регрессию. "На глаз" можно очень быстро (и достаточно точно) определить, чего именно не хватает в вашей регрессии до полного совершенства, и соответствующим образом ее подкорректировать. Для того, чтобы построить красивый и удобный для понимания график регрессии, нам нужно воспользоваться интерполяцией. Что такое интерполяция? Все очень просто. Интерполяция — это отыскание промежуточных значений величины по некоторым известным ее значениям. За интерполяцию в нашем случае будет отвечать такая полезная функция, как interp. У нее есть четыре параметра. Первый — вектор коэффициентов регрессионного полинома (он у нас назван z), второй и третий — вектора экспериментальных значений x и y, а четвертый — промежуточная точка, для которой мы будем вычислять значение интерполируемой функции. Как видите, все действительно просто, а потому я предлагаю вам взглянуть на следующий рисунок.

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

Что ж, как видите, строить регрессии в MathCAD'е не сложнее, чем считать интегралы. Можно было бы, конечно, несколько более широко осветить вопросы интерполяции, но, как показывает практика, тема эта, в общем-то, довольно-таки простая, а потому особенно долго останавливаться на ней действительно не имеет смысла. Стоит заметить, что для построения линейной регрессии можно также воспользоваться той же функцией regress, что и для полиномиальной, по той простой причине, что линейная функция — это полином первой степени. То есть для этого достаточно указать в regress в качестве последнего параметра единицу. Хотя в ряде литературных источников по MathCAD'у приводятся специальные формулы для линейной регрессии, мне лично кажется, что такой способ намного лучше, потому что не требует забивать себе голову лишними функциями, которых в арсенале MathCAD'а, мягко говоря, далеко не мало.

Что ж, сегодня мы с вами подведем итоги не только всему сказанному, но и всей серии статей "MathCAD — это просто!" Думаю, благодаря ей вы, по крайней мере, прониклись мыслью о том, что при соответствующем системном подходе и достаточных знаниях математики MathCAD будет преподносить вам только приятные сюрпризы. Если вы, поработав с ним, пересядете потом работать с другими математическими пакетами (скажем, с той же Mathematica), то сможете самостоятельно ощутить, что разговоры о простом и прозрачном пользовательском интерфейсе — это не просто шутка, и что MathCAD действительно позволяет пользователю решать задачи именно на том языке, которому его учили в школе и институте, а не заставляет выучивать новый, свой собственный. Конечно, что уж там и говорить, рассказывать о разных задачах, решаемых в MathCAD'е, можно практически бесконечно. В серии статей "MathCAD — это просто!" я постарался рассказать о действительно наиболее важных и, можно сказать, основополагающих принципах и приемах работы с этой математической средой, оставляя за кадром некоторые дополнительные сведения, которые, хотя и представляют определенный интерес, но вряд ли будут востребованы особенно часто.

И удачи, конечно же, вам в работе с этой мощной, но дружелюбной к пользователю математической средой!

SF, spaceflyer@tut.by

Компьютерная газета. Статья была опубликована в номере 48 за 2008 год в рубрике soft

Содержание

Введение

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

Постановка задачи регрессионного анализа

y k = f ( x k , a 0 , a 1 , . . . , a n ) + σ k

Линейная регрессия

Общий принцип

Решение данной системы уравнений в явной форме для К-отсчетов:

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

Реализация в Mathcad

Линейная регрессия в системе Mathcad выполняется по векторам аргумента X и отсчетов Y функциями:

  1. intercept(X,Y) – вычисляет параметр а, смещение линии регрессии по вертикали;
  2. slope(X,Y) – вычисляет параметр b, угловой коэффициент линии регрессии.

Расположение отсчетов по аргументу Х произвольное. Функцией corr(X,Y) дополнительно можно вычислить коэффициент корреляции Пирсона. Чем он ближе к 1, тем точнее обрабатываемые данные соответствуют линейной зависимости.


Полиномиальная регрессия

Одномерная полиномиальная регрессия

  • regress(X,Y,n) – вычисляет вектор S для функции interp(…), в составе которого находятся коэффициенты k i полинома n-й степени;
  • interp(S,X,Y,x) – возвращает значения функции аппроксимации по координатам х.

Функция interp(…) реализует вычисления по формуле:

s u b m a t r i x ( S , 3 , l e n g t h ( S ) , 0 , 0 )


Зональная регрессия

Функция regress по всей совокупности точек создает один аппроксимирующий полином. При больших координатных интервалах с большим количеством отсчетов и достаточно сложной динамике изменения данных рекомендуется применять последовательную локальную регрессию отрезками полиномов малых степеней. В Mathcad это выполняется отрезками полиномов второй степени функцией loess(X, Y, span), которая формирует специальный вектор S для функции interp(S,X,Y,x). Аргумент span > 0 в этой функции (порядка 0.1-2) определяет размер локальной области и подбирается с учетом характера данных и необходимой степени их сглаживания (чем больше span, тем больше степень сглаживания данных).


На рис. 3.2 приведен пример вычисления регрессии модельной кривой (отрезка синусоиды) в сумме с шумами. Вычисления выполнены для двух значений span с определением среднеквадратического приближения к базовой кривой. При моделировании каких-либо случайных процессов и сигналов на высоком уровне шумов по минимуму среднеквадратического приближения может определяться оптимальное значение параметра span.

Нелинейная регрессия

Линейное суммирование произвольных функций

В Mathcad имеется возможность выполнения регрессии с приближением к функции общего вида в виде весовой суммы функций f n ( x ) :

f ( x , K n ) = K 1 f 1 ( x ) + K 2 f 2 ( x ) + . . . + K N f N ( x )

Реализуется обобщенная регрессия по векторам X, Y и f функцией


Регрессия общего типа

Второй вид нелинейной регрессии реализуется путем подбора параметров k i к заданной функции аппроксимации с использованием функции


Типовые функции регрессии Mathcad

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

  • expfit(X,Y,S) – возвращает вектор, содержащий коэффициенты a, b и c экспоненциальной функции y ( x ) = a ⋅ e b ⋅ x + c + c \,\!> . В вектор S вводятся начальные значения коэффициентов a, b и c первого приближения. Для ориентировки по форме аппроксимационных функций и задания соответствующих начальных значений коэффициентов на рисунках слева приводится вид функций при постоянных значениях коэффициентов a и c.

X1.PNG

  • lgsfit(X,Y,S) – то же, для выражения y ( x ) = a 1 + c ⋅ e b ⋅ x > \,\!>
  • pwrfit(X,Y,S) – то же, для выражения y ( x ) = a ⋅ x b + c .

X2.PNG

  • sinfit(X,Y,S) – то же, для выражения y ( x ) = a ⋅ sin ⁡ ( x + b ) + c . Подбирает коэффициенты для синусоидальной функции регрессии.

Рисунок синусоиды общеизвестен.

  • logfit(X,Y) – то же, для выражения y ( x ) = a ln ⁡ ( x + b ) + c . Задания начального приближения не требуется.

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


Сглаживание сигналов

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

Полиномиальная регрессия означает приближение данных ( xi , yi ) полиномом k-й степени A ( x ) = a + bx + cx 2 + dx 3 + . + hx k . При k = 1 полином описывают прямой линией, при k = 2 – параболой, при k = 3 – кубической параболой и т.д. Как правило, на практике применяют k . Надо иметь в виду, что для построения регрессии полиномом k-й степени необходимо наличие по крайней мере ( k + l ) точек данных.

Чтобы осуществить полиномиальную регрессию с помощью MathCAD , надо выполнить следующие действия:

х : = (0 1 2 3 4 5 6) Т .

Аналогичную операцию проводим с координатами по оси у

у : = (4,7 2,6 3,5 4,4 3,3 5,2 5,1) Т .

В MathCAD полиномиальная регрессия осуществляется комбинацией встроенной функции regress и полиномиальной интерполяции:

– regress ( х , у, k ) – вектор коэффициентов для построения полиномиальной регрессии данных;

– interp ( s , x , y , t ) – результат полиномиальной регрессии;

s :=regress( х , у , k);

х – вектор действительных данных аргумента, элементы которого расположены в порядке возрастания;

– у – вектор действительных данных значений того же размера;

– k – степень полинома регрессии (целое положительное число);

– t – значение аргумента полинома регрессии.

Для построения полиномиальной регрессии после функции regress необходимо использовать функцию interp .

Далее записываем функцию полиномиальной регрессии как А ( t ):= interp ( s , x , y , t ).

Регрессия полиномом второй степени

Рис. Регрессия полиномом второй степени

Кроме того, мы можем рассчитать значение функции A ( t ) в требуемых точках. Например, для точки с аргументом x = 1,5 значение аппроксимирующей функции A ( t ) будет: A ( 1,5) = 3,553.

Программа квадратичной регрессии

х : = (0 1 2 3 4 5 6) Т

у : = (4,7 2,6 3,5 4,4 3,3 5,2 5,1) Т

s := regress(x, y, k)

А (t) : = interp(s, x, y, t).

Читайте также: