mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-12-08 16:50:27 +00:00
package obistat debut
This commit is contained in:
33
pkg/obistats/kolmogorovbeta.go
Normal file
33
pkg/obistats/kolmogorovbeta.go
Normal file
@@ -0,0 +1,33 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user