问题描述
我正在尝试对以下定义的一组度量进行线性拟合:
def leastsq_lin_fit(x,y,yerr=[]):
fit_func = lambda p,x: p[0] * x + p[1]
model=scipy.odr.Model(fit_func)
if len(yerr)>0: data = scipy.odr.RealData(x,sy=yerr)
else: data = scipy.odr.RealData(x,y)
odr = scipy.odr.ODR(data,model,beta0=[0.,1.])
out = odr.run()
a=out.beta[0]
aErr=out.sd_beta[0]
b=out.beta[1]
bErr=out.sd_beta[1]
但是我注意到当我将yerr解析为拟合例程时,我得到一个奇怪的结果,如下所示:
我并不是说第一个结果是错误的,我怀疑这个结果是由于以下事实导致的:我的数据中的误差线可能太小而无法容纳有意义的行(特别是对于较小的X值)。我想了解的是,因为这是我必须处理的数据,因此我如何才能提高这种拟合度(考虑误差线)以使其更加健壮。您如何用线性函数拟合这样的分布?
Here,您可以下载包含我用来绘制这些图的数据的文件,并且可以通过以下方式加载该文件:
with open('test.np','rb') as f:
xdata = np.load(f)
ydata = np.load(f)
yerr = np.load(f)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)