在 MATLAB 中估计直方图的偏度

Estimating skewness of histogram in MATLAB

我可以在 MATLAB 中做什么测试来测试直方图的分布?例如,在给定的一组直方图中,我只对 1、2、3、5 和 7(从左到右,从上到下)感兴趣,因为它们分布较少。我怎样才能获得一个值来判断直方图是否呈正偏态?

使用 Chi-Squared 测试可能是可行的,但我不确定 MATLAB 代码是什么。

可以使用standard definition of skewness。换句话说,您可以使用:

您计算数据的均值并使用上述等式计算偏度。正负偏度是这样的:

来源:Wikipedia

因此,值越大,正偏度越大。值越负,负偏度越大。


现在要计算直方图数据的平均值,非常简单。您只需对直方图条目进行加权求和,然后除以条目总数。鉴于您的直方图存储在 h 中,直方图的 bin 中心存储在 x 中,您将执行以下操作。我在这里要做的是假设你有从 0 到 N-1 的垃圾箱,其中 N 是直方图中垃圾箱的总数......从你的图片来看:

x = 0:numel(h)-1; %// Judging from your pictures
num_entries = sum(h(:));
mu = sum(h.*x) / num_entries;
skew = ((1/num_entries)*(sum((h.*x - mu).^3))) / ...
       ((1/(num_entries-1))*(sum((h.*x - mu).^2)))^(3/2);

skew 将包含遵循该公式的直方图的偏度数值度量。因此,在您的问题陈述中,您需要寻找正数且较大的偏度数。我无法真正评论您应该查看的阈值,但寻找比您拥有的大多数直方图大得多的正数。