Регрессия с ортогональным расстоянием (scipy.odr)#

Содержимое пакета#

Data(x[, y, we, wd, fix, meta])

Данные для обучения.

RealData(x[, y, sx, sy, covx, covy, fix, meta])

Данные с весами в виде фактических стандартных отклонений и/или ковариаций.

Model(fcn[, fjacb, fjacd, extra_args, ...])

Класс Model хранит информацию о функции, которую вы хотите аппроксимировать.

ODR(data, model[, beta0, delta0, ifixb, ...])

Класс ODR собирает всю информацию и координирует выполнение основной процедуры подгонки.

Output(выходные данные)

Класс Output хранит выходные данные запуска ODR.

odr(fcn, beta0, y, x[, we, wd, fjacb, ...])

Низкоуровневая функция для ODR.

OdrWarning

Предупреждение, указывающее, что данные, переданные в ODR, вызовут проблемы при передаче в 'odr', о которых пользователь должен знать.

OdrError

Исключение, указывающее на ошибку в подгонке.

OdrStop

Исключение, останавливающее подгонку.

polynomial(порядок)

Фабричная функция для общей полиномиальной модели.

exponential

Экспоненциальная модель

multilinear

Линейная модель произвольной размерности

unilinear

Одномерная линейная модель

quadratic

Квадратичная модель

Информация об использовании#

Введение#

Зачем нужна регрессия по ортогональным расстояниям (ODR)? Иногда есть ошибки измерений в объясняющих (так называемых «независимых») переменных, а не только в отклике (так называемой «зависимой») переменной. Процедуры подгонки методом наименьших квадратов (OLS) рассматривают данные для объясняющих переменных как фиксированные, т.е. не подверженные никаким ошибкам. Кроме того, процедуры OLS требуют, чтобы переменные отклика были явной функцией объясняющих переменных; иногда сделать уравнение явным непрактично и/или вносит ошибки. ODR может легко обрабатывать оба этих случая и даже сводиться к случаю OLS, если этого достаточно для задачи.

ODRPACK — это библиотека на FORTRAN-77 для выполнения ODR с возможно нелинейными функциями подгонки. Использует модифицированный алгоритм типа Левенберга-Марквардта с доверительной областью [1] для оценки параметров функции. Функции подгонки предоставляются функциями Python, работающими с массивами NumPy. Необходимые производные могут быть предоставлены функциями Python или оценены численно. ODRPACK может выполнять явную или неявную подгонку ODR, а также OLS. Входные и выходные переменные могут быть многомерными. Веса могут быть предоставлены для учета различных дисперсий наблюдений и даже ковариаций между измерениями переменных.

The scipy.odr пакет предлагает объектно-ориентированный интерфейс к ODRPACK, в дополнение к низкоуровневому odr функция.

Дополнительная справочная информация о ODRPACK доступна в Руководство пользователя ODRPACK, чтение которого рекомендуется.

Основное использование#

  1. Определите функцию, которую вы хотите аппроксимировать.:

    def f(B, x):
        '''Linear function y = m*x + b'''
        # B is a vector of the parameters.
        # x is an array of the current x values.
        # x is in the same format as the x passed to Data or RealData.
        #
        # Return an array in the same format as y passed to Data or RealData.
        return B[0]*x + B[1]
    
  2. Создать модель.:

    linear = Model(f)
    
  3. Создать экземпляр Data или RealData.:

    mydata = Data(x, y, wd=1./power(sx,2), we=1./power(sy,2))
    

    или, когда известны фактические ковариации:

    mydata = RealData(x, y, sx=sx, sy=sy)
    
  4. Создайте экземпляр ODR с вашими данными, моделью и начальной оценкой параметров.:

    myodr = ODR(mydata, linear, beta0=[1., 2.])
    
  5. Запустить подгонку.:

    myoutput = myodr.run()
    
  6. Изучить вывод.:

    myoutput.pprint()
    

Ссылки#

[1]

P. T. Boggs и J. E. Rogers, «Orthogonal Distance Regression», в «Statistical analysis of measurement error models and applications: proceedings of the AMS-IMS-SIAM joint summer research conference held June 10-16, 1989», Contemporary Mathematics, vol. 112, pg. 186, 1990.