Регрессия с ортогональным расстоянием (scipy.odr)#
Содержимое пакета#
|
Данные для обучения. |
|
Данные с весами в виде фактических стандартных отклонений и/или ковариаций. |
|
Класс Model хранит информацию о функции, которую вы хотите аппроксимировать. |
|
Класс ODR собирает всю информацию и координирует выполнение основной процедуры подгонки. |
|
Класс Output хранит выходные данные запуска ODR. |
|
Низкоуровневая функция для ODR. |
Предупреждение, указывающее, что данные, переданные в ODR, вызовут проблемы при передаче в 'odr', о которых пользователь должен знать. |
|
Исключение, указывающее на ошибку в подгонке. |
|
Исключение, останавливающее подгонку. |
|
|
Фабричная функция для общей полиномиальной модели. |
Экспоненциальная модель |
|
Линейная модель произвольной размерности |
|
Одномерная линейная модель |
|
Квадратичная модель |
Информация об использовании#
Введение#
Зачем нужна регрессия по ортогональным расстояниям (ODR)? Иногда есть ошибки измерений в объясняющих (так называемых «независимых») переменных, а не только в отклике (так называемой «зависимой») переменной. Процедуры подгонки методом наименьших квадратов (OLS) рассматривают данные для объясняющих переменных как фиксированные, т.е. не подверженные никаким ошибкам. Кроме того, процедуры OLS требуют, чтобы переменные отклика были явной функцией объясняющих переменных; иногда сделать уравнение явным непрактично и/или вносит ошибки. ODR может легко обрабатывать оба этих случая и даже сводиться к случаю OLS, если этого достаточно для задачи.
ODRPACK — это библиотека на FORTRAN-77 для выполнения ODR с возможно нелинейными функциями подгонки. Использует модифицированный алгоритм типа Левенберга-Марквардта с доверительной областью [1] для оценки параметров функции. Функции подгонки предоставляются функциями Python, работающими с массивами NumPy. Необходимые производные могут быть предоставлены функциями Python или оценены численно. ODRPACK может выполнять явную или неявную подгонку ODR, а также OLS. Входные и выходные переменные могут быть многомерными. Веса могут быть предоставлены для учета различных дисперсий наблюдений и даже ковариаций между измерениями переменных.
The scipy.odr пакет предлагает объектно-ориентированный интерфейс к ODRPACK, в дополнение к низкоуровневому odr функция.
Дополнительная справочная информация о ODRPACK доступна в Руководство пользователя ODRPACK, чтение которого рекомендуется.
Основное использование#
Определите функцию, которую вы хотите аппроксимировать.:
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]
Создать модель.:
linear = Model(f)
Создать экземпляр Data или RealData.:
mydata = Data(x, y, wd=1./power(sx,2), we=1./power(sy,2))
или, когда известны фактические ковариации:
mydata = RealData(x, y, sx=sx, sy=sy)
Создайте экземпляр ODR с вашими данными, моделью и начальной оценкой параметров.:
myodr = ODR(mydata, linear, beta0=[1., 2.])
Запустить подгонку.:
myoutput = myodr.run()
Изучить вывод.:
myoutput.pprint()
Ссылки#
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.