2015-07-12 13 views
0

我有一個數據集和長度爲100的單個數組的不確定性。 我有一個長度爲100的「模型」數組。 目標:只優化此模型數組的一個參數(縮放振幅)以更好地擬合給定的數據其不確定性。python lmfit:給定定義模型的離散值數組,如何擬合具有指定不確定性值的相同長度的數據數組?

到目前爲止,我已經試過:

def residual(params, x, data, eps_data): 
    amp = params['amp'].value 
    model = amp * x 
    return (data - model)/eps_data 
params = Parameters() 
params.add('amp',value=100) 
out = minimize(residual,params,args=(mod_array,data_array,unc_array)) 

然後,我乘的最佳擬合值振幅與原始模型陣列:

fit = params['amp'].value*mod_array 

然後,我積配在原始數據集它看起來非常糟糕,我甚至都沒有看到靠近數據的模型。代碼/算法出了什麼問題?

回答

0

這看起來像它應該工作。但是你沒有給出足夠的信息來確定。數組的數據類型是什麼(它們應該是dtype numpy.float64或numpy.float32的numpy ndarrays),你得到的輸出是什麼? 「放大器」的價值在適合中變化了多少?

請注意,如果您使用的是最近的devel版本的numpy,那麼您將(並且將來會)需要使用'out.params ['amp']'來獲得最佳擬合值。

相關問題