Question

La fonction Entropy de Mathematica dépend de l'ordre lors de l'utilisation de l'option SameTest.

C'est:

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

donnera des résultats différents à plusieurs reprises.

Je suppose que cela est dû Entropy[] est en fait Union-izing la liste, mais, contrairement à Union, il est en fait de remplacer l'une des valeurs de SameTest avec l'autre, et ce remplacement est sensible ordre.

Est-ce un bug ou est-ce le comportement attendu?

Était-ce utile?

La solution

Vous pouvez voir à l'aide Trace[ ] que la fonction Entropy[ ] finit par utiliser Tally[ ] pour compter la fréquence de chaque état (nombre dans ce cas).

Ainsi, par exemple

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

appels

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

qui donne

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

car il regroupe {1,3,4} et {2}

Mais si vous demandez

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

vous

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

car il regroupe {2,4} et {1,3}

résultant en une répartition différente des états (2,2) vs (3,1) avant et, par conséquent une valeur d'entropie différent.

Je pense que le problème se pose parce que votre SameTest n'est pas le partitionnement du domaine dans deux classes d'équivalence, comme il se doit.

Modifier

Juste reformulant la dernière phrase:

Mma suppose que

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

ce qui est faux dans votre cas. Par exemple

2 === 4 && 4 === 1  but  2 !=== 1
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top