Voglio usare numpy.polyfit
per i calcoli fisici, quindi ho bisogno dell'ampiezza dell'errore.Qual è l'errore di numpy.polyfit?
risposta
Se si specifica full=True
nella chiamata a polyfit
, includerà informazioni aggiuntive:
>>> 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
Il valore residuo restituito è la somma dei quadrati degli errori in forma, non so se questo è quello che sei dopo:
>>> np.sum((np.polyval(np.polyfit(x, y, 2), x) - y)**2)
7.1926072073491056
Nella versione 1.7 c'è anche una parola chiave cov
che restituirà la matrice di covarianza per i vostri coefficienti, che è possibile utilizzare per calcolare l'incertezza dei coefficienti fit stessi.
Come si può vedere nella 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`.
Il che significa che se si può fare una misura e ottenere i residui come:
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)
Poi, il p
sono i parametri in forma, e res
saranno i residui, come descritto sopra. Gli _
sono perché non è necessario salvare gli ultimi tre parametri, quindi è sufficiente salvarli nella variabile _
che non si utilizzerà. Questa è una convenzione e non è richiesta.
@ risposta di Jaime spiega che cosa i mezzi residue. Un'altra cosa che puoi fare è osservare le deviazioni al quadrato come una funzione (la cui somma è res
). Ciò è particolarmente utile per vedere una tendenza che non si adatta sufficientemente. res
può essere grande a causa del rumore statistico, o forse sistematica poveri raccordo, ad esempio:
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')
Così in figura, notare la forma scadente vicino x = 0
:
- 1. numpy.polyfit dà residui vuoti matrice
- 2. Qual è il contrario di "è"?
- 3. Qual è l'utilità di `enable_shared_from_this`?
- 4. Qual è l'OracleType di ROWNUM
- 5. Qual è il significato di ∃?
- 6. Qual è l'etimologia di 'slug'?
- 7. Qual è l'uso di @SuppressWarnings
- 8. Qual è lo scopo di. * \\?
- 9. Qual è l'uso di AtomicReferenceArray?
- 10. Qual è l'uso di plist?
- 11. Qual è l'equivalente di "OnBackKeyPress"
- 12. qual è l'intervallo di HOUR_OF_DAY?
- 13. Qual è l'unità di gettimeofday()?
- 14. Qual è l'opposto di Wine?
- 15. Qual è l'interfaccia di IServiceLocator?
- 16. Qual è l'origine di __author__?
- 17. Qual è l'uso di System.in.read()?
- 18. Qual è l'uso di singletonList?
- 19. Qual è l'uso di "lenient"?
- 20. Qual è l'uso di window.external?
- 21. Qual è l'equivalente di Rust di `size_t`?
- 22. Qual è l'equivalente di java di ManualResetEvent?
- 23. Qual è l'oggetto chrome?
- 24. Qual è il costrutto $()?
- 25. Qual è il? genere?
- 26. - Qual è l'approccio corretto?
- 27. Qual è SecDownloader
- 28. Qual è l'operatore @?
- 29. Qual è il NoSaveStateFrameLayout?
- 30. Qual è AbstractTestNGSpringContextTests
fai a sapere se np.polyfit utilizza TLS (Totale minimi quadrati noti anche come minimi quadrati ortogonali) o OLS (minimi ordinari) per trovare la soluzione migliore? –