Les résultats sont-Entropy en fonction de l'ordre lors de l'utilisation SameTest
-
26-10-2019 - |
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?
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