Pregunta

Mathematica Entropy la función depende del orden cuando se usa el SameTest opción.

Eso es:

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

dará diferentes resultados muchas veces.

Supongo que esto es porque Entropy[] es de hecho Union-inge la lista, pero a diferencia de Union, en realidad está reemplazando uno de los SameTest valores con el otro, y este reemplazo es sensible al orden.

¿Es este un error o es el comportamiento esperado?

¿Fue útil?

Solución

Puedes ver usando Trace[ ] que el Entropy[ ] La función termina usando Tally[ ] para contar la frecuencia de cada estado (números en este caso).

Así por ejemplo

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

llamadas

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

lo que da

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

Porque se agrupa {1,3,4} y {2}

Pero si pides

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

usted obtiene

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

Porque se agrupa {2,4} y {1,3}

Resultando en una distribución de estados diferente (2,2) vs (3,1) antes y, por lo tanto, en un valor de entropía diferente.

Creo que el problema surge porque su Sametest no está dividiendo el dominio en dos clases de equivalencia, como debería.

Editar

Solo reformulando la última oración:

MMA asume que

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

Lo cual no es cierto en su caso. Por ejemplo

2 === 4 && 4 === 1  but  2 !=== 1
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top