2013-11-02 30 views
1

我對Python很陌生,我想找到包含線性擬合函數的錯誤的根。查找擬合函數的根和估計誤差

我裝的功能與

import numpy as np 
import scipy.optimize as op 

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

... 

popt, pconv = op.curve_fit(lin_fit, U, sqrt_I) 
x = np.linspace(np.min(U), np.max(U), 100) 
y = lin_fit(x, *popt) 

然後我發現的根與

def root(x): 
    return lin_fit(x, *popt) 

return op.fsolve(root, 0) 

這是沒有問題的,但我現在不,如何找到這些根的錯誤。

任何人都可以幫忙嗎?

+0

這只是一個例子?你打算使用其他功能的相同方法嗎? – Jblasco

+0

我只是想用它來做這種線性函數。 –

+0

在這種情況下,從fit的係數:-b/a = root,對嗎?不需要調用op.fsolve。 – Jblasco

回答

0

該錯誤包含在pconv中,其中對角線包含每個估計係數的方差,在這種情況下爲ab

MathWorld相關係數r其測量配合的整體質量可以被計算爲:

sxy = pconv[0,1]*x.shape[0] 
sxx = pconv[0,0] 
syy = pconv[1,1] 
r = (sxy**2/(sxx*syy))**0.5 
+0

因此'pconv [0,0]'包含'a'的錯誤,'pconv [1,1]'包含'b'的錯誤? ((pconv [0,0] * b/a ** 2)** 2+(pconv [1,1]/a)** 2)** 0.5'(高斯傳播的不確定性)?如果是這樣,我如何得到'a'和b'的值? –

+0

@LinoschArtox是的......但請你只是檢查這個方程的錯誤傳播,因爲我沒有... –

+0

對不起,有點困難,我該如何獲得'a'和'b'的值? –