2017-01-15 128 views
-1

我寫了一類項目的一些代碼,需要我找到了一些數據點和擬合線的殘差,以測試其「適合」關於蟒蛇

我一直在考慮這個代碼殘差基本的困惑:

p, residuals, rank, singular_values, rcond = np.polyfit(temp,voltage,degree,full=True) 

但它給我的殘差是剩餘的平方和。 如果我需要每個點的殘差,即每個圖和擬合線之間的垂直距離,我該怎麼做?

+1

計算函數在給定的點,並減去你的點的價值。 –

回答

2

假設你有這些數據點:

np.random.seed(0) 
x = np.random.randn(10) 
y = 5*x + np.random.randn(10) 

在代碼中,p給你擬合函數的係數:

p, residuals, rank, singular_values, rcond = np.polyfit(x, y, deg=1, full=True) 

p 
Out: array([ 5.04994402, 0.36378617]) 

你可以計算出使用這些係數如下擬合點:

y_hat = p[0]*x + p[1] # add higher degree terms if needed 

同樣可以用np.polyval

y_hat = np.polyval(p, x) 

yy_hat之間的差異會給你殘差:

res = y - y_hat 

res 
Out: 
array([-0.30784646, 1.07050188, 0.34836945, -0.35403036, -0.01319629, 
     0.01869734, 1.08284167, -0.56138505, -0.04556331, -1.23838885]) 

如果你想檢查:

(res**2).sum() == residuals # sum of squared errors 
Out: array([ True], dtype=bool)