2015-10-17 61 views
3

我需要適合具有任何可用函數的特殊數據分佈。分佈並不真正遵循特定的理論預測,所以我只想適合任何沒有很大意義的給定函數。我用一個樣本分佈和一個五階多項式擬合圖像來表明這個簡單的方法並不真正起作用。Python:擬合錯誤函數(erf)或類似數據

我知道分佈非常類似於一個錯誤的功能,但我沒能適應與SciPy的這樣的功能...

我希望任何人有任何的方式,以適應誤差函數這樣的分佈,或者也許可以建議我可以適合描述這種分佈的不同類型的功能。

Sample data

+0

出發點是:適合的目的是什麼?例如,如果你只是想插入/外插你的數據---然後使用類似'樣條'的東西就沒問題。如果你想從特定的功能形式中獲得意義,那麼這可能不盡如人意。 – DilithiumMatrix

+0

我確實想插入數據,是的,但不是在x方向。我想,例如因爲答案是不明確的,所以y位置90處的x值然後插值不起作用。現在我已經解決了擬合S形功能: https://en.wikipedia.org/wiki/Sigmoid_function 與範圍的curve_fit。問題在於它需要對參數進行相當準確的初始猜測...... – HansSnah

+0

它可能在對數空間中表現得更好。如果你確定這個函數是單調的,那麼你可以簡單地用一個'x(y)'樣條 - 即反轉關係。但是一個sigmoid函數似乎是一個很好的方法 - 這很容易在分析上反轉。 – DilithiumMatrix

回答

1

可以適應任何功能,你想:

from scipy.optimize import curve_fit 
popt, pcov = curve_fit(func, xdata, ydata) 

如果您想類似ERF一些功能,你可以使用例如:

def func(z,a,b): 
    return a*scipy.special.erf(z)+b 

這將找到參數a,b。