我有一个名为Area的数组,它包含一组值。 数组的直方图看起来像
在这种情况下,箱宽度为60。我想在这里的两座山峰上安装两位高斯(即使它不太合适)。
所以我用过:
options = statset('Display','final');
obj = gmdistribution.fit(area,2,'Options',options);
gausspdf = pdf(obj, xaxis);
A = sum(gausspdf);
gausspdf = gausspdf/A;
但是当我尝试绘制两个拟合高斯时,得到的曲线看起来像这样:
我很困惑,因为情节中应该出现两个峰值?
答案 0 :(得分:1)
gmdistribution.fit方法根据最大似然准则拟合数据;也就是说,它试图找到最大化给定数据的可能性的参数。它不一定适合您所看到或期望的视觉效果。尽管如此,算法仍有可能收敛到“坏”的情况。当地最低限度您可以尝试根据您想要获得的内容设置初始条件,实际上是帮助'算法收敛到期望的结果。您可以使用fit方法的Start
选项执行此操作,这使您可以初始猜测,在这种情况下,您应该尝试从柱状图中估计参数,或者为每个数据样本估计初始组件索引。有关详细信息,请参阅documentation。
答案 1 :(得分:0)
我认为你的峰太近了,功能无法区分它们。所以也许您应该更改gmdistribution的选项或首先对数据应用非线性函数,以便在直方图中获得更多单独的峰值。