【发布时间】:2014-09-05 04:50:31
【问题描述】:
我使用 MATLAB 中的 histfit 函数生成了一个符合正态分布的直方图,并包含如下误差线:
h = histfit(data);
[nelements,bincenters] = hist(data);
hold on
err = sqrt(nelements);
errorbar( bincenters, nelements, err);
hold off
其中“data”是用于进行分布的 m 个数据点的向量,“dataerror”是每个点上的误差向量。源自histfit 的正态分布导致标准偏差可能与“dataerror”中的平均误差条不同。我想通过绘制一个单独的正态分布来直观地检查这种差异,该正态分布具有avg = mean(data); 的平均值和我的已知错误stdev = mean(dataerrors); 给出的标准偏差。我通过以下方式做到这一点:
x = sort(data);
y = exp(- 0.5 * ((x - avg) / stdev) .^ 2) / (stdev * sqrt(2 * pi));
plot(x, y,'k')
当我这样做时,平均值和标准差看起来很接近,但分布的高度不匹配,因为 histfit 分布没有标准化,但第二个分布是。我可以通过发明比例因子或y 点来进行临时校正,但我需要将其自动化,因此需要知道高度并相应地进行缩放。
如果我能以某种方式从histfit 测量分布的高度,我可以缩放第二个分布以匹配。或者,我可以以一种允许我输入已知均值和标准差的方式拟合第二个分布,然后拟合分布的高度。
理想的方法是将第二个正态分布分别拟合到数据中。这样,高度可能不同,但是对于分布的尾部拟合会更好。
所以问题是:
如何缩放这些分布以匹配高度? 或 如何以类似于 histfit 的方式分别拟合具有已知均值和标准偏差的高斯分布(使用高度作为参数)?
【问题讨论】:
标签: matlab statistics curve-fitting gaussian normal-distribution