JavaScript
var data = [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 12, 3, 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 6, 5, 6, 7, 8, 8, 9, 8, 7, 6, 7, 8, 9, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 3, 2, 2, 2, 1, 1, 1];
var stats = {
mean: function(arr){
var len = arr.length,
sum = _.reduce(arr, function(memo, num){ return memo + num; }, 0),
mean = sum / len
return mean;
},
headTail: function(arr){
var data_min = _.min(arr),
mean = this.mean(arr),
bins = [data_min];
while (arr.length > 1) {
arr = _.filter(arr, function (d) { return d > mean });
mean = this.mean(arr);
bins.push(mean);
};
return bins;
}
};
var thresholds = stats.headTail(data);
console.log(thresholds);