2013-07-21 15 views
10

Uso Scipy CurveFit per adattare una curva gaussiana ai dati e mi interessa analizzare la qualità della misura. So che CurveFit restituisce una matrice pcov utile, dalla quale la deviazione standard di ogni parametro di adattamento può essere calcolata come sqrt (pcov [0,0]) per il parametro popt [0].Quantificazione della qualità della curva adattata utilizzando Python SciPy

ad es. frammento di codice per questo:

import numpy as np 
from scipy.optimize import curve_fit 

def gaussian(self, x, *p): 
A, sigma, mu, y_offset = p 
return A*np.exp(-(x-mu)**2/(2.*sigma**2)) + y_offset 

p0 = [1,2,3,4] #Initial guess of parameters 
popt, pcov = curve_fit(gaussian, x,y, p0) #Return co-effs for fit and covariance 

‘Parameter A is %f (%f uncertainty)’ % (popt[0], np.sqrt(pcov[0, 0])) 

Questo dà un'indicazione dell'incertezza parametri di adattamento per ciascun coefficiente nell'equazione curve fitting, ma mi chiedo il modo migliore per ottenere una “qualità di parametro fit” il grado in modo che possa confrontare la qualità di adattamento tra diverse equazioni di curva (ad es. Gaussiana, Super Gaussiana ecc.)

Su un livello semplice, ho potuto calcolare solo l'incertezza percentuale in ciascun coefficiente e quindi la media, anche se mi chiedo se c'è un modo migliore? Dalla ricerca online, e dalla pagina di Wikipedia particolarmente utile di "bontà di adattamento", noto che ci sono molte misure per descriverlo. Mi chiedo se qualcuno sappia se alcuni sono incorporati in pacchetti Python/ha qualche consiglio generale sui buoni modi per quantificare l'adattamento della curva.

Grazie per qualsiasi aiuto!

+1

Penso che potresti volere l'errore [standard della stima] (http://onlinestatbook.com/2/regression/accuracy.html). –

+0

Vedi anche questa risposta: Uscita completa da curve_fit! http://stackoverflow.com/a/16528775/680232 –

risposta

4

È possibile utilizzare la libreria ODRPACK invece di curva_fit. Il risultato del montaggio da parte di ODRPACK contiene le stime delle incertezze per tutti i parametri di adattamento in diversi modi, inclusi gli errori standard dei parametri stimati, che esattamente si sta cercando.

Ero abituato a lavorare con la curva_fit, ma ho affrontato lo stesso problema: l'assenza di stime di errori nei parametri di adattamento. Quindi, ora sto usando l'ODRPACK.