* Provide uncertainty of both a and b fit parameters.
This commit is contained in:
@@ -47,16 +47,29 @@ def linregr2d_SZ(x, y, sigma=None):
|
|||||||
detinv = 1.0 / (d11*d22 - d12*d21)
|
detinv = 1.0 / (d11*d22 - d12*d21)
|
||||||
a = (e1*d22 - e2*d12) * detinv
|
a = (e1*d22 - e2*d12) * detinv
|
||||||
b = (e2*d11 - e1*d21) * detinv
|
b = (e2*d11 - e1*d21) * detinv
|
||||||
|
|
||||||
|
# Shiwei's old method of computing the uncertainty of the
|
||||||
|
# y-intersect (sigma_a):
|
||||||
varsum = sum((xx*d11 - d12)**2 * ww)
|
varsum = sum((xx*d11 - d12)**2 * ww)
|
||||||
var = varsum * detinv**2
|
var = varsum * detinv**2
|
||||||
sigma = sqrt(var)
|
sigma = sqrt(var)
|
||||||
|
|
||||||
|
# New method based on NR chapter: sqrt(sigma_a2) must give
|
||||||
|
# identical result to sigma or else something is screwy!
|
||||||
|
sigma_a2 = d12 * (-detinv)
|
||||||
|
sigma_b2 = d21 * (-detinv)
|
||||||
|
|
||||||
|
print sigma_a2
|
||||||
|
print sigma_b2
|
||||||
|
|
||||||
return fit_result(
|
return fit_result(
|
||||||
fit_method='linregr2d_SZ',
|
fit_method='linregr2d_SZ',
|
||||||
fit_model='linear',
|
fit_model='linear',
|
||||||
a=a,
|
a=a,
|
||||||
b=b,
|
b=b,
|
||||||
sigma=sigma,
|
sigma=sigma,
|
||||||
|
sigma_a=sqrt(sigma_a2),
|
||||||
|
sigma_b=sqrt(sigma_b2),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -70,7 +83,9 @@ def Test_1():
|
|||||||
'b': -0.82241012516149792,
|
'b': -0.82241012516149792,
|
||||||
'fit_method': 'linregr2d_SZ',
|
'fit_method': 'linregr2d_SZ',
|
||||||
'fit_model': 'linear',
|
'fit_model': 'linear',
|
||||||
'sigma': 0.00048320905704467775}
|
'sigma': 0.00048320905704467775,
|
||||||
|
'sigma_a': 0.00048320905704467786,
|
||||||
|
'sigma_b': 0.080335909573397646}
|
||||||
|
|
||||||
My wlinreg tool (via 'dtextrap' shell script alias gives:
|
My wlinreg tool (via 'dtextrap' shell script alias gives:
|
||||||
|
|
||||||
@@ -88,6 +103,7 @@ def Test_1():
|
|||||||
a = -1392.31823569246 +/- 0.000460341146124978 = -1392.31824(46)
|
a = -1392.31823569246 +/- 0.000460341146124978 = -1392.31824(46)
|
||||||
b = -0.822098515674071 +/- 0.0803118207916705 = -0.822(80)
|
b = -0.822098515674071 +/- 0.0803118207916705 = -0.822(80)
|
||||||
|
|
||||||
|
which is close enough for this purpose!
|
||||||
"""
|
"""
|
||||||
from wpylib.text_tools import make_matrix as mtx
|
from wpylib.text_tools import make_matrix as mtx
|
||||||
M = mtx("""
|
M = mtx("""
|
||||||
|
|||||||
Reference in New Issue
Block a user