作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个点,坐标分别为 x_1,2 和 y_1,2。 y 是测量值,具有与之相关的不确定性。我可以轻松计算出拟合两点的直线。我还可以估计与斜率和截距相关的不确定性。我想计算/绘制置信带。通常我会这样做:
serr = np.sqrt(np.sum(residuals**2)/(n - 2))
t = stats.t.ppf(1-0.05/2, n - 2)
confint = t * serr * np.sqrt(1./n + (x - np.mean(x))**2/np.sum((x-np.mean(x))**2))
使用标准误差和学生分布的标准方法是不可能的,因为自由度数为 0,n=2。是否有其他方法使用与斜率和截距相关的不确定性来估计(和显示)置信区间?谢谢
最佳答案
我想说这应该是“简单”的错误传播。您将 y 误差传播到斜率和截距中,您必须注意这些误差是相关的。利用已知误差和相关性,可以计算 y
与给定 x
的误差
我会这样做:
import matplotlib.pyplot as plt
import numpy as np
"""
y = a + b x
"""
xl = [ 1, 2 ] ### x1 , x2
yl = [ .6, 1.8 ] ### y1 , y2
yerr = [ .5, .3 ] ### s1, s2
b = ( yl[1] - yl[0] ) / ( xl[1] - xl[0] ) ### deltaX / deltaY
a = yl[0] - b * xl[0]
xnp = np.linspace( -.5, 3, 200 )
ynp = np.fromiter( ( a + b * x for x in xnp ), np.float)
"""
Joel Tellinghuisen
J. Phys. Chem. A 2001, 105, 3917-3921
transformation of errors provides
(a) ( s1^2 ( 1 + x1 / delatX )^2 + s2^2 ( x1 / deltaX )^2 , -s1^2 ( 1 + x1 / deltaX ) / deltaX - s2^2 x1 / deltaX^2 )
( ) -> ( )
(b) ( -s1^2 ( 1 + x1 / deltaX ) / deltaX - s2^2 x1 / deltaX^2 , ( s1^2 + s2^2 ) / deltaX^2 )
from this we calculate sy^2 = sa^2+ sb^2 x^2 + 2 sab^2 x:
"""
def sy( x ):
s1, s2 = yerr
x1, x2 = xl
dx = x2 - x1
out = ( s1 * ( 1 + x1 / dx ) )**2
out += ( s2 * x1 / dx )**2
out += ( s1**2 + s2**2 ) / dx**2 * x**2
out -= 2 * ( s2**2 * x1 / dx**2 + s1**2 * ( 1 + x1 / dx ) / dx ) * x
return np.sqrt( out )
ynpbp = np.fromiter( ( a + b * x + sy(x) for x in xnp ), np.float)
ynpbm = np.fromiter( ( a + b * x - sy(x) for x in xnp ), np.float)
ye = np.fromiter( ( sy(x) for x in xnp ), np.float)
fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1 )
ax.errorbar( xl, yl, yerr=yerr, marker='s', ls='' )
ax.plot( xnp, ynp )
ax.plot( xnp, ynpbp )
ax.plot( xnp, ynpbm )
ax.plot( xnp, ye )
ax.grid()
plt.show()
这给了我以下情节
关于python - 具有不确定性的两个数据点的线性拟合的置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58837553/
我是一名优秀的程序员,十分优秀!