Измерение для нелинейного scipy.curve_fit с взвешенными точками и значениями сигмы? - PullRequest
0 голосов
/ 04 апреля 2020

Данные являются медианными значениями различных точек выборки, поэтому я хочу добавить сигма-значения для curve_fit, но не уверен, как мне их добавить. Теперь я добавляю значения сигмы для точки, пропорциональной ее числам выборки. Здесь я предполагаю, что число выборок уменьшается со значениями данных, то есть от высокого к низкому (18, ..., 1).

Мой первый вопрос: как мне добавить сигму и настроить значения сигмы? Тогда второй вопрос: после того, как я выбрал подходящие линии, какой тип измерения я должен сказать людям, что он подходит, как квадрат r в линейной регрессии? Я написал игрушечный код, чтобы убедиться, что мой вопрос понятен.

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

data = [5,4,3,2,3.5,0.5,3,4,3,1,2,2,3,4,5,4,3,4.5]    
N=len(data)
xdata=np.linspace(1,N,N, endpoint=True,dtype=np.int)

def func(x, a, b,c,d):
    return a+b*x+c*x**2+d*x**3

popt, pcov = curve_fit(func, xdata, data,sigma=xdata)                   

y=np.empty(N)
for i in range(N):
    y[i]=func(xdata[i], popt[0],popt[1],popt[2],popt[3])


f, ax = plt.subplots( figsize=(10, 8))
ax.scatter(xdata,data)
ax.plot(xdata,y,'k',linewidth=2 )
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...