2014-12-04 112 views
0

有沒有辦法讓一個x,y pair數據集被賦予一個函數,該函數將返回一個曲線擬合模型和coeff列表。 DataFit程序可以處理大約200種不同的模型,但我們正在尋找pythonic方法。從指數到逆多項式等Python多曲線擬合模型

我看過很多帖子都是手動使用scipy來鍵入每個模型,但是這對我們想要測試的模型的數量是不可行的。

我發現的最接近的是pyeq2,但是這並沒有返回函數列表,而且似乎是一個編碼的兔子洞。

如果R有這樣用,我們可以利用這一點,但蟒蛇真的是目標

下面是數據的一個例子,我們要找出描述這條曲線的最佳方式

enter image description here

+2

我知道有些人這樣做,但我認爲這是不好的做法。非線性模型應該基於理論考慮。無限數量的非線性函數,爲什麼您認爲(i)您的候選函數之一代表生成您的數據的過程,以及(ii)R 2將識別「正確」函數?如果您有一些潛在的候選功能(例如吸附等溫線),我可以理解做類似的事情,但我不會使用R²作爲決策標準,我絕不會用200個任意函數來做這件事。 – Roland 2014-12-04 08:31:35

+0

@Roland最主要的原因是通過測試多個模型,我們可以快速地看到結果曲線的最佳統計數據。然後從最好的幾位候選人中挑選一個或者選擇一個。例如,自動測試1到5階多項式並查看更高階是超調還是更好擬合。到目前爲止,datafit軟件已經滿足我們的需求,但是它的成本很高,並且沒有編程的靈活性 – user1938107 2014-12-04 08:52:08

+0

@Roland我們得到的結果實際上是StdError,Residual Sum,Residual Avg。 RSS,R^2,Ra^2。它只是一種爲我們找到排名最高的函數的快速方法,因爲我們的主要研究背景不在這個區域 – user1938107 2014-12-04 08:58:56

回答

0

您可以嘗試使用R中的庫樣條曲線。我已將此用於更高階曲線擬合某些單變量數據。你可以嘗試改變和實現相應的R^2錯誤類似的事情。

0

您可以決定要做到以下幾點:

  • 選擇一個模式,以適應參數。這個模型應該基於一個獨立的變量。這可以通過python的scipy.optimize curve_fit函數完成。你可以選擇類似hyberbola的東西。
  • 選擇一個複雜的模型,可能代表了工作中某種東西的基本機制。像來自疾病SIR模型的ODE系統一樣。擬合參數將不是一件容易的事。這將通過馬爾可夫鏈蒙特卡羅(MCMC)方法完成。這是非常困難的。
  • 意識到您有數據,並可以通過scikit學習使用機器學習來預測您的數據。這是一種不需要參數的方法。

機器學習和神經網絡不適合的東西,不能真正告訴你有關的基本機制,但可以做出預測就像一個最合適的模型......我敢說更好。