Данные являются медианными значениями различных точек выборки, поэтому я хочу добавить сигма-значения для 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()