UNPKG

@jeremyqzt/nodestats

Version:

Helper methods for stats, combinatorics, permutations, probabilities and matricies

86 lines (78 loc) 2.57 kB
/** Class aggregating probability methods. */ class probabilityLib{ /** * Checks if probabilities are valid (i.e. between 0 and 1) * @param {number} x - probability * @param {number} y - probability * @return {boolean} true of x and y are valid probabilities */ static valuesOk(x,y){ if (x < 0 || x > 1 || y < 0 || y > 1){ return false; } return true; } /** * Calculates probability of independent X and Y occuring together. * @param {number} x - probability of X (0 <= x <= 1) * @param {number} y - probability of Y (0 <= y <= 1) * @return {number} probability of X and Y occuring */ static XandY(x, y){ if (probabilityLib.valuesOk(x, y)){ return x*y; } return 0; } /** * Calculates probability of independent X and Y - X occurs but not Y. * @param {number} x - probability of X (0 <= x <= 1) * @param {number} y - probability of Y (0 <= y <= 1) * @return {number} probability of X occuring but not Y */ static XandNotY(x, y){ if (probabilityLib.valuesOk(x, y)){ return x*(1-y); } return 0; } /** * Calculates probability of one of independent X and Y occuring. * @param {number} x - probability of X (0 <= x <= 1) * @param {number} y - probability of Y (0 <= y <= 1) * @return {number} probability of X or Y occuring */ static XorY(x, y){ if (probabilityLib.valuesOk(x, y)){ return 1-((1-x)*(1-y)); } return 0; } /** * Calculates the conditional probability of X given Y. * @param {number} x - probability of X (0 <= x <= 1) * @param {number} y - probability of Y (0 <= y <= 1) * @return {number} probability of X if Y occured */ static XgivenY(x, y){ if (probabilityLib.valuesOk(x, y)){ return (x*y)/y; } return 0; } /** * Calculates the conditional probability of X given Y not occuring. * @param {number} x - probability of X (0 <= x <= 1) * @param {number} y - probability of Y (0 <= y <= 1) * @return {number} probability of X if Y did not occured */ static XgivenNotY(x, y){ if (probabilityLib.valuesOk(x, y)){ return (probabilityLib.XandNotY(x, y))/(1-y); } return 0; } } module.exports = { probabilityLib: probabilityLib, };