hypertune
Version:
[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt
32 lines • 1.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = calculateBayesianProbability;
const logbeta_1 = __importDefault(require("./logbeta"));
function probabilityBbeatsA(successA, failureA, successB, failureB) {
let total = 0.0;
for (let i = 0; i < successB; i += 1) {
total += Math.exp((0, logbeta_1.default)(successA + i, failureB + failureA) -
Math.log(failureB + i) -
(0, logbeta_1.default)(1 + i, failureB) -
(0, logbeta_1.default)(successA, failureA));
}
return total;
}
function calculateBayesianProbability(successes, failures, controlIndex) {
if (controlIndex < 0 ||
controlIndex >= successes.length ||
controlIndex >= failures.length) {
return null;
}
const numArms = successes.length;
const probabilities = Array(numArms).fill(0);
for (let i = 0; i < numArms; i += 1) {
const probIbeatsControl = probabilityBbeatsA(successes[controlIndex] + 1, failures[controlIndex] + 1, successes[i] + 1, failures[i] + 1);
probabilities[i] = probIbeatsControl;
}
return probabilities;
}
//# sourceMappingURL=calculateBayesianProbability.js.map