使用 SameTest 时熵结果是否依赖于顺序
使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
Trace[ ]
看到Entropy[ ]
函数最终使用Tally[ ]
来计算每个状态的频率(本案)。例如,
调用
给出
,因为它将 {1,3,4} 和 {2} 分组,
但是如果你要求
你得到
,因为它分组 {2,4} 和 {1,3}
导致不同的状态分布(2, 2) 与之前的 (3,1) 相比,因此具有不同的熵值。
我认为问题的出现是因为您的 SameTest 没有将域划分为两个等价类,正如它应该的那样。
编辑
只需重新表述最后一句话:
Mma 假设
您的情况并非如此。例如
You can see using
Trace[ ]
that theEntropy[ ]
function ends up usingTally[ ]
for counting the frequency of each state (numbers in this case).So for example
calls
which gives
because it groups {1,3,4} and {2}
But if you ask for
you get
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
which is not true in your case. For example