我想使用numpy.polyfit
進行物理計算,因此我需要誤差的大小。numpy.polyfit的錯誤是什麼?
16
A
回答
20
如果您在您的來電polyfit
指定full=True
,將包括額外的信息:
>>> x = np.arange(100)
>>> y = x**2 + 3*x + 5 + np.random.rand(100)
>>> np.polyfit(x, y, 2)
array([ 0.99995888, 3.00221219, 5.56776641])
>>> np.polyfit(x, y, 2, full=True)
(array([ 0.99995888, 3.00221219, 5.56776641]), # coefficients
array([ 7.19260721]), # residuals
3, # rank
array([ 11.87708199, 3.5299267 , 0.52876389]), # singular values
2.2204460492503131e-14) # conditioning threshold
返回的剩餘價值是配合誤差的平方的總和,不知道這是你是什麼後:
>>> np.sum((np.polyval(np.polyfit(x, y, 2), x) - y)**2)
7.1926072073491056
在1.7版本也有一個cov
關鍵字,將返回的協方差矩陣的係數,你可以用它來計算擬合係數本身的不確定性。
16
正如你可以在documentation看到:
Returns
-------
p : ndarray, shape (M,) or (M, K)
Polynomial coefficients, highest power first.
If `y` was 2-D, the coefficients for `k`-th data set are in ``p[:,k]``.
residuals, rank, singular_values, rcond : present only if `full` = True
Residuals of the least-squares fit, the effective rank of the scaled
Vandermonde coefficient matrix, its singular values, and the specified
value of `rcond`. For more details, see `linalg.lstsq`.
這意味着如果你可以做一個健康,我殘差爲:
import numpy as np
x = np.arange(10)
y = x**2 -3*x + np.random.random(10)
p, res, _, _, _ = numpy.polyfit(x, y, deg, full=True)
然後,p
是你適合的參數,如上所述,res
將是殘差。 _
是因爲您不需要保存最後三個參數,因此您可以將它們保存在您不會使用的變量_
中。這是一個慣例,不是必需的。
@海梅的答案解釋了什麼是殘差的意思。你可以做的另一件事是將這些平方偏差看作一個函數(總和爲res
)。這對於看到一個不夠充分的趨勢特別有用。 res
可以很大,因爲統計噪聲,或者可能是系統性差配件,例如:
x = np.arange(100)
y = 1000*np.sqrt(x) + x**2 - 10*x + 500*np.random.random(100) - 250
p = np.polyfit(x,y,2) # insufficient degree to include sqrt
yfit = np.polyval(p,x)
figure()
plot(x,y, label='data')
plot(x,yfit, label='fit')
plot(x,yfit-y, label='var')
所以在圖中,記下顯得格格不入附近x = 0
:
相關問題
- 1. numpy.polyfit和scipy.polyfit和有什麼不一樣?
- 2. 什麼是錯誤
- 3. 什麼是錯誤?
- 4. 我的錯誤是什麼?
- 5. 什麼是錯誤的HttpBasicAuthenticator
- 6. sfWidgetFormDoctrineChoice:錯誤,錯誤還是什麼?
- 7. :什麼是「execvp文件錯誤」錯誤?
- 8. MySQL錯誤1064 - 這是什麼錯誤?
- 9. Java applet錯誤...什麼是錯的?
- 10. 什麼是錯的這個錯誤
- 11. 什麼是錯誤um:loader_init_failure_status_dll_not_found_c0000135_asckc!nnknown?
- 12. 錯誤CS0201,這是什麼?
- 13. 什麼是「錯誤」行爲?
- 14. 什麼是NSXMLParserErrorDomain錯誤?
- 15. 什麼是dwarfdump錯誤?
- 16. 什麼是'總線錯誤?'
- 17. 這是什麼CSS錯誤?
- 18. 什麼是INSTALL_PARSE_FAILED_NO_CERTIFICATES錯誤?
- 19. 以下是什麼錯誤?
- 20. 什麼是ajax錯誤?
- 21. 什麼是NSXMLParserErrorDomain錯誤1549
- 22. 什麼是詳細錯誤
- 23. 錯誤是什麼意思?
- 24. 什麼是monadic錯誤?
- 25. 什麼是錯誤Java ArrayLists
- 26. 這個錯誤是什麼?
- 27. 什麼是分段錯誤?
- 28. 這是什麼Agda錯誤?
- 29. 什麼是錯誤3004?
- 30. 什麼是錯誤Infobip
你知道如果np.polyfit使用TLS(總最小二乘法,也稱爲正交最小二乘法)或OLS(普通最小二乘法)來尋找最佳擬合? –