2015-01-03 16 views
5

Io uso semplice polyfit di ordine 2 per adattarsi una linea di dati di esempio:Trova incertezza da polyfit

np.polyfit(x, y, 2) 

che restituisce i coefficienti.

Ora voglio trovare l'incertezza della retta, e ha cercato di usare cov argomento, che restituisce matrice 3x3 di covarianza:

np.polyfit(x, y, 2, cov=True) 

Ma io non sono sicuro di come calcolare l'incertezza, che secondo il mio La ricerca di Google dovrebbe essere calcolata quadrando la diagonale della matrice di covarianza.

risposta

4

Questo problema viene risolto da P.H. "Estimating Errors in Least-Squares Fitting". Richter, 1995, Rapporto sullo stato di avanzamento della TDA 42-122.

Dal rapporto, questo paragrafo potrebbe già essere sufficiente per voi

La prima istanza sopra considerato, vale a dire, la determinazione dell'errore di parametri uno o più montaggio, ha una risposta diretta data in termini di gli elementi diagonali della matrice di covarianza dell'adattamento, ed è ben noto.

Gli elementi diagonali che ti interessano sono ad esempio:

x = linspace(0,1,1000) 
# comment and uncomment the last term to see how the fit appears in the figure, 
# and how the covariances of the single polynomial coefficients vary in turn. 
y = cos(x)*x**2+x+sin(x-1.) #+(x*1.3)**6 
p,cov = polyfit(x,y,2,cov=True) 
plot(x,y,'b') 
plot(x,polyval(p,x),'r') 
print sqrt(diag(cov)) 

Più in generale, gli indirizzi di riferimento come questo errore nei coefficienti polinomiali è anche un errore della variabile dipendente y come funzione della variabile indipendente x. Dalla relazione:

Lo scopo di questo articolo per discutere errori sopra e, in particolare, per presentare i risultati che permettano uno per determinare l'errore standard della forma come una funzione della indipendente variabile, e stabilire limiti di confidenza per questi errori.