Sametestを使用する場合、エントロピー結果は順序依存性です
-
26-10-2019 - |
質問
Mathematica's Entropy
機能を使用すると、関数は順序に依存します SameTest
オプション。
あれは:
Entropy[RandomSample[Range[11]], SameTest->(Abs[#1-#2]>1&) ]
何度もさまざまな結果が得られます。
私はこれがなぜならだと思います Entropy[]
実際、です Union
- リストを特定しますが、とは異なります Union
, 、実際にはその1つを置き換えています SameTest
他の値との値、およびこの代替品は秩序に敏感です。
これはバグですか、それとも予想される動作ですか?
解決
使用することができます 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が2つの等価クラスでドメインを分割していないため、問題は発生したと思います。
編集
最後の文を再定式化するだけです:
MMAはそれを想定しています
a === b && b === c Implies a === c
あなたの場合は真実ではありません。例えば
2 === 4 && 4 === 1 but 2 !=== 1
所属していません StackOverflow