2014-12-04 245 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学习使用机器学习来预测您的数据。这是一种不需要参数的方法。

机器学习和神经网络不适合的东西,不能真正告诉你有关的基本机制,但可以做出预测就像一个最合适的模型......我敢说更好。