使用 SameTest 时熵结果是否依赖于顺序

发布于 2024-11-14 17:27:23 字数 370 浏览 4 评论 0原文

使用 SameTest 选项时,Mathematica 的 Entropy 函数与顺序相关。

即:

Entropy[RandomSample[Range[11]], SameTest->(Abs[#1-#2]>1&) ]

多次会给出不同的结果。

我认为这是因为 Entropy[] 实际上是对列表进行 Union 化,但是,与 Union 不同,它实际上正在替换其中之一SameTest 值与另一个值相同,并且此替换是顺序敏感的。

这是一个错误还是预期的行为?

Mathematica's Entropy function is order-dependent when using the SameTest option.

That is:

Entropy[RandomSample[Range[11]], SameTest->(Abs[#1-#2]>1&) ]

will give different results many times.

I assume that this is because Entropy[] is in fact Union-izing the list, but, unlike Union, it is actually replacing one of the SameTest values with the other, and this replacement is order sensitive.

Is this a bug or is it the expected behaviour?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌伤ぢ 2024-11-21 17:27:23

您可以使用 Trace[ ] 看到 Entropy[ ] 函数最终使用 Tally[ ] 来计算每个状态的频率(本案)。

例如,

 Entropy[{1,2,3,4}, SameTest->(Abs[#1-#2]>1&)]  

调用

 Tally[{1,2,3,4}, SameTest->(Abs[#1-#2]>1&)]  

给出

 -> {{1, 3}, {2, 1}}

,因为它将 {1,3,4} 和 {2} 分组,

但是如果你要求

 Tally[{2,1,3,4}, SameTest->(Abs[#1-#2]>1&)]  

你得到

  -> {{2, 2}, {1, 2}}

,因为它分组 {2,4} 和 {1,3}

导致不同的状态分布(2, 2) 与之前的 (3,1) 相比,因此具有不同的熵值。

我认为问题的出现是因为您的 SameTest 没有将域划分为两个等价类,正如它应该的那样。

编辑

只需重新表述最后一句话:

Mma 假设

a === b && b === c  Implies a === c  

您的情况并非如此。例如

2 === 4 && 4 === 1  but  2 !=== 1

You can see using Trace[ ] that the Entropy[ ] function ends up using Tally[ ] for counting the frequency of each state (numbers in this case).

So for example

 Entropy[{1,2,3,4}, SameTest->(Abs[#1-#2]>1&)]  

calls

 Tally[{1,2,3,4}, SameTest->(Abs[#1-#2]>1&)]  

which gives

 -> {{1, 3}, {2, 1}}

because it groups {1,3,4} and {2}

But if you ask for

 Tally[{2,1,3,4}, SameTest->(Abs[#1-#2]>1&)]  

you get

  -> {{2, 2}, {1, 2}}

because it groups {2,4} and {1,3}

Resulting in a different states distribution (2,2) vs (3,1) before, and hence in a different entropy value.

I think the problem arises because your SameTest is not partitioning the domain in two equivalence classes, as it should.

Edit

Just reformulating the last sentence:

Mma assumes that

a === b && b === c  Implies a === c  

which is not true in your case. For example

2 === 4 && 4 === 1  but  2 !=== 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文