Выполнение взвешенного линейного подбора с помощью scipy.optimize.curve_fit - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу выполнить взвешенное линейное приближение, чтобы извлечь параметры m и c в уравнении y = mx+c. Данные, для которых я хочу выполнить подгонку:

xdata = [661.657, 1173.228, 1332.492, 511.0, 1274.537]

ydata = [242.604, 430.086, 488.825, 186.598, 467.730]

yerr = [0.08, 0.323, 0.249, 0.166, 0.223]

Я хотел бы использовать scipy.optimize.curve_fit, но я не знаю, как это использовать, когда с каждой точкой данных y связана ошибка.

1 Ответ

0 голосов
/ 23 февраля 2020

IIU C тогда вы ищете аргумент ключевого слова sigma.

sigma: None or M-length sequence or MxM array, optional

Determines the uncertainty in ydata. If we define residuals as r = ydata - f(xdata, *popt), 
then the interpretation of sigma depends on its number of dimensions:
A 1-d sigma should contain values of standard deviations of errors in ydata. 
In this case, the optimized function is chisq = sum((r / sigma) ** 2).

None (default) is equivalent of 1-d sigma filled with ones.

Тогда код станет:

def func(x, m, c):
    return m * x + c

curve_fit(func, xdata, ydata, sigma=yerr)
...