質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top