从文档中,定义是:
..具有离散而非连续范围的线性标度的变体。输入域仍然是连续的,并根据输出范围(基数)中的值的数量分成统一的段。
...将输入域映射到离散范围。虽然输入域是连续的并且比例将接受任何合理的输入值,但输入域被指定为一组离散值。输出范围(基数)中的值的数量决定了将从输入域计算的分位数的数量
这两者似乎都将连续输入域映射到一组离散值。任何人都可以阐明差异吗?
答案 0 :(得分:21)
一般而言,差异与平均值和中位数之间的差异相似。
当输入域中的值的数量大于输出域中的值的数量时,差异才真正明显。最好用example说明。
对于quantize
比例,输入范围根据输出范围分为统一分段。也就是说,域中的值的数量并不重要。因此它返回1为0.2,因为0.2接近1而不是100。
quantile
比例基于输入域的分位数,因此受到其中值的数量的影响。输出域中的值的数量仅确定计算的分位数。就其本质而言,分位数反映了实际的值列表而不仅仅是范围。因此,当相应的分位数接近100时,0.2的输入返回100。
答案 1 :(得分:7)
我自己也有同样的问题。所以我做了一个visualization来帮助理解它们是如何工作的。
答案 2 :(得分:6)
Coloring Maps有一个很好的视觉解释。
量化:
位数:
在散点图上,先前水平的条形图现在是垂直的,因为每个地方的颜色由其等级而非值来确定。
这是D3 v4中的代码片段,显示了量化和分位数的不同结果。
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]
答案 3 :(得分:5)
据我所知,不同之处在于,统计分位数是有限的,相等的,均匀分布的离散块/桶,您的结果只会落入其中。不同之处在于量化比例是基于离散输入的连续函数。
基本上:量化允许插值和外推,其中分位数强制值进入子集。
因此,例如,如果学生的计算等级在量化量表中为81.7%,则百分位数的分位数量表将简单地说它是第81百分位数。那里没有灵活性的空间。