4

不久前,我发布了一个关于算法以对数据集的一部分进行多项式拟合的问题,并收到了一些建议来做我想做的事。但是我现在面临另一个问题,我尝试应用答案中提出的想法。我的目标是找到数据集的最佳线性拟合,其中只有一部分是线性的。

这是我必须做的一个例子:数据集

我们有这两个数据集,我必须对虚线左侧数据的线性部分做一个线性趋势。用红色表示,我们有理想的数据集,从开始到虚线都有一个线性部分。在蓝色部分,我们有一个“有问题的”数据集,它有一个平台期。粗体部分是我必须用来对数据进行线性拟合的部分。

我的问题是我试图按照上面链接的问题中提到的那样做:我找到了平滑数据的二阶导数,并查看它何时“不够接近”为 0。但这是我对有问题的数据集的结果(第一张图片)和理想数据集(第二张图片):

在此处输入图像描述 在此处输入图像描述

(对不起质量,我不知道为什么这么模糊)在两张图像上,我绘制了一阶导数,红色绘制了二阶导数。在第一张图像上,我们看到了二阶导数值的峰值。但问题是峰值不是非常“高”,因此很难建立一个阈值来判断集合是否是线性的......相反,一阶导数的峰值非常高,使得它很容易在视觉上看到。

我认为计算一阶导数的平均值并查看该值何时与平均值相差太大就足够了......但是当我取一阶导数的平均值以查看值与平均值不同,由于峰值存在某种偏移。

如何删除此偏移量以便仅获取右侧数据的平均值(在图像 1 上看到的不连续性左侧的数据可能是非线性的或线性的,但具有与值不同的值对!)的高峰有效?

4

1 回答 1

4

操作员(如mean您所见)对异常值(峰值)非常敏感。您可能希望使用更稳健的估计量,例如median值的 或 x-percentile(这应该更适合您的情况)。

于 2013-07-15T11:19:42.240 回答