python模型参数估计_python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误...

参数的方差是方差 – 协方差矩阵的对角元素,标准误差是它的平方根. np.sqrt(np.diag(pcov))

关于获取inf,请查看并比较这两个示例:

In [129]:

import numpy as np

def func(x, a, b, c, d):

return a * np.exp(-b * x) + c

xdata = np.linspace(0, 4, 50)

y = func(xdata, 2.5, 1.3, 0.5, 1)

ydata = y + 0.2 * np.random.normal(size=len(xdata))

popt, pcov = so.curve_fit(func, xdata, ydata)

print np.sqrt(np.diag(pcov))

[ inf inf inf inf]

和:

In [130]:

def func(x, a, b, c):

return a * np.exp(-b * x) + c

xdata = np.linspace(0, 4, 50)

y = func(xdata, 2.5, 1.3, 0.5)

ydata = y + 0.2 * np.random.normal(size=len(xdata))

popt, pcov = so.curve_fit(func, xdata, ydata)

print np.sqrt(np.diag(pcov))

[ 0.11097646 0.11849107 0.05230711]

在这个极端的例子中,d对函数func没有影响,因此它将与inf的方差相关联,换句话说,它可以是任何值.从func中删除d将获得有意义的东西.

实际上,如果参数的比例非常不同,请说:

def func(x, a, b, c, d):

#return a * np.exp(-b * x) + c

return a * np.exp(-b * x) + c + d*1e-10

由于浮点溢出/下溢,您也会得到inf.

在你的情况下,我认为你从未使用过a和b.所以它就像这里的第一个例子.

你可能感兴趣的:(python模型参数估计)