I've been doing something similar in my geotiff-server. The other stats I found happy for colour balancing were quantiles at 2% and 98%, and the standard deviation
import {min, max, quantile, standardDeviation} from 'simple-statistics'
function getBasicStats (arr) {
var filtered = arr.filter(function (element) {
return element !== -999
})
return {
percentiles: [quantile(filtered, 0.02), quantile(filtered, 0.98)],
min: min(filtered),
max: max(filtered),
stdDeviation: standardDeviation(filtered)
}
}