问题标签 [model-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.
regression - 有没有回归模型的工具?
我需要从一组示例中推导出线性/二次方程。有没有可用的工具?
algorithm - 在曲线上找到最佳权衡点
假设我有一些数据,我想为其拟合一个参数化模型。我的目标是找到这个模型参数的最佳值。
我正在使用AIC / BIC / MDL类型的标准进行模型选择,该标准奖励具有低错误的模型但也惩罚具有高复杂性的模型(可以说,我们正在为这些数据寻求最简单但最有说服力的解释,a la Occam's剃须刀)。
继上述之后,这是我根据三个不同标准(两个要最小化,一个要最大化)得到的那种东西的一个例子:
在视觉上,您可以轻松地看到肘部形状,并且您可以在该区域的某处为参数选择一个值。问题是我正在为大量实验这样做,我需要一种无需干预即可找到此值的方法。
我的第一个直觉是尝试从拐角处以 45 度角画一条线并继续移动它直到它与曲线相交,但这说起来容易做起来难 :) 如果曲线有些倾斜,它也可能会错过感兴趣的区域。
关于如何实现这一点或更好的想法的任何想法?
以下是重现上述图表之一所需的样本:
编辑
我接受了Jonas给出的解决方案。基本上,对于p
曲线上的每个点,我们找到最大距离d
为:
r - 使用 nls 函数可视化的初始猜测
我正在尝试将由几个高斯钟组成的函数拟合到一些实验数据中。使用的方法是来自 R 的 nls 函数。但是很难得到足够好的初始猜测,使得该方法可以收敛。
是否可以在调用优化例程之前可视化初始猜测?
我正在处理的代码如下所示(我无法提供对数据文件的访问权限)。
r - 尝试使用 ggplot2 的 geom_smooth() 显示原始和拟合数据(nls + dnorm)
我正在探索一些数据,所以我想做的第一件事是尝试对其进行正态(高斯)分布。这是我第一次在 R 中尝试这个,所以我一步一步来。首先,我预先合并了我的数据:
由于我想要计数,我需要添加一个归一化因子 (N) 来扩大密度:
然后我为显示创建拟合数据,一切正常:
当我发现这个线程谈论使用 geom_smooth() 一步完成所有操作时,我感到很兴奋,但我无法让它工作:
这是我尝试的......以及我得到的:
该错误似乎表明它正在尝试适应观察到的变量counts,但这没有任何意义,而且如果我也为 counts 指定一个“起始”值,它可以预见会吓坏:
知道我做错了什么吗?当然,这不是世界末日,但步骤越少越好,你们总是为这些常见任务想出最优雅的解决方案。
提前致谢!
杰弗里
java - Java:如何在尽可能小的表面上绘制图像?
假设我有 256 张平均大小为 70x150 的图像(因此,大小可变)。而且我有一个Graphic
-instance(从具有给定大小的 BufferedImage 创建),我想在其上绘制图像。但我想在尽可能低的表面上绘制它们。所以,不是单纯的在一个格子里,而是真的在彼此不解。但是!:它们可能不会相互重叠。
也许这是只有人脑才能做到的事情。
值得一问,我认为......
在此先感谢,
马丁
例如:
matlab - MATLAB:多功能拟合
我有一个函数,三个指数的总和:
确切地:
其中 f1, f2, f3 是分数,每个 exp 有一个参数,称为 a1, a2 和 a3。
因此,将此函数拟合到实验数据会给出六个参数(f1、f2、f3、a1、a2、a3)。
注意
和
拟合完成了几个时滞(称为 t1、t2、t3....)。因此,对于每个时间延迟,都有一组六个参数。
参数 a1、a2 和 a3 以线性方式随时间延迟增加(a1(t1) < a1(t2) < a1(t3)... 等等)。每个时滞的分数都是相同的。
我需要的是 a1(t)、a2(t)、a3(t) 和分数的斜率。问题是,当我为每个时滞拟合函数时,我经常遇到 a1 和 a2 很好地上升(完美的线性拟合)但 a3 下降的情况。我也有分数的问题 - 我不能取每个分数的平均值,因为当我添加 f1(t) + f2(t) + f3(t) 时,它永远不会等于 1。
有没有(简单的)方法可以“一次”全部安装?怎么做?谢谢!
python - 正确使用 fmin_l_bfgs_b 来拟合模型参数
我有一些实验数据(对于 y、x、t_exp、m_exp),并希望使用受约束的多元 BFGS 方法找到该数据的“最佳”模型参数(A、B、C、D、E) 。参数 E 必须大于 0,其他不受约束。
几个问题:
- 我的模型公式应该
func
包括我的自变量x
还是应该从实验数据中提供x_exp
作为 的一部分*args
? - 当我运行上面的代码时,我得到一个错误
func() takes at least 6 arguments (3 given)
,我假设是 x,我的两个 *args ......我应该如何定义func
?
编辑:感谢@zephyr 的回答,我现在明白目标是最小化残差平方和,而不是实际函数。我得到了以下工作代码:
我不确定界限是否正常工作。当我为 E 指定 (0, None) 时,我得到一个运行标志 2,异常终止。如果我将其设置为 (1e-6, None),它运行良好,但选择 1e-6 作为 E。我是否正确指定了边界?
matlab - 将高斯拟合到特定数据(查找模型参数)
从上面的数据中,我想提取高斯函数公式。高斯函数公式为y=A*exp(-(x-τ)^2/σ^2)(A为幅度,τ为相位,σ为宽度)。从上面的数据中,我知道 A 是 13.7092(最大值-最小值),τ 是 47。但是,我不知道 σ。我已经将 σ 计算为标准偏差。但是值不合适。matlab中有没有提取函数公式的函数?我怎么解决这个问题?
algorithm - Mathematica 在 NonlinearModelFit[] 中使用什么拟合算法?
我需要知道它使用的算法,因为我必须编写自己的程序。Levenberg-Marquardt 并没有真正做同样的事情。是否有一个算法列表,Mathematica 可以从中选择用于特定问题的算法?
谢谢你。
r - R 非线性最小二乘 (nls) 模型拟合
我正在尝试将数据的 G 函数中的信息拟合到以下数学模式: y = A / ((1 + (B^2)*(x^2))^((C+1)/2 ))。该图的形状可以在这里看到:
这是我一直在做的一个基本示例:
“Gest”是“spatstat”库中的一个函数。它是 G 函数或最近邻函数,它显示了独立轴上粒子之间的距离,以及在从属轴上找到最近邻粒子的概率。因此,它从 y=0 开始并在 y=1 处达到饱和点。
如果您绘制 simdat.Gest,您会注意到曲线是“s”形的,这意味着它从 y = 0 开始并在 y = 1 结束。因此,我反转了向量 Gvalues,它是依赖的变量。因此,信息处于适合上述模型的正确方向。
您可能还注意到我已经自动设置了 A = 1。这是因为 G(r) 总是在 1 处饱和,所以我没有费心将它保留在公式中。
我的问题是我不断收到错误。对于上面的示例,我收到此错误:
我也遇到了这个错误:
我不知道第一个错误来自哪里。然而,我认为第二个发生是因为我没有为 B 和 C 选择合适的起始值。
我希望有人可以帮助我找出第一个错误来自哪里。另外,选择起始值以避免第二个错误的最有效方法是什么?
谢谢!