Quelle est la différence entre d3.échelle.quantifier() et d3.échelle.quantile ()?

D'après les docs, les définitions sont:

quantification

..une variante de echelles avec un discret plutôt que continu. Le domaine d'entrée est encore continu, et divisé en segments uniformes basés sur le nombre de valeurs dans (la cardinalité de) la gamme de sortie.

quantile

...carte un domaine d'entrée à un intervalle discret. Bien que le domaine d'entrée soit continu et que l'échelle accepte valeur d'entrée raisonnable, le domaine d'entrée est spécifié comme un ensemble discret de valeurs. Le nombre de valeurs dans (la cardinalité de) l'intervalle de sortie détermine le nombre de quantiles qui seront calculés à partir du domaine d'entrée

Ces deux semblent carte d'entrée continu domaines à un ensemble de valeurs discrètes. Quelqu'un peut-il éclairer la différence?

16
demandé sur jkschneider 2013-10-09 01:42:11

4 réponses

Cartes À Colorier a une bonne explication visuelle.

Quantifier:

Quantile:

Sur le nuage de points, les barres horizontales sont maintenant verticales car les couleurs de chaque endroit sont déterminées par son rang et non par sa valeur.

voici un extrait de code dans D3 v4 qui montre des résultats différents dans quantize et quantile.

const purples = [
  'purple1',
  'purple2',
  'purple3',
  'purple4',
  'purple5'
]
const dataset = [1, 1, 1, 1, 2, 3, 4, 5] // try [1, 2, 3, 4, 5] as well
const quantize = d3.scaleQuantize()
  .domain(d3.extent(dataset)) // pass the min and max of the dataset
  .range(purples)
const quantile = d3.scaleQuantile()
  .domain(dataset) // pass the entire dataset
  .range(purples)
console.log(quantize(3)) // purples[3]
console.log(quantile(3)) // purples[4]
4
répondu Nobu 2017-07-20 07:42:53

En termes généraux, la différence est similaire à la différence entre la moyenne et la médiane.

la différence n'est vraiment apparente que lorsque le nombre de valeurs dans le domaine d'entrée est supérieur au nombre de valeurs dans le domaine de sortie. Illustré par un exemple.

Pour les quantize échelle, la gamme d'entrée est divisée en segments uniformes selon la gamme de sortie. C'est le nombre de valeurs dans le domaine n'est pas vraiment d'importance. Il retourne donc 1 pour 0.2, puisque 0.2 est plus proche de 1 que 100.

quantile l'échelle est basée sur les quantiles du domaine d'entrée et est donc affectée par le nombre de valeurs qu'il contient. Le nombre de valeurs dans le domaine de sortie détermine seulement combien de quantiles sont calculés. Par leur nature même, les quantiles reflètent la liste réelle des valeurs plutôt que seulement la gamme. Ainsi, un input de 0.2 renvoie 100 car le quantile correspondant est plus proche de 100.

18
répondu Lars Kotthoff 2013-10-09 12:42:36

j'avais moi-même cette question. J'ai donc fait un visualisation pour vous aider à comprendre comment ils fonctionnent.

Understanding d3 scale quantize / quantile

7
répondu Dave 2017-06-17 23:22:42

la différence est, autant que je puisse dire, tout simplement que les quantiles statistiques sont finis, égaux, et uniformément répartis blocs discrets/seaux dans lesquels vos résultats tombent tout simplement. La différence étant qu'une échelle quantifiée est une fonction continue basée sur votre entrée discrète.

fondamentalement: quantize permet l'interpolation et l'extrapolation, où comme quantile force la valeur dans le sous-ensemble.

ainsi, par exemple, si la note calculée d'un étudiant est de 81,7% dans une échelle quantifiée, une échelle de quantiles de percentiles indiquerait simplement qu'il s'agit du 81e percentile. Il n'y a pas de place pour la flexibilité.

5
répondu DRobinson 2013-10-09 03:59:52