问题标签 [function-fitting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
705 浏览

python - 使用 scipy.optimize.curve_fit 拟合分段函数

我正在尝试编写一个程序,将 .csv 文件中的两组数据读取到数组中,然后将其拟合为分段函数。对我来说最重要的是这些拟合是同时完成的,因为它们具有相同的参数。这个分段函数是我尝试这样做的,但如果您知道同时适合它们的更好方法,我也会非常感谢有关此的建议。

为了避免上传 csv 文件,我将数据直接添加到数组中。

我想拟合标记为“SSdecay”的函数的前 11 个点,以及我想拟合标记为“SUdecay”的函数的后 11 个点。我同时这样做的尝试是制作标记为“fitfunciton”的分段函数。

运行后我得到错误:

似乎curve_fit不喜欢我使用分段函数,但我不确定为什么或者它是否是一个可修复的问题。

0 投票
1 回答
1857 浏览

python - python - 如何在python中使用已知似然函数从最大似然估计中获取参数误差?

我有一些数据,想拟合给定的心理测量函数 p。 心理测量功能 我对拟合参数和错误也很感兴趣。通过使用 scipy 包中的 curve_fit 函数的“经典”方法,很容易获得 p 的参数和错误。但是我想使用最大似然估计(MLE)来做同样的事情。从输出和图中您可以看到两种方法提供的参数略有不同。实现 MLE 不是问题,但我不知道如何使用此方法获取错误。有没有简单的方法来获得它们?我的似然函数 L 是: 似然函数 我无法调整此处描述的代码http://rlhick.people.wm.edu/posts/estimating-custom-mle.html但这可能是一个解决方案。我该如何实施?或者这个还有其他方法吗?

这里使用 scipy stats 模型拟合了一个类似的函数:https ://stats.stackexchange.com/questions/66199/maximum-likelihood-curve-model-fitting-in-python 。然而,参数的误差也没有被计算。

负对数似然函数是正确的,因为它提供了正确的参数,但我想知道这个函数是否依赖于 y 数据?负对数似然函数 l 显然是 l = -ln(L)。这是我的代码:

输出是:

拟合和测量数据都可以在这里看到: 结果图 我的 Python 版本是 Debian Stretch 上的 2.7。谢谢您的帮助。

0 投票
2 回答
2618 浏览

python - 拟合衍生 Python 的约束

在尝试创建优化算法时,我不得不对我的集合的曲线拟合施加约束。

这是我的问题,我有一个数组:

我需要找到一个符合Z斜率条件的函数,这是我正在寻找的函数的导数。

假设f是我的函数,f应该适合它的导数Z并有一个条件f,它不应该超过一个特殊的值。

python中是否有任何库可以帮助我完成这项任务?

0 投票
1 回答
587 浏览

python - Scipy ValueError:对象太深,无法使用 optimize.leastsq 进行所需的数组

我试图用线性 3D 函数 Z = a x+b y+c 拟合我的 3D 数据。我用熊猫导入数据:

我做了一些挖掘,发现拟合 3D 数据的最佳方法是使用 scipy 的优化与模型方程和残差函数:

我用以下数据拟合数据:

但结果是 ValueError:

我试图最小化残差函数以仅给出单个值或单个 np.array 但它没有帮助。我不知道问题出在哪里,如果参数的搜索空间可能不是太复杂。我将非常感谢一些提示!

0 投票
0 回答
59 浏览

matlab - matlab中给定函数的时间序列逼近

我正在尝试在 matlab 中拟合遵循这种函数的温度时间序列在此处输入图像描述

我需要检索函数的 8 个参数,将边界 lambda=0 和 sigma 设为正数。我尝试在 matlab 中使用 lsqcurvefit 函数,但如果我有一个 for 循环,我不能在这个内置的 matlab 函数中使用 y 函数。

现在,我不知道如何使用函数内部的乐趣x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

我不知道是否有更好的方法来适应这种时间序列,但如果您有解决问题的想法,请告诉我。非常感谢。

PS临时向量的大小是1x6576。因为我希望温度从 0 开始,所以我首先添加了一个额外的列。

0 投票
1 回答
50 浏览

csv - 试图将一条恒定斜率线拟合到两个特定范围的数据点

我正在使用 .csv 文件中的 10,000 个数据点,需要将常数函数拟合到两个特定范围(此处为时间),以便我可以平均它们的 y 截距并从数据的 y 值中减去这个案例)。

我的合身度 range1fit 和 range2fit 显然尺寸为 1,当我尝试绘制趋势线时出现尺寸错误,因为我试图绘制的元素之间存在尺寸差异。

这是我的完整代码:

任何有关如何进行的建议将不胜感激!

0 投票
2 回答
228 浏览

scala - 如何在scala中编程一个适合的圆

我想在 Scala 中为给定的 2D 点拟合一个圆。

Apache commons math 在 java 中有一个示例,我正在尝试将其转换为 scala(没有成功,因为我对 Java 的了解几乎不存在)。

我从“http://commons.apache.org/proper/commons-math/userguide/leastsquares.html”中获取了示例代码,(见页尾)我试图翻译成scala:

这不会产生编译错误,但会崩溃:

我想问题出在函数 distancesToCurrentCenter 的定义中。我什至不知道这个 MultivariateJacobianFunction 是否应该是一个真正的函数或对象或任何东西。

0 投票
1 回答
894 浏览

python - Python surface fitting of variables of different dimensionto get unknown parameters?

I have a function that includes x and y as independent variables and I want to fit the parameters to the data and function and plot a surface figure. I saw that if the variables have two different dimensions, I can use np.meshgrid(x,y), but then how do I find the parameters a,b,c? My code looks like this:

Can I still use curve_fit for this type of function? If so, how can I use it to find a,b,c and also plot the 3d function?

0 投票
1 回答
192 浏览

gnuplot - Gnuplot 拟合

我想拟合以下数据:

到以下函数,它是指数函数和高斯函数的组合:

$ f(x)= a1*(a2* exp(-x/T2e)+ exp(-(x/T2g)**2))

$ fit f(x) 'data' via a1,a2,T2e,T2g

但它不断给我以下结果:

当我尝试将它分开安装时

$ g(x)=b* exp(-(x/T2g)**2)

$ fit g(x) 'data' via b,T2g

我明白了

$ S(x)=S0* exp(-x/T2e)

$ fit S(x) 'data' via S0,T2e

给出:

我已经尝试设置初始值,但它没有改变结果。

有人知道出了什么问题吗?谢谢,

0 投票
2 回答
3593 浏览

python - 由于“无法将序列乘以‘numpy.float64’类型的非整数”错误,无法拟合数据

我正在尝试(a*x+b)使用 matplotlib 和 scipy 在具有线性函数的 .txt 文件中拟合和绘制简单数据。我遇到了有关测试功能的错误:"can't multiply sequence by non-int of type 'numpy.float64'"

我试过更改变量名x,但我遇到了同样的问题。大多数代码都来自一个可以正常工作的代码,它能够毫无问题地最适合数据,并且对测试函数使用相同的定义。

这是错误:

回溯(最近一次通话最后):

文件“C:/Users/Fra/Desktop/lab/ottica/2/reaqd.py”,第 19 行,在 plt.plot(x_data, test_func(x_data, params[0], params[1]), label='拟合函数')

文件“C:/Users/Fra/Desktop/lab/ottica/2/reaqd.py”,第 14 行,在 test_func 返回 a*x+b

TypeError:不能将序列乘以“numpy.float64”类型的非整数