使用matlab计算第一个峰下的面积

问题描述 投票:0回答:3

我有一些严重的直方图数据,这些数据构成了一系列的峰。我需要找到第一个区域下方的区域,因此我正计划进行样条拟合并采用导数来找到相关的固定点(即第一槽)。但是,我不确定如何采用拟合数据的导数(或实际上如何拟合数据)。

matlab curve-fitting derivative
3个回答
2
投票

[如果您有原始数据,请使用混合的高斯而不是直方图作为密度近似值。这样,估计的密度将成为一个平滑函数(高斯密度的线性组合),您可以轻松找到固定点并计算任意给定间隔上的质量。一种简单易编程的计算混合参数的方法是所谓的EM(估计最大化)算法。搜索“高斯混合”和/或“ EM”应该会带来很多成功,也许还可以使用Matlab代码。

如果您没有原始数据,我还有其他想法。


1
投票

@@ Robert Dodier是正确的,但似乎不了解MatLab内置的gmdistribution。

如果您将高斯混合拟合到数据中,那么您要做的就是确定哪个分量的权重最大,并读取该分量的均值和方差。

样条平滑具有偏差问题。它还提供了非物理结果,例如负概率密度。 GMM具有更好的“基础”。

现在,我个人喜欢使用ecdf并适合cdf分析格式。这为我提供了最佳的分箱(在图像中,我可以大大提高计算速度),并减少了中心噪声的影响。

[1] http://www.mathworks.com/help/stats/gmdistribution.fit.html
[2] http://www.mathworks.com/help/stats/ecdf.html
[3] http://www.mathworks.com/help/curvefit/custom-nonlinear-models.html

0
投票

因此,最初混合高斯方法看起来确实很有希望。问题在于,除了噪声数据外,信号源实际上也分为几种不同的情况,因此我经常发现对一个数据集进行处理的高斯组合会(严重)在另一个数据集上发生故障。

解决这个问题是可能的,但是更通用的解决方案将漂移/偏置引入了近似值,这取决于噪声和基础情况而产生了不一致的影响。

经过一段时间后,我选择尝试使用matlab的curvedspline。最终提供了一种更好的方法,然后我将其与一些多维聚类分析相结合,以找出脊椎配件明显出现问题的位置。使用此方法意味着我可以丢弃这些离群值,而不是适合不良数据(即与批量数据存在严重偏差的数据)。具体来说,我使用领域知识来解决案例,根据定义,离群值是拟合差而不是样本方差的结果。实际上,这只会导致每个样本丢弃几个数据点(20个中的1-2个),最后得到非常干净的结果。

© www.soinside.com 2019 - 2024. All rights reserved.