适用于具有x和y误差的数据的幂律函数

时间:2014-11-10 19:32:07

标签: python numpy scipy scikit-learn

我有一组数据,我希望符合幂律功能

y=a*x**b

使用python库。另一个问题是我在xy方向都有错误,我不知道哪个库允许我适应这两个错误的功能。数据为here。我也尝试使用gnuplot来做适合但看起来不像有希望加上我不能使用错误信息。 enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

实际上,scipy有一个Orthogonal distance regression包。

以下是线性拟合的示例,您只需更改f幂律:

from scipy.odr import Model, Data, ODR

def f(p, x):
    '''Linear function y = m*x + b'''
    # B is a vector of the parameters.
    # x is an array of the current x values.
    # x is in the same format as the x passed to Data or RealData.
    #
    # Return an array in the same format as y passed to Data or RealData.
    return p[0] * x ** p[1]

linear = Model(f)
#sx, sy are arrays os error estimates
mydata = Data(x, y, wd=1./power(sx,2), we=1./power(sy,2))
#beta0 are the inital parameter estimates
myodr = ODR(mydata, linear, beta0=[10, -1.0])
myoutput = myodr.run()
myoutput.pprint()