回答
如果你有足夠的關閉X點(例如,一個每0.1),你可以嘗試以下方法:
ln(f(x)) = -alpha ln(x) - lambda x ln(f(x))' = - alpha/x - lambda
所以這取決於你有你的觀點: 如果你有很多點附近0,你可以嘗試:
h(x) = x ln(f(x))' = -alpha - lambda x
所以當x變爲0函數h的極限是-α 如果你有x的值很大,函數x - > LN(F(X))」當x趨於無窮時,趨向於lambda,所以你可以猜測lambda並使用pwdyson's表達。
如果您還沒有關閉X分,數值導會很吵,所以我會嘗試猜測拉姆達爲-ln(f(x)/x
大型X的極限......
如果沒有較大的值,但大量的X的,你可以嘗試在字母和拉姆達(我想這將是比最初的表達更精確)... 這是一個簡單的至少
sum_x_i (ln(y_i) + alpha ln(x_i) + lambda x_i) ^2
最小化平方迴歸(numpy.linalg.lstsq
將完成這項工作)。 所以你有很多方法,選擇的方法真的取決於你的輸入。
如果您知道點遵循這一規律完全相同,則反轉方程,並把在x和其對應的F(X)值:
import math
alpha = -(lambda*x + math.log(f(x)))/math.log(x)
但如果點不完全符合等式,你需要做一些迴歸來確定alpha。
編輯:好的,所以他們不完全適合。這超出了Python的問題,但可能會有一些可以處理它的numpy。這裏是numpy linear regression recipe,但你的方程不能重新排列成線性形式,所以你必須考慮非線性迴歸。
沒有點不完全符合方程。我有每個f和g 100個值。從圖中我發現這是一個指數截斷的冪律。我現在想找出阿爾法。該方程不完全適合圖形。 – Bruce 2010-02-12 08:45:29
做你想做的事情的一般和一般方法是執行非線性迴歸(儘管如另一個回答中指出的那樣,可以線性化問題)。在許多科學家使用的SciPy軟件包的幫助下,Python可以很容易地完成這項工作。
你正在尋找的例程是它的least-square optimization routine(scipy.optimize.leastsq)。一旦你圍繞着這個通用優化程序的工作方式(見示例),你可能會發現許多其他的機會來使用它。基本上,您可以計算您的測量結果與其理想值之間的差異列表,並且您要求SciPy找到使這些差異儘可能小的參數,以便您的數據儘可能符合模型。然後這給你你正在尋找的參數。
這聽起來像是你可能試圖將一個冪定律擬合到一個由於不完整而在低端指數截斷的分佈 - 但是我可能對你的問題讀得太多了。
如果這是您正在處理的問題,則本網站(及隨附出版物)解決此問題:http://tuvalu.santafe.edu/~aaronc/powerlaws/。我在該頁面上編寫了冪函數鉗工的python實現;它從那裏鏈接。
- 1. 如何使用Python估計指數截斷冪律的參數?
- 2. 估計冪律分佈的指數截斷
- 3. R - 用x和y數據繪製冪律線
- 4. Python擬合多項式,冪律和指數數據
- 5. 如何使用Python估計冪律分佈的指數?
- 6. 如何使冪律函數線性化?
- 7. 在R/Python中擬合指數方法/漸近冪規律
- 8. 使用MathNet在C#中給定指數的冪律分佈
- 9. 冪律KS檢驗
- 10. 軟件計算AIC的功法,指數和指數截斷冪
- 11. 非結構化p2p網絡的冪律指數是多少?
- 12. Python:如何生成冪律圖
- 13. 在雙對數座標軸圖中繪製冪函數線R
- 14. Python:從冪律分佈生成隨機數
- 15. 冪律()`的`包功能fitdistrplus`
- 16. 冪律分佈擬合
- 17. Gamma校正@冪律變換
- 18. 如何繪製R中的冪函數1- \ phi(4.65-x/2)?
- 19. 不能使用python繪製函數
- 20. Python:繪製函數的對數
- 21. Python中的元素冪函數H2OFrame
- 22. 用於計算冪律擬合
- 23. 用於擬合網絡度數分佈的冪律的輸入
- 24. MATLAB - 如何使用負指數數組繪製一個函數?
- 25. Haskell中的冪指數
- 26. 如何在python中繪製函數值
- 27. 與貝塞爾函數繪製在python
- 28. 在python中繪製分段函數
- 29. 在Python中垂直繪製函數
- 30. 在Python 2.7中繪製函數
什麼是g?你只有圖表還是你有價值?在哪個範圍(任意大的正數,在0和1之間...)?你知道阿爾法? python以什麼方式參與? – LeMiz 2010-02-12 08:30:43
f和g是每個包含100個值的列表。我不知道阿爾法。我想用圖來計算它。 – Bruce 2010-02-12 08:43:58
如果您沒有任何有關alpha或lambda的信息,那麼沒有理由給它們一個負號。 :o) – 2010-02-12 09:19:11