python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2010字,纯文字阅读大概需要3分钟。
内容图文
![python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误](/upload/InfoBanner/zyjiaocheng/804/914064e0863e49faa7fab613fcb4b883.jpg)
我正在使用scipy.optimize.curve_fit来为我的某些数据拟合曲线.在大多数情况下,曲线看起来非常合适.出于某种原因,当我将其打印出来时,pcov = inf.
我真正需要的是计算与我拟合的参数相关的误差,并且即使它确实给出了协方差矩阵,也不确定如何做到这一点.
适合的模型是:
def intensity(x,R_out,R_in,K_in,K_out,a,b,c):
K_in,K_out = abs(0.0),abs(K_out)
if x<=R_in:
return 2*R_out*(K_out*np.sqrt(1-x**2/R_out**2)-
(K_out-0.0)*np.sqrt(R_in**2/R_out**2-x**2/R_out**2)) + c
elif x>=R_in and x<=R_out:
return K_out*2*R_out*np.sqrt(1-x**2/R_out**2) + c
elif x>R_out:
return c
intensity_vec = np.vectorize(intensity)
def intensity_vec_self(x,R_out,R_in,K_in,K_out,a,b,c):
y = np.zeros(x.shape)
for i in range(len(y)):
y[i]=intensity_vec(x[i],R_out,R_in,K_in,K_out,a,b,c)
return y
并且有400个数据点,如果您认为它有用,我可以把它放在这里.
总而言之,我无法让curve_fit打印出我的pcov并需要帮助以找出原因以及我是否可以这样做.
另外,如果是一个快速解释,我想知道如何使用pcov数组来获得与我的拟合相关的错误.
谢谢
解决方法:
参数的方差是方差 – 协方差矩阵的对角元素,标准误差是它的平方根. 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 – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误全部内容,希望文章能够帮你解决python – 从scipy.optimize.curve_fit获取与参数估计值相关的标准错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。