stat: Quantile returns wrong value when dataset is of even size
according to the universal source of truth: https://en.wikipedia.org/wiki/Median
the median of:
xs := []float64{1, 3, 3, 6, 7, 8, 9}
should be 6
.
this program:
package main
import (
"fmt"
"gonum.org/v1/gonum/stat"
)
func main() {
xs := []float64{1, 3, 3, 6, 7, 8, 9}
med := stat.Quantile(0.5, stat.Empirical, xs, nil)
fmt.Printf("median=%v\n", med)
}
indeed prints:
$> go run ./main.go
median=6
but, for this dataset: xs := []float64{1, 2, 3, 4, 5, 6, 8, 9}
, it should return (4 + 5) ÷ 2
ie: 4.5
.
gonum/stat.Quantile
returns 4
:
package main
import (
"fmt"
"gonum.org/v1/gonum/stat"
)
func main() {
xs := []float64{1, 2, 3, 4, 5, 6, 8, 9}
med := stat.Quantile(0.5, stat.Empirical, xs, nil)
fmt.Printf("median=%v\n", med)
}
$> go run ./main.go
median=4