Оценка энтропии с использованием гистограммы нормальных данных по сравнению с прямой формулой (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
полезно.