我有一组数据,我希望符合幂律功能
y=a*x**b
使用python库。另一个问题是我在x
和y
方向都有错误,我不知道哪个库允许我适应这两个错误的功能。数据为here。我也尝试使用gnuplot来做适合但看起来不像有希望加上我不能使用错误信息。
有什么建议吗?
答案 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()