【发布时间】:2013-10-07 15:10:55
【问题描述】:
我尝试使用 scipy.optimize.curvefit 为我的数据拟合一个函数。
Q=optimization.curve_fit(func,X,Y, x0,ERR)
而且效果很好。
但是,现在我正在尝试使用不对称错误,但我不知道如何做到这一点 - 或者即使它是可能的。
不对称错误是指错误不是例如:3+-0.5,而是3 +0.6 -0.2。
所以 ERR 是一个有两列的数组。
如果有人知道如何做到这一点,那就太好了 - 或者我可以指出一个不同的 Python 例程,它可能能够做到这一点。
我正在使用的代码的 sn-p - 但我不确定它是否更清晰:
A=numpy.genfromtxt('WF.dat')
cc=A[:,4]
def func(A,a1,b1,c1):
N=numpy.zeros(len(x))
for i in range(len(x)):
N[i]=1.0*erf(a1*(A[i,1]-c1*A[i,0]**b1))
return N
x0 = numpy.array([2.5 , -0.07 ,-5.0])
Q=optimization.curve_fit(func,A,cc, x0, Error)
And Error=[ErP,ErM](2 列)
【问题讨论】:
-
您能否发布一些(最好是可运行的)代码,以便我们更详细地查看问题?
-
你不能简单地将
3 +0.6 -0.2转换成3.2 +/- 0.4吗? -
并非如此。这将破坏出现如此精确错误的目的。
-
如果您按照 E 先生的建议进行操作,并包含一个简单、可运行的示例来突出该问题,那么人们解决这个问题可能会更有趣。不是从文件中加载数据,而是生成非对称高斯并添加一些随机噪声(np.random.random)。然后解决方案可以尝试拟合这个并获得均值的不对称误差。
标签: python scipy curve-fitting