一条曲线“平直度”的数学指标是什么?

4
我目前正在从事一个计算机科学项目,需要评估图表。这些图表是在x-y坐标系中给出的简单线条,由CSV文件提供。曲线越平缓,对我来说就越好。现在我正在寻找衡量这些曲线“平坦度”的指标。
我的第一个想法是计算函数的一阶导数,然后计算两个点之间的平均值。如果这个值接近于0,那么这个函数就相当平坦。
这是一个好主意吗?有更好的解决方案吗?
编辑: 这里有一张图片作为示例。哪一条曲线更平坦,x1还是x2?

1
“Flat” 是什么意思?线 y = 100x 被认为是平的吗?还是只有线 y = 5 被认为是平的? - cobbal
哦,抱歉。我的意思是像y=5这样的平坦(而不是像y=100x这样)。 - Thomas Uhrig
你可以发布一份你的文件样本吗? - Anand Sunderraman
这是一个示例图片:链接。现在问题是:x1和x2之间哪条曲线更平缓? - Thomas Uhrig
1
有很多方法可以衡量平坦度,因此您需要严格定义您想要的内容。考虑y=0.001sin(1000000x)。这个函数上下波动非常频繁,但振幅只有0.001。那么一个上升10然后立即下降10,但其余时间是水平的函数怎么样?或者像y=x这样在不同高度开始和结束的函数呢? - JohnPS
您的图片出现了404错误,当然。 - kevinkayaks
6个回答

8

您可以考虑使用标准差作为距离完全平坦线的度量。首先进行简单的线性回归,找到理想拟合的平坦线,然后计算残差的标准差。


1
进行回归分析似乎是解决这个问题的好方法。根据目标,OP可以考虑进行Chebyshev(最小化最大误差)拟合,而不是最小二乘法(最小化平均误差)拟合。 - nsanders
好的,到目前为止我同意。但是为什么我需要线性回归?对我来说,完美的线条应该是类似于y=n(其中n为0,1,2...)的东西。我不能轻松地使用y=0来使每个图表具有可比性吗? - Thomas Uhrig
1
当然,如果您只想要水平的平坦线,您可以放弃线性回归,直接计算标准差。在这种情况下,您实际上是在进行斜率固定为零的线性回归(相当于计算值的平均值)。 - thiton

0

统计分布的峰度被称为“峰度”。

峰度 = [[E[(mu-x)^4]]/[E[(mu-x)^2]]^2]-3

其中,mu是总体x的平均值,E[y]是y的期望值。

由于这通常与概率函数一起使用,建议您将曲线上的所有值除以其下面的面积。


0
如果所有值都是正数,您可以尝试计算积分。基本上就是线下面的表面。
积分越低,越好。就像你需要的一样。
如果您也期望负值,可以在改变符号后基本上做同样的事情。

好的,如果我理解正确,您想要比较线性函数?那么像 y=4x+3 这样的函数比 y=5x+3 更平缓?那 y=4x+3 和 y=4x+4 呢? - siddian
y=4x+3等于y=4x+4。我只对两点之间的部分线段感兴趣,而不是整个函数。 - Thomas Uhrig
1
我刚刚看了你的例子。我同意@thiton的观点;计算每个数据点到回归线距离的标准差听起来不错。 - siddian

0
如果变化速度对答案很重要(即许多小的Zig-Zag被认为比逐渐上升更平),自相关函数的斜率可能是有趣的。

0
比较 max(abs(d)),其中 d 是曲线的(数值)导数。这将告诉您曲线相对于平坦曲线(y = CONSTANT)有多陡峭,但不会告诉您离平坦曲线有多远。

-1

1.首先应用线性回归找到最理想的拟合直线 2.测量残差的最小二乘。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接