Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Статистические функции
  • Статистики совокупностей
  • Распределения вероятности
  • Функция hist
  • Случайные числа
  • Интерполяция и функции предсказания
  • Функции регресcии
  • Функции сглаживания

    В начало книги

  •  

    Список встроенных функций

    Функции регрессии
    К предыдущему разделуК следующему разделу

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

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

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

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

    Эти функции возвращают наклон и смещение линии, которая наилучшим образом приближает данные в смысле наименьших квадратов.  Если поместить значения x в вектор vx и соответствующие значения y в vy, то линия определяется в виде

     y = slope(vx, vy)f21.gif (824 bytes)x + intercept(vx, vy)

    slope(vx, vy) Возвращает скаляр: наклон линии регрессии в смысле наименьших квадратов для данных из vx и vy.
    intercept(vx, vy) Возвращает скаляр: смещение по оси ординат линии регрессии в смысле наименьших квадратов для данных из vx и vy.

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

     y = Aekx,

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

    log(y) = log(A) + kx

    В этом случае

    A = exp(intercept(vx, vy)) и k = slope(vx, vy)

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

    13-09.gif (6922 bytes)

    Рисунок 9: Использование функций slope и intercept для линейной регрессии.

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

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

    Используйте regress, когда нужно использовать единственный полином, чтобы приблизить все данные. Функция regress допускает использование полинома любого порядка. Однако на практике не следует использовать степень полинома выше n = 4.

    Так как regress пытается приблизить все точки данных, используя один полином, это не даст хороший результат, когда данные не связаны единой полиномиальной зависимостью. Например, предположим, ожидается, что зависят линейно от x в диапазоне от x1 до x10 и ведут себя подобно кубическому полиному в диапазоне от x11 до x20.  Если используется regress с n = 3, можно получить хорошее приближение для второй половины, но ужасное — для первой. Функция loess облегчает эти проблемы, выполняя локальное приближение. Вместо создания одного полинома, как это делает regress, loess создаёт различные полиномы второго порядка в зависимости от расположения на кривой.

    Она делает это, исследуя данные в малой окрестности точки, представляющей интерес. Аргумент span управляет размером этой окрестности. По мере того как диапазон становится большим, loess становится эквивалентным regress с n = 2. Хорошее значение по умолчанию — span = 0.75.

    Рисунок 10 показывает, как span влияет на приближение, выполненное функцией loess. Заметьте, что меньшее значение span лучше приближает флуктуации данных. Большее значение span сглаживает колебания данных и создаёт более гладкую приближающую функцию.

    13-10.gif (7823 bytes)

    Рисунок 10: Влияние различных значений span на функцию loess.

    egress (vx, vy, n) Возвращает вектор, требуемый interp, чтобы найти полином порядка n, который наилучшим образом приближает данные из vx и vy. vx есть m-мерный вектор, содержащий координаты x. vy есть m-мерный вектор, содержащий координаты y соответствующие m точкам, определенным в vx.
    Е  loess (vx, vy, span) Возвращает вектор, требуемый interp, чтобы найти набор полиномов второго порядка, которые наилучшим образом приближают определённые окрестности выборочных точек, определенных в векторах vx и vy. vx есть m-мерный вектор, содержащий координаты x. vy - m-мерный вектор, содержащий координаты y, соответствующие m точкам, определенным в vx. Аргумент span > 0) определяет, насколько большие окрестности loess будет использовать при выполнении локального приближения.
    interp (vs, vx, vy, x) Возвращает интерполируемое значение y, соответствующее x. Вектор vs вычисляется  loess или regress на основе данных из vx и vy.

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

    Функции loess и regress, обсужденные в предыдущем разделе, также полезны, когда имеется набор измеренных величин z, соответствующих значениям x и y, и необходимо приблизить полиномами поверхность, проходящую через эти значения z.

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

    • Аргумент vx, который был m-мерным вектором значений x, становится матрицей, состоящей из m рядов и 2 столбцов, Mxy. Каждая строка Mxy содержит x в первом столбце и соответствующее значение y во втором столбце.
    • Аргумент x для функции interp становится двумерным вектором v, чьи элементы — значения x и y, в которых нужно найти значение полиномиальной функции, представляющей наилучшее приближение данных из Mxy и vz.
    regress (Mxy, vz, k) Возвращает вектор, требуемый interp, чтобы найти полином k-ого порядка, который наилучшим образом приближает данные из Mxy и vz. Mxy есть m x 2 матрица, содержащая x-y координаты. vz есть m-мерный вектор, содержащий значения z, соответствующие точкам, определенным в Mxy.
    Е  loess (Mxy, vz, span) Возвращает вектор, требуемый interp, чтобы найти набор полиномов второго порядка, которые наилучшим образом приближают определённые окрестности выборочных точек, определенных в массивах Mxy и vz. Mxy — m x 2 матрица, содержащая x-y координаты. vzm — мерный вектор, содержащий координаты z, соответствующие m точкам, определенным в Mxy. Аргумент span (span > 0) определяет, насколько большую окрестность loess будет рассматривать при выполнении локального приближения.
    interp (vs, Mxy, vz, v) Возвращает интерполируемое значение z, соответствующее точке x = v0 и y = v1. Вектор vs вычисляется ? loess или regress на основе данных из Mxy и vz.

    Можно увеличивать число независимых переменных, просто добавляя столбцы в массив Mxy, а затем добавляя соответствующее число строк к вектору v, который передается функции interp. Функция regress может иметь любое число независимых переменных. Но когда число независимых переменных и степень полинома больше четырёх, она будет работать медленнее и требовать большего количества памяти. Функция loess допускает максимум четыре независимых переменных.

    Имейте в виду, что для regress число значений данных m должно удовлетворять соотношению

    f18.gif (1252 bytes)

    где n — число независимых переменных (следовательно, число столбцов в Mxy), k — желаемая степень полинома, и m — число значений данных (следовательно, число строк в vz). Например, если имеется пять независимых переменных, и ищется приближение полиномом четвёртой степени, потребуется более чем 126 наблюдений.

    Обобщенная регрессия

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

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

    y = a0f21.gif (824 bytes)f0(x) + a1f21.gif (824 bytes)f1(x) +...+ anf21.gif (824 bytes)fn(x)

    следует использовать linfit, чтобы вычислить ai. Рисунок 11 показывает пример, в котором линейная комбинация трех функций: x, x2 и (x + 1)-1 используется для моделирования некоторых данных.

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

    f(x) = a1f21.gif (824 bytes)sin(2x) + a2f21.gif (824 bytes)tanh(3x)

    и всё, что нужно сделать — решить уравнение относительно неизвестных коэффициентов a1 и a2, значит эта проблема решается с помощью linfit.

    В противоположность этому, если данные должны быть смоделированы в виде суммы

    f(x) = 2f21.gif (824 bytes)sin(a1x) + 3f21.gif (824 bytes)tanh(a2x)

    и требуется найти неизвестные параметры a1 и a2, то это задача для функции genfit.

    linfit (vx, vy, F) Возвращает вектор, содержащий коэффициенты, используемые, чтобы создать линейную комбинацию функций из F, дающую наилучшую аппроксимацию данных из векторов vx и vy. F — функция, которая возвращает вектор, состоящий из функций, которые нужно oбъединить в виде линейной комбинации.
    Е   genfit (vx, vy, vg, F) Возвращает вектор, содержащий n параметров u0, u1,...un-1, которые обеспечивают наилучшее приближение данных из vx и vy функцией f, зависящей от x и параметров u0, u1,...un-1. F — функция, которая возвращает n+1-мерный вектор, содержащий f и ее частные производные относительно параметров. vg есть n-мерный вектор начальных значений для n параметров.

    13-11.gif (8291 bytes)

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

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

    Рисунок 12 показывает пример, в котором genfit используется, чтобы найти экспоненту, приближающую набор данных наилучшим образом.

    13-12.gif (9420 bytes)

    Рисунок 12: Использование genfit для нахождения параметров функции, доставляющих ей наилучшее приближение к данным.

    В начало страницы  К предыдущему разделуК следующему разделу

    Список встроенных функций

    | На первую страницу | Поиск | Купить Matlab

    Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


    Copyright © 1993-2024. Компания Softline. Все права защищены.

    Дата последнего обновления информации на сайте: 04.03.17
    Сайт начал работу 01.09.00