2014-12-03 122 views
3

我使用numpy.polyfit得到線性迴歸:coeffs = np.polyfit(x,y,1)。numpy中的線性迴歸斜率誤差

什麼是使用numpy計算擬合斜率誤差的最佳方法?

+1

當你使用'polyfit'時,它返回擬合的殘差。你可以在這上面做一個Chi2來獲得我認爲合適的優點,這就是你正在尋找的東西。 – ebarr 2014-12-03 23:53:30

+0

我正在尋找絕對的錯誤,而不是一個善良。 – Mixel 2014-12-03 23:59:15

+1

殘差是擬閤中每個點的絕對誤差。 – ebarr 2014-12-04 00:03:38

回答

5

正如@ebarr在評論中提到的那樣,您可以使用np.polyfit通過使用關鍵字參數full=True來返回殘差。

實施例:

x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]) 
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0]) 
z, residuals, rank, singular_values, rcond = np.polyfit(x, y, 3, full=True) 

residuals然後是最小二乘的總和。

或者,您可以使用關鍵字參數cov=True來獲取協方差矩陣。

實施例:

x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]) 
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0]) 
z, cov = np.polyfit(x, y, 3, cov=True) 

然後,cov對角線元素是係數在z上的差異,即np.sqrt(np.diag(cov))給你的係數的標準偏差。您可以使用標準差來估計絕對誤差超過特定值的概率,例如將標準偏差插入uncertainty propagation calculation。如果你使用例如不確定度傳播中的3 *標準偏差,可以計算99.7%的情況下不會超過的誤差。

最後一條提示:您必須選擇是否選擇full=Truecov=Truecov=True只適用於full=False(默認),反之亦然。

+0

當我嘗試實現這個解決方案時,我沿着協變量矩陣的對角線得到負值。 – 2016-10-15 20:52:05