Excel中概率分布的熵

时间:2012-09-21 17:52:57

标签: excel excel-formula probability entropy

我在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))}

2 个答案:

答案 0 :(得分:5)

如果A1中有原始矩阵:D3在F1中尝试此公式

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

使用CTRL + SHIFT + ENTER确认(以便在公式栏中的公式周围显示花括号)

复制到F3

答案 1 :(得分:1)

假设你的熵是由x ln x定义的,我建议如下:

  1. 创建一个矩阵,为每个原始单元格计算ln(x):IF(X> 0; LN(X); 0)
  2. 创建第二个矩阵,将x和ln(x)矩阵相乘
  3. 计算行总和:SUM(A1:A4)
  4. 但是,如果没有中间矩阵,我不知道如何做到这一点。你为什么要这个?