Функции > Анализ данных > Аппроксимация кривой > Пример. Степенная регрессия
Пример. Степенная регрессия
Используйте функции genfit и pwrfit, чтобы аппроксимировать данные с помощью модели степенной кривой.
Использование функции genfit
1. Задайте набор данных.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
2. Определите аппроксимирующую функцию, где A и b неизвестны.
Щелкните для копирования этого выражения
3. Определите вектор функции.
Щелкните для копирования этого выражения
Функция ln0 используется здесь вместо ln, потому что ее можно приближенно вычислить в 0, что необходимо для настройки значений параметров при минимизации ошибки. Замена ln0 на ln приводит к потере сходимости genfit.
4. Определите вектор начальных приближений.
Щелкните для копирования этого выражения
5. Используйте genfit, чтобы найти коэффициенты степенной функции.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
6. Определите функцию, используя коэффициенты A и b.
Щелкните для копирования этого выражения
7. Распечатайте точки данных и аппроксимирующую функцию.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Использование функции pwrfit
1. Определите аппроксимирующую функцию, где a, b и c неизвестны.
Щелкните для копирования этого выражения
2. Определите вектор начальных приближений.
Щелкните для копирования этого выражения
3. Используйте pwrfit, чтобы найти коэффициенты степенной функции.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
4. Определите функцию, используя коэффициентыa, b и c.
Щелкните для копирования этого выражения
5. Распечатайте точки данных и аппроксимирующую функцию.
Щелкните для копирования этого выражения
Проверка критерия согласия
1. Используйте графики остаточных значений, чтобы проверить, насколько хорошо модели аппроксимируют данные.
Самые большие остаточные значения:
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Самые малые остаточные значения:
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
2. Для расчета коэффициентов корреляции используйте функцию corr.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Аппроксимация выглядит намного лучше, чем мог бы показать график остаточных значений.
Для данных, которые изменяются в широком масштабе, особенно для степенных и экспоненциальных данных, которые быстро изменяются при возрастании значений X, график остаточных значений не обязательно является лучшим инструментом для того, чтобы определить качество аппроксимации.
Взвешенная функция genfit
Используйте локальные функции, чтобы изменить вектор функций, который передается в genfit, на основе других параметров.
1. Определите функцию, которая взвешивает данные согласно среднеквадратическим отклонениям данных.
Щелкните для копирования этого выражения
Использование векторной формы ввода для параметров позволяет легко использовать взвешенную функцию для других типов аппроксимирующих функций с произвольным числом параметров.
2. Напишите программу, которая возвращает genfit для данных согласно среднеквадратическим отклонениям.
Щелкните для копирования этого выражения
3. Определите вектор среднеквадратических отклонений.
Щелкните для копирования этого выражения
4. Сдвиньте одну из точек данных из первоначального набора.
Щелкните для копирования этого выражения
5. Вызовите программу и передайте в нее векторы среднеквадратических отклонений и начальных приближений.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
6. Вызовите функцию genfit без весов:
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
7. Постройте график и сравните данные и эти две аппроксимирующие функции.
Щелкните для копирования этого выражения
Функция, базирующаяся на среднеквадратических отклонениях, дает лучшую аппроксимацию.
Было ли это полезно?