Оценка энтропии с использованием гистограммы нормальных данных по сравнению с прямой формулой (matlab)

Давайте предположим, что мы нарисовали 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

Что я делаю неправильно, используя формулу гистограммы + энтропия? Большое спасибо за любую помощь!

1 ответ

Решение

Вы скучаете по dp срок в сумме

dp = (x(2)-x(1));
area = sum(p)*dp;
H = -sum( (p*dp) * log2(p) );

Это должно приблизить вас достаточно...

PS,
будьте осторожны, когда вы берете log2(p) иногда у вас могут быть пустые контейнеры. Вы можете найти nansum полезно.

Другие вопросы по тегам