假设我们已经绘制了标准正态分布的n=10000
个样本。
现在我想用直方图计算其熵来计算概率。
1)计算概率(例如使用matlab)
[p,x] = hist(samples,binnumbers);
area = (x(2)-x(1))*sum(p);
p = p/area;
(由于某些规则确定了binnumbers)
2)估计熵
H = -sum(p.*log2(p))
给出58.6488
现在我使用直接公式来计算正常数据的熵
H = 0.5*log2(2*pi*exp(1)) = 2.0471
使用直方图+熵公式时我做错了什么? 非常感谢您的帮助!!
答案 0 :(得分:3)
您缺少总和中的dp
字词
dp = (x(2)-x(1));
area = sum(p)*dp;
H = -sum( (p*dp) * log2(p) );
这应该会让你足够近......
PS,
当你带log2(p)
时要小心,有时你可能会有空箱。您可能会发现nansum
很有用。