Mesurer l'uniformité d'une distribution en semaine

11

J'ai un problème similaire à la question posée ici:

Comment mesurer la non-uniformité d'une distribution?

J'ai un ensemble de distributions de probabilité sur les jours de la semaine. Je veux mesurer la proximité de chaque distribution (1 / 7,1 / 7, ..., 1/7).

Pour le moment, j'utilise une réponse à la question ci-dessus; une norme L2, qui a la valeur 1 lorsque la distribution a la masse 1 pour l'un des jours, et est minimisée pour (1 / 7,1 / 7, ..., 1/7). Je redimensionne linéairement ceci de sorte qu'il se situe entre 0 et 1, puis je le retourne de sorte que 0 signifie parfaitement non uniforme et 1 signifie parfaitement uniforme.

Cela fonctionne assez bien, mais j'ai un problème avec cela; il traite chaque jour de la semaine également comme une dimension dans l'espace 7-Dim, donc il ne tient pas compte de la proximité des jours; en d'autres termes, il donne le même score à (1 / 2,1 / 2,0,0,0,0,0) et (1 / 2,0,0,1 / 2,0,0,0) pair bien que, dans un certain sens, ce dernier soit plus "étalé" et uniforme et devrait idéalement obtenir un score plus élevé. Il y a évidemment la complication supplémentaire que l'ordre des jours est circulaire.

Comment puis-je modifier cette heuristique pour tenir compte de la proximité des jours?

EBartrum
la source
1
Votre exemple de (1 / 2,1 / 2,0,0,0,0,0) et (1 / 2,0,0,1 / 2,0,0,0) n'est pas uniforme de la même manière , cela ne devrait donc pas avoir d'importance si vous souhaitez uniquement tester la non-uniformité. Alors peut-être que vous voulez tester quelque chose de plus qui n'a pas été indiqué explicitement dans votre question? En fait, l' entropie est une mesure d'uniformité.
Tim
Merci Tim, j'ai essayé d'utiliser Entropy mais j'ai trouvé que l'heuristique mentionnée ci-dessus fonctionnait mieux pour mes besoins. Je ne sais pas comment appeler la propriété d'une distribution de probabilités sur les jours de semaine qui m'intéresse, sauf qu'elle devrait résumer "l'étalement" des probabilités sur la semaine.
EBartrum

Réponses:

15

La distance du moteur terrestre , également connue sous le nom de métrique de Wasserstein, mesure la distance entre deux histogrammes. Essentiellement, il considère un histogramme comme un certain nombre de tas de saleté et évalue ensuite la quantité de saleté dont on a besoin pour se déplacer et la distance (!) Pour transformer cet histogramme en l'autre. Vous mesureriez la distance entre votre distribution et une distribution uniforme au cours des jours de la semaine.

Cela explique bien sûr la proximité des jours - il est plus facile de déplacer la "saleté" du lundi au mardi que du lundi au jeudi, donc (1 / 2,0,0,1 / 2,0,0,0) aurait un distance du moteur terrestre inférieure à la distribution uniforme par rapport à un histogramme concentré le lundi et le mardi.

Ce que cela ne fait pas , c'est considérer la "circularité" de la semaine, c'est-à-dire que le samedi et le dimanche sont aussi proches que le dimanche et le lundi. Pour cela, vous devez rechercher une distance de déplacement de la terre définie sur les distributions de masse de probabilité circulaire . Cela devrait être possible en utilisant une approche d'optimisation appropriée.


EDIT: Dans R, le emdpackage calcule les distances entre les histogrammes du moteur de la Terre.

Vous pouvez résoudre le problème de la "circularité" de manière assez simple (bien que ponctuelle).

  • d1
  • d2
  • d3
  • ...
  • d1,,d7

Cela prend en charge la circularité au détriment de quelques calculs supplémentaires.

di

Cependant, je considérerais toujours cela comme un moyen potentiellement utile pour au moins considérer la circularité d'une certaine manière - certainement mieux que simplement utiliser un seul histogramme et définir la semaine comme allant du dimanche au samedi ou d'une autre manière arbitraire. De plus, bien que certains liens ci-dessus révèlent des implémentations pour la distance circulaire du moteur de terre, je n'en connais pas pour R, qui est probablement le langage le plus utilisé ici.

Stephan Kolassa
la source
3
d1,,d7di
@JiK: bon point, et celui qui m'est également venu à l'esprit après avoir perdu la connectivité hier. J'ai clarifié ma réponse pour souligner qu'il s'agit d'une distance de piratage et non d'une véritable circulation circulaire.
Stephan Kolassa
1
Merci beaucoup, en fait, j'ai réussi à implémenter une distance circulaire du moteur de terre dans R avec le package emd et la fonction emd2d, en définissant ma propre fonction de distance, donc je n'ai pas eu besoin d'utiliser le hack que vous avez mentionné. Ceci est exactement ce que je cherchais! Une autre question insignifiante: comment dois-je l'appeler? Comme Tim l'a dit plus haut, je ne devrais pas appeler cette uniformité. Quel serait un nom approprié pour cette heuristique?
EBartrum
1
L2