-
Notifications
You must be signed in to change notification settings - Fork 106
Open
Description
I just curious why use max of bins as divisor instead of sum of bins?
LocoKit/Timelines/ActivityTypes/Histogram.swift
public func probabilityFor(_ value: Double) -> Double {
guard let max = bins.max() else {
return 0
}
// shouldn't be possible. but...
guard !binWidth.isNaN else {
return 0
}
// single bin histograms result in binary 0 or 1 scores
if bins.count == 1 {
return value == range.min ? 1 : 0
}
let bin: Int
if value == range.max {
bin = bins.count - 1
} else {
let binDouble = floor((value - range.min) / binWidth)
if binDouble > Double(bins.count - 1) {
return 0
}
guard !binDouble.isNaN && binDouble > Double(Int.min) && binDouble < Double(Int.max) else {
return 0
}
bin = binWidth > 0 ? Int(binDouble) : 0
}
guard bin >= 0 && bin < bins.count else {
return 0
}
return (Double(bins[bin]) / Double(max)).clamped(min: 0, max: 1)
}Metadata
Metadata
Assignees
Labels
No labels