Энтропия распределения вероятностей в Excel

У меня есть матрица в excel. Мне нужно нормализовать строки, а затем вычислить энтропию каждой строки (рассматривая ее как распределение вероятности).

Например, предположим, что моя матрица:

2 0 3 5 0 1 0 0 1 0 3 2 

После нормализации строки матрица становится:

 0.2000 0 0.3000 0.5000 0 1.0000 0 0 0.1667 0 0.5000 0.3333 

Предполагая, что каждая строка является распределением вероятности, энтропия каждой строки:

 1.0297 0 1.0114 

Я хочу вычислить значения энтропии выше, не производя промежуточную матрицу с нормированной строкой.

Можно ли это сделать в Excel?

Примечание. Энтропия распределения вероятности определяется как:

 H(X) = sum over all x {-p(x) * log(p(x))} 

Если у вас есть исходная матрица в A1: D3, попробуйте эту формулу в F1

=SUM(-A1:D1/SUM(A1:D1)*IF(A1:D1<>0,LN(A1:D1/SUM(A1:D1))))

подтвержденный CTRL + SHIFT + ENTER (так что фигурные скобки появляются вокруг формулы в строке формулы)

копировать в F3

Предполагая, что ваша энтропия определяется x ln x, я бы предложил следующее:

  1. Создайте матрицу, которая вычисляет ln (x) для каждой исходной ячейки: IF (X> 0; LN (X); 0)
  2. Создайте вторую матрицу, которая умножает x и ln (x) матрицу
  3. Вычислить суммы строк: SUM (A1: A4)

Однако я не знаю, как это сделать без промежуточных матриц. Зачем вам это нужно?

Давайте будем гением компьютера.