'use strict'; function AbstactStudentT(options) { this._options = options; } module.exports = AbstactStudentT; AbstactStudentT.prototype.testValue = function () { const diff = (this._mean - this._options.mu); return diff / this._se; }; // Use cdf(-t) instead of 1 - cdf(t), and cdf(-|t|) instead of 1 - cdf(|t|) // to avoid a numerical error when computing 1 - epsilon. AbstactStudentT.prototype.pValue = function () { const t = this.testValue(); switch (this._options.alternative) { case 1: // mu > mu[0] return this._dist.cdf(-t); case -1: // mu < mu[0] return this._dist.cdf(t); case 0: // mu != mu[0] return 2 * (this._dist.cdf(-Math.abs(t))); } }; AbstactStudentT.prototype.confidence = function () { let pm; switch (this._options.alternative) { case 1: // mu > mu[0] pm = Math.abs(this._dist.inv(this._options.alpha)) * this._se; return [this._mean - pm, Infinity]; case -1: // mu < mu[0] pm = Math.abs(this._dist.inv(this._options.alpha)) * this._se; return [-Infinity, this._mean + pm]; case 0: // mu != mu[0] pm = Math.abs(this._dist.inv(this._options.alpha / 2)) * this._se; return [this._mean - pm, this._mean + pm]; } }; AbstactStudentT.prototype.valid = function () { return this.pValue() >= this._options.alpha; }; AbstactStudentT.prototype.freedom = function () { return this._df; }