2014-12-24 881 views
2

我用numpy.polyfit擬合了一些數據的直線。數據本身不帶有任何錯誤欄。這裏是我的代碼的簡化版本:如何使用numpy.polyfit找到斜率和截距誤差

from numpy import polyfit 

data = loadtxt("data.txt") 
x,y = data[:,0],data[:,1] 
fit = polyfit(x,y,1) 

當然,這讓我對斜率和截距值的,但如何我找到了最合適的值的不確定性?

回答

4

我有點晚回答這個問題,但我認爲這個問題仍然沒有答案,並且對我來說是Google上的熱門話題。因此,我認爲以下是正確的方法

x = np.linspace(0, 1, 100) 
y = 10 * x + 2 + np.random.normal(0, 1, 100) 

p, V = np.polyfit(x, y, 1, cov=True) 

print "x_1: {} +/- {}".format(p[0], np.sqrt(V[0][0])) 
print "x_2: {} +/- {}".format(p[1], np.sqrt(V[1][1])) 

其輸出

x_1: 10.2069326441 +/- 0.368862837662 
x_2: 1.82929420943 +/- 0.213500166807 

所以你需要返回的協方差矩陣,V,爲此,對角線的平方根是估計的標準 - 每個擬合係數的偏差。這當然推廣到更高的尺寸。

+0

我想提請注意這個答案,這確實解決了OP的問題。 –

+0

什麼樣的「參數錯誤」是?標準差,平均標準偏差? –

+1

@deusexmachina協方差矩陣的sqrt應給出誤差的標準偏差。 – pylang

相關問題