2016-06-14 10 views
0
내가 LMFIT를 사용하여 모델에 맞게 노력하고

에 불확실성을 사용하여 적합, 난 쉽게 다음을 수행 할 수 내 measured 변수 (예 : 측정 오류)와 연결되어 있으므로 잔류 물의 포인트를 해당 표준 오류와 관련하여 가중치를주고 싶습니다 (측정 된 값의 20 %가 일정하다고 가정). 코드는 이제 다음과 같이됩니다.오류 가중 LMFIT

def loss_function(params): 
    residuals = [] 
    for x, measured in ...: 
    y = predict(x, params) 
    residuals.append((y - measured)/(measured * 0.2)) 
    return residuals 

params = Parameters() 
params.add(...) 

model = Minimizer(loss_function, params) 
result = model.minimize(method='leastsq') 

문제는 이제 완전히 신뢰할 수없는 피팅 결과를 얻습니다. 왜? 이 문제를 어떻게 해결할 수 있습니까?

+0

데이터를 추가 할 수 있습니까? – Cleb

답변

0

"완전히 신뢰할 수 없다"는 본질은 무엇입니까? 데이터의 불확실성은 엄격하게 긍정적이어야합니다. measured* 0.2을 사용하면 음수 또는 0을 허용 할 수 있습니다. 잔차에 NaN 또는 Inf가있는 경우 적합이 제대로 작동하지 않으며 거의 ​​항상 매개 변수 값을 시작 값으로 유지합니다.

FWIW의 경우, 인수를 Minimizer으로 사용하여 목적 함수 (측정, 불확실성 등)에 인수를 전달할 수 있습니다.