Количественное определение качества кривой при помощи Python SciPy - программирование
Подтвердить что ты не робот

Количественное определение качества кривой при помощи Python SciPy

Im, использующий Scipy CurveFit, чтобы соответствовать кривой Гаусса для данных, и я заинтересован в анализе качества подгонки. Я знаю, что CurveFit возвращает полезную матрицу pcov, из которой стандартное отклонение каждого параметра фитинга может быть вычислено как sqrt (pcov [0,0]) для параметра popt [0].

например. фрагмент кода для этого:

import numpy as np
from scipy.optimize import curve_fit

def gaussian(self, x, *p):
 A, sigma, mu, y_offset = p
return A*np.exp(-(x-mu)**2/(2.*sigma**2)) + y_offset

p0 = [1,2,3,4] #Initial guess of parameters
popt, pcov = curve_fit(gaussian, x,y, p0) #Return co-effs for fit and covariance

‘Parameter A is %f (%f uncertainty)’ % (popt[0], np.sqrt(pcov[0, 0]))

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

На простом уровне я мог просто вычислить процентную неопределенность в каждом коэффициенте, а затем в среднем, хотя мне интересно, лучше ли это? От поиска в Интернете и с особо полезной страницы "доброты подгонки" на Википедии я отмечаю, что существует множество мер для ее описания. Интересно, знает ли кто-нибудь, какие из них встроены в пакеты Python/имеет какие-либо общие советы для хороших способов количественного определения кривой.

Спасибо за любую помощь!

4b9b3361

Ответ 1

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

Я работал с curve_fit, но столкнулся с той же проблемой: отсутствие оценок ошибок параметров подгонки. Итак, теперь я использую ODRPACK.