@technobuddha/library
Version:
A large library of useful functions
31 lines (30 loc) • 1.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.variance = void 0;
var mean_1 = __importDefault(require("lodash/mean"));
var sum_1 = __importDefault(require("lodash/sum"));
/**
* Returns the unbiased sample variance of the arguments. For a definition,
* see http://en.wikipedia.org/wiki/Variance
*
* @param datapoints Number samples to analyze.
* @return The unbiased sample variance of the arguments (0 if fewer
* than two samples were provided, or {@code NaN} if any of the samples is
* not a valid number).
*/
function variance() {
var datapoints = [];
for (var _i = 0; _i < arguments.length; _i++) {
datapoints[_i] = arguments[_i];
}
var sampleSize = datapoints.length;
if (sampleSize < 2)
return Number.NaN;
var average = mean_1.default(datapoints);
return sum_1.default(datapoints.map(function (val) { return Math.pow(val - average, 2); })) / (sampleSize - 1);
}
exports.variance = variance;
exports.default = variance;