Używam Scipy CurveFit do dopasowania krzywej Gaussa do danych i jestem zainteresowany analizą jakości dopasowania. Wiem, że CurveFit zwraca użyteczną matrycę pcov, z której standardowe odchylenie każdego parametru dopasowania można obliczyć jako sqrt (pcov [0,0]) dla parametru popt [0].Określenie jakości dopasowania krzywej za pomocą Pythona SciPy
np. Fragment kodu dla tego:
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]))
To daje wskazanie niepewności parametrów dopasowania dla każdego współczynnika w okucia równanie krzywej, ale zastanawiam się, jak najlepiej uzyskać całkowitą „jakość dopasowania parametru” tak, że mogę porównaj jakość dopasowania między różnymi równaniami krzywych (np. Gaussa, Super Gaussa itd.)
Mogę po prostu obliczyć procentową niepewność w każdym współczynniku, a następnie średnią, chociaż zastanawiam się, czy istnieje lepszy sposób? Od wyszukiwania w Internecie i ze szczególnie przydatnej strony "dobroć dopasowania" Wikipedii, zauważam, że jest wiele sposobów na opisanie tego. Zastanawiam się, czy ktoś wie, czy jakieś są wbudowane w pakiety Pythona/ma jakąkolwiek ogólną radę na temat dobrych sposobów kwantyfikacji dopasowania krzywej.
Dzięki za pomoc!
Myślę, że możesz chcieć [błąd standardowy szacunku] (http://onlinestatbook.com/2/regression/accuracy.html). –
Zobacz także odpowiedź: Pełna wydajność z curve_fit! http://stackoverflow.com/a/16528775/680232 –