2016-06-14 21 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を使用すると、負の値またはゼロを許容することができます。残差にNaNまたはInfsがある場合、フィットがうまくいかず、ほとんどの場合、パラメータ値が開始値に残ります。

FWIWの場合、引数はfcn_argsの引数をMinimizerにして目的関数(引数、不確かさなど)に渡すことができます。