图片缩略图

SLM—形状语言建模

版本1.14(668KB)由 约翰·德雷科
基于形状基元的最小二乘样条建模

25K下载

更新2017年4月16日

查看许可证

如果你只能下载一个曲线拟合工具到你的笔记本电脑在荒岛上,这应该是它。
多年来,我一直建议人们使用最小二乘样条来进行曲线拟合,但有一个警告。样条提供了巨大的灵活性来构建任何形状或形式的曲线。它们可以很好地匹配几乎任何你扔给它们的数据集。这种灵活性有时也是他们的弱点。与多项式模型一样,如果你不小心的话,样条曲线也可能过于灵活。诀窍是利用你对所研究系统的知识来解决这个问题。
作为一名科学家、工程师、数据分析员等,您通常对希望建模的过程有一定的了解。有时这些知识来自物理原理,有时来自经验,有时这些知识仅仅来自于观察数据图。不管源代码是什么,我们通常都希望在建模工作中加入流程的先验知识。这也许是使用非线性回归工具的最大原因,我认为这是最糟糕的原因。如果只是因为数据是单调的,并且数据似乎具有该属性,才将sigmoid函数拟合到数据中,那么您选择了错误的建模工具。(如果您安装的是sigmoid,因为这是适合您的流程的模型,那么请继续安装sigmoid。)
我认为,当你只需要一个单调曲线拟合的时候,最合适的工具是最小二乘样条,但样条是被适当约束的,它有你知道的基本形状。这是一种非常贝叶斯的建模方法,在我的经验中也是非常有用的。
这里提供的SLM工具为您提供了一个易于使用的界面,可以从数据构建无限多的曲线类型。SLM代表形状语言建模。其思想是使用一组形状基本体提供曲线拟合的处方。如果曲线是单调的,则将该信息构建到模型中,以便可以估计最适合数据的单调曲线。你会发现,一旦你使用了一组合适的约束,你会想知道为什么你过去使用过非线性回归!!!
例如,这个文件的截图是为以下数据生成的:

X = (sort(rand(1100)) - 0.5)*pi;
y = sin (x)。^ 5 + randn(大小(x)) / 10;

slm = slmengine (x, y,“阴谋”,“对”,“结”,10日,“增加”,“对”,…
“leftslope”,0,' rightslope ', 0)
slm=
表格:“slm”
学位:3
结[10 x1双):
系数:[10x2双倍]
处方:[1x1结构]
x (x1 100双):
y:[100x1双精度]

你可以用slmeval来计算样条或它的导数。

slm slmeval (1.3)
ans =
0.79491

使用plotslm绘制这些样条曲线。

plotslm(slm)

plotslm函数很好,因为它是一个简单的gui,允许您绘制曲线、残差、其导数或积分。您还可以计算样条曲线的各种参数,例如间隔上的最大函数值、最小或最大坡度等。

slmpar (slm maxslope)
ans =
1.5481

您可以使用属性/值对接口将所有这些信息提供给slmengine。slmset调解此交互,因此您可以使用它创建将要使用的属性集。默认属性集及其值由slmset提供。有关函数的形状、坡度、曲率、值等的所有内容都可以通过一个简单的命令进行控制。SLMENGINE还提供生成各种顺序的样条曲线以及自由节点样条曲线的功能。

有关正在使用的SLM工具的完整示例,请参阅随本次提交一起发布的教程。还有一篇关于曲线拟合的形状语言建模概念的小论文。

SLM工具包在未来的某个时候将得到相当大的改进。我将添加一个图形界面。此外,如果我错过了任何自然形状的原语,请让我知道。虽然我已经尽力做到包容,但肯定有一些东西我错过了。如果我能把你最喜欢的添加到上面的列表中,我会尽量这样做的。

最后,SLM工具需要优化工具箱来解决各种估计问题。

引用为

约翰·德里科(2021年)。SLM—形状语言建模(//www.tianjin-qmedu.com/matlabcentral/fileexchange/24443-slm-shape-language-modeling),MATLAB中央文件交换。恢复.

SLMtools/html/