如何解决如何改善此线性拟合考虑误差线以使其更健壮?
我正在尝试对以下定义的一组度量进行线性拟合:
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 举报,一经查实,本站将立刻删除。