将已知函数拟合到python 2.7中的数据

时间:2015-05-23 04:03:36

标签: python-2.7 data-fitting

我试图了解已知函数与一组数据的匹配程度。我对数据的最佳匹配或任何东西都不感兴趣,我只是想知道它与我的模型有多接近。我已经尝试过使用curve_fit和linregress,但它们都没有真正给我我之后的内容。我的数据遵循对数曲线,我已经在loglog刻度上绘制得到大约-4的梯度,这接近我的模型(-3.9),但我想知道究竟如何关。到目前为止,Linregress是我所追求的最接近的匹配,因为它给出了相关系数,数据遵循最佳拟合线的程度,但它仍然不是我想要的。

def line(x,a,b):
    return a*x+b

x = np.log(range(len(coll_ave)))
x = x[1:] # I've done this to avoid the whole ln(0)=infinity thing
y = np.log(coll_ave[1:])
popt, pcov = curve_fit(line, x, y, sigma=error[1:])
grad, inter, r_value, p_value, std_err = stats.linregress(x, y)

这些给了我很多信息,但并不是我想要的。据我所知,polyfit不适用于线性模型,我宁愿使用我的数据的loglog而不是原始数据,因为我知道我的梯度是什么后。如果有一个numpy或scipy版本,那就太好了。或者对curve_fit或linregress进行修改以使其工作。

感谢您的帮助:D

1 个答案:

答案 0 :(得分:0)

所以我基本上想要numpy.corrcoef(),它采用2D数组并找到两个数据集的相关系数。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html

这可以衡量我的数据与模型的匹配程度。 1意味着它是一个完美的相关性,0意味着没有任何相关性,正值和负值告诉你这些值是同时增长/收缩,还是增长和收缩。