2013-07-21 3 views
10

저는 Scipy CurveFit을 사용하여 Gaussian 곡선을 데이터에 맞추기 위해 적합성 분석에 관심이 있습니다. 나는 CurveFit이 유용한 pcov 행렬을 반환한다는 것을 알고 있습니다. 각 피팅 매개 변수의 표준 편차는 매개 변수 popt [0]에 대해 sqrt (pcov [0,0])로 계산 될 수 있습니다.Python SciPy를 사용하여 곡선 적합성 정량화

예컨대 이에 대한 코드는 :

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])) 

이는 커브 피팅 방정식의 각 계수를 피팅 파라미터의 불확실성에 대한 표시를 부여하지만 최고의 전반적인 "적합 파라미터의 품질"을 얻는 방법을 생각해 I 수 있도록 서로 다른 곡선 방정식 (예 : Gaussian, Super Gaussian 등) 간의 적합성을 비교하십시오.

간단한 수준에서 더 나은 방법이 있을지 모르지만 각 계수의 불확도 백분율을 계산 한 다음 평균을 구할 수 있습니까? 위키 피 디아 페이지에서 특히 유용한 "적합성"이라는 온라인 검색을 통해이 점을 설명 할 수있는 많은 방법이 있음을 알 수 있습니다. 누구든지 파이썬 패키지에 내장되어 있는지/커브 피팅을 수량화하는 좋은 방법에 대한 일반적인 조언이 있는지 궁금합니다.

도움 주셔서 감사합니다.

+1

[표준 예상 오차] (http://onlinestatbook.com/2/regression/accuracy.html)를 원할 수도 있습니다. –

+0

이 답변을보십시오 : 전체 출력 from curve_fit! http://stackoverflow.com/a/16528775/680232 –

답변

4

curve_fit 대신 ODRPACK 라이브러리를 사용할 수 있습니다. ODRPACK으로 피팅 한 결과에는 정확히 예상되는 매개 변수의 표준 오류를 포함하여 여러 가지 방법으로 모든 피팅 매개 변수에 대한 불확도의 추정치가 포함됩니다.

필자는 curve_fit을 사용하여 작업했지만 이전과 동일한 문제, 피팅 매개 변수의 오류 추정치 부재. 이제 ODRPACK을 사용하고 있습니다.