wilson-interval-func
Version:
Calculate pearson correlation rank
104 lines (80 loc) • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _pnormaldist = require('pnormaldist');
var _pnormaldist2 = _interopRequireDefault(_pnormaldist);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var WilsonInterval = function () {
function WilsonInterval() {
(0, _classCallCheck3.default)(this, WilsonInterval);
}
(0, _createClass3.default)(WilsonInterval, null, [{
key: 'calc',
/**
*
* @param positiveVotes
* @param totalVotes
* @returns {number}
*/
value: function calc(positiveVotes, totalVotes) {
var z = (0, _pnormaldist2.default)(1 - (1 - WilsonInterval.CONFIDENCE) / 2);
return totalVotes ? WilsonInterval.lowerBound(positiveVotes, totalVotes, z) : 0;
}
/**
*
* @param positiveVotes
* @param totalVotes
* @param confidence
* @returns {number}
*/
}, {
key: 'lowerBound',
value: function lowerBound(positiveVotes, totalVotes, confidence) {
var phat = 1.0 * positiveVotes / totalVotes,
numerator = WilsonInterval.calcNumerator(totalVotes, confidence, phat),
denominator = WilsonInterval.calcDenominator(totalVotes, confidence);
return numerator / denominator;
}
/**
*
* @param total
* @param z
* @returns {number}
*/
}, {
key: 'calcDenominator',
value: function calcDenominator(total, z) {
return 1 + z * z / total;
}
/**
*
* @param total
* @param z
* @param phat
* @returns {number}
*/
}, {
key: 'calcNumerator',
value: function calcNumerator(total, z, phat) {
return phat + z * z / (2 * total) - z * Math.sqrt((phat * (1 - phat) + z * z / (4 * total)) / total);
}
/**
*
* @returns {number}
* @constructor
*/
}, {
key: 'CONFIDENCE',
get: function get() {
return .975;
}
}]);
return WilsonInterval;
}();
exports.default = WilsonInterval;
module.exports = WilsonInterval;