Blob README.md
Showing rendered content. Download source code
T-Digest
A map-reduce and parallel streaming friendly data-structure for accurate quantile approximation.
This package provides a very crude implementation of Ted Dunning's t-digest data structure in Go.
Installation
go get github.com/caio/go-tdigest
Usage
import ("github.com/caio/go-tdigest" "math/rand" "fmt")
compression := 10
t := tdigest.New(compression)
for i := 0; i < 10000; i++ {
t.Update(rand.Float64(), 1)
}
fmt.Printf("p(.5) = %.6f\n", t.Percentile(0.5))
Disclaimer
I've written this solely with the purpose of understanding how the data-structure works, it hasn't been throughly verified nor have I bothered with optimizations for now.
References
This is a very simple port of the reference implementation with some ideas borrowed from the python version. If you wanna get a quick grasp of how it works and why it's useful, this video and companion article is pretty helpful.