2012-05-14 37 views
15

Bu ifadenin anlamı nedir?d3.scale.quantile nasıl çalışır?

quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9)); 

I sahası olduğunu gördük: - 0
1 -

aralığı 0 ila 8 arasında olan ve

0 - 1.6 
1 - 3.3 
2 - 4.9 
3 - 6.6 
4 - 8.3 
5 - 9.9 
6 -11.6 
7 -13.3 
quantize.quantiles

Nicelikler için değerler nasıl hesaplanır? quantize(2)'u aramayı denedim, ancak sonuç 1 idi. quantile nasıl çalışır?

+0

Belki de kuantilin anlamını ve nasıl çalıştığını biliyor musunuz? – user1365697

+3

Bu ölçeklerin nasıl çalıştığını daha iyi anlamak isterseniz, bu etkileşimli [görselleştirme] ile oynayabilirsiniz (http://bl.ocks.org/aviddiviner/84d905e60c6788f77ee21d35f873b236). – Dave

cevap

4

Ben quantile scale documentation üzerinde okuma öneriyoruz özellikle o quantize.quantiles()

Ama temelde, d3 o 9 quantiles yaratır yüzden bu ölçek için çıkış aralığında 9 değerler temelinde, orada olduğunu görür üzerinde 2 değer veri kümesi: [0, 15].
Bu, sorunuzda gösterdiğiniz quantize.quantiles() değerlerine yol açar: [1.6, 3.3, .., 13.3], bunlar niceliklerin sınırlarını temsil eder - 1.6'dan küçük herhangi bir şey, ilk öğeye eşlenir. çıkış aralığı (bu durumda sıfır). 3,3'ten küçük ve 1,6'dan büyük herhangi bir şey, çıkış aralığının ikinci öğesine (bir) eşlenecektir. Bu nedenle, beklendiği gibi nicelik (2) = bir.

21

Kuantil ölçeğin motivasyonu, veri kümesindeki değerlerin gerçek dağılımını temsil eden sınıflar elde etmektir. Bu nedenle, inşaat sırasında bu değerlerin tam listesi ile sağlanmalıdır. Ölçek daha sonra giriş alanı (bu değerler tarafından tanımlanan) aralıkları (nicelikler) olarak böler, böylece aynı sayıda değer aralıkların her birine düşer. belgelerine

:

miktarlarını hesaplamak için, giriş alanı kriteri, ve ayrık değerleri bir popülasyon olarak işlenir. O zaman çalıştırmak

var scale = d3.scale.quantile() 
    .domain([1, 1, 2, 3, 2, 3, 16]) 
    .range(['blue', 'white', 'red']); 

: alan belirtirken

Dolayısıyla, ölçekli değerler bütün liste el

scale.quantiles() 

Bu çıktısı [2, 3 ] Bu, değerlerimizin bu üç alt kümeye bölünmüş olduğu anlamına gelir:

[1, 1] [2, 2] [3, 3, 16] 

Göstermek istediğiniz verilerde aykırı değerler olduğunda bu skaladan kaçınılmalıdır. Yukarıdaki örnekte 16, üst kuantetin içine düşen bir aykırıdır. Muhtemelen istenen davranış olarak 3 ile aynı sınıf atanır:

scale(3) // will output "red" 
scale(16) // will output "red"