Files
obitools4/pkg/obistats/kolmogorovbeta.go
2022-07-28 16:52:27 +02:00

34 lines
573 B
Go

package obistats
import (
"math"
"sort"
"gonum.org/v1/gonum/floats"
"gonum.org/v1/gonum/stat/distuv"
)
func BetaKolmogorowDist(data []float64, alpha, beta float64, preordered bool) float64 {
odata := data
if !preordered {
odata = make([]float64, len(data))
copy(odata,data)
sort.Float64s(odata)
}
distances := make([]float64, len(data))
B := distuv.Beta{
Alpha: alpha,
Beta: beta,
Src: nil,
}
s := float64(0.0)
for i, v := range odata {
s += v
distances[i] = math.Abs(B.CDF(s) - 1.0/(float64(i)+1.0))
}
return floats.Max(distances)
}