ranjs
rán · 然 “so; correct” — robust random variates, distribution testing & statistics for JavaScript.
What is this?
A small library for robust generation of various random variates, testing data against distributions or calculating different statistical properties.
Install in node
npm install --save ranjsUse in browser
<script type="text/javascript" src="ran.min.js"></script>Demo
Continuous distributions · Discrete distributions
API
ran.core.char([string[, n]])
Samples some characters with replacement from a string with uniform distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| string | string | String to sample characters from. |
| n | number | Number of characters to sample. |
Returns
stringstring[]undefinedRandom character if n is not given or less than 2, an array of random characters otherwise. If string is empty, undefined is returned.
Examples
ran.core.char('abcde')
// => 'd'
ran.core.char('abcde', 5)
// => [ 'd', 'c', 'a', 'a', 'd' ]ran.core.choice(values[, n])
Samples some elements with replacement from an array with uniform distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| values | T[] | Array to sample from. |
| n | number | Number of elements to sample. |
Returns
TT[]undefinedSingle element or array of sampled elements. If the array is invalid (empty or not passed), undefined is returned.
Examples
ran.core.choice([1, 2, 3, 4, 5])
// => 2
ran.core.choice([1, 2, 3, 4, 5], 5)
// => [ 1, 5, 4, 4, 1 ]ran.core.coin(head, tail[, p[, n]])
Flips a biased coin several times and returns the associated head/tail value or array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| head | H | Head value. |
| tail | T | Tail value. |
| p | number | Bias (probability of head). Default is 0.5. |
| n | number | Number of coins to flip. Default is 1. |
Returns
HTundefined[]Single head/tail value or an array of head/tail values.
Examples
ran.core.coin('a', {b: 2})
// => { b: 2 }
ran.core.coin('a', {b: 2}, 0.9)
// => 'a'
ran.core.coin('a', {b: 2}, 0.9, 9)
// => [ { b: 2 }, 'a', 'a', 'a', 'a', 'a', 'a', { b: 2 }, 'a' ]ran.core.float([min[, max[, n]]])
Generates some uniformly distributed random floats in (min, max). If min > max, a random float in (max, min) is generated. If no parameters are passed, generates a single random float between 0 and 1. If only min is specified, generates a single random float between 0 and min.
Parameters
| Name | Type | Description |
|---|---|---|
| min | number | Lower boundary, or upper if max is not given. |
| max | number | Upper boundary. |
| n | number | Number of floats to generate. |
Returns
numbernumber[]Single float or array of random floats.
Examples
ran.core.float()
// => 0.278014086611011
ran.core.float(2)
// => 1.7201255276155272
ran.core.float(2, 3)
// => 2.3693449236256185
ran.core.float(2, 3, 5)
// => [ 2.4310443387740093,
// 2.934333354639414,
// 2.7689523358767127,
// 2.291137165632517,
// 2.5040591952427906 ]ran.core.int(min[, max[, n]])
Generates some uniformly distributed random integers in (min, max). If min > max, a random integer in (max, min) is generated. If only min is specified, generates a single random integer between 0 and min.
Parameters
| Name | Type | Description |
|---|---|---|
| min | number | Lower boundary, or upper if max is not specified. |
| max | number | Upper boundary. |
| n | number | Number of integers to generate. |
Returns
numbernumber[]Single integer or array of random integers.
Examples
ran.core.int(10)
// => 2
ran.core.int(10, 20)
//=> 12
ran.core.int(10, 20, 5)
// => [ 12, 13, 10, 14, 14 ]ran.core.seed(value)
Sets the seed for the underlying pseudo random number generator used by the core generators. Under the hood, ranjs implements the xoshiro128+ algorithm as described in Blackman and Vigna: Scrambled Linear Pseudorandom Number Generators (2019).
Parameters
| Name | Type | Description |
|---|---|---|
| value | numberstring | The value of the seed, either a number or a string (for the ease of tracking seeds). |
Returns
voidran.core.shuffle(values)
Shuffles an array in-place using the Fisher‒Yates algorithm.
Parameters
| Name | Type | Description |
|---|---|---|
| values | T[] | Array to shuffle. |
Returns
T[]The shuffled array.
Examples
ran.core.shuffle([1, 2, 3])
// => [ 2, 3, 1 ]ran.dependence.covariance(x, y)
Calculates the sample covariance for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberThe sample covariance, or NaN if either array has fewer than 2 elements.
Throws
ErrorExamples
ran.dependence.covariance([], [])
// => NaN
ran.dependence.covariance([1], [2])
// => NaN
ran.dependence.covariance([1, 2, 3], [4, 5, 6])
// => 1
ran.dependence.covariance([1, 9, 10], [1, 2, 10])
// => 16.166666666666668ran.dependence.dCor(x, y)
Calculates the distance correlation for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberThe distance correlation, or NaN for empty or constant arrays.
Throws
ErrorExamples
ran.dependence.dCor([], [])
// => NaN
ran.dependence.dCor([1, 2, 3], [2, 1, 2])
// => 0.5623413251903491ran.dependence.dCov(x, y)
Calculates the distance covariance for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberThe distance covariance, or NaN for empty arrays.
Throws
ErrorExamples
ran.dependence.dCov([], [])
// => NaN
ran.dependence.dCov([1, 2, 3], [2, 1, 2])
// => 0.31426968052735443ran.dependence.kendall(x, y)
Calculates Kendall's rank correlation coefficient for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberKendall's correlation coefficient, or NaN for empty arrays.
Throws
ErrorExamples
ran.dependence.kendall([], [])
// => NaN
ran.dependence.kendall([1, 2, 3], [4, 5, 6])
// => 1
ran.dependence.kendall([1, 2, 3], [1, 4, 2])
// => 0.3333333333333333ran.dependence.kullbackLeibler(p, q)
Calculates the (discrete) Kullback-Leibler divergence for two probability distributions:
Parameters
| Name | Type | Description |
|---|---|---|
| p | number[] | Array representing the probabilities for the i-th value in the base distribution (P). |
| q | number[] | Array representing the probabilities for the i-th value in compared distribution (Q). |
Returns
numberThe Kullback-Leibler divergence, NaN for empty input, Infinity if Q(x) = 0 and P(x) > 0 for some x.
Throws
ErrorExamples
ran.dependence.kullbackLeibler([], [])
// => NaN
ran.dependence.kullbackLeibler([0.1, 0.2, 0.7], [0, 0.3, 0.7])
// => Infinity
ran.dependence.kullbackLeibler([0.1, 0.3, 0.6], [0.333, 0.333, 0.334])
// => 0.19986796234715937
ran.dependence.kullbackLeibler([0.333, 0.333, 0.334], [0.1, 0.3, 0.6])
// => 0.2396882491444514ran.dependence.oddsRatio(p00, p01, p10, p11)
Calculates the odds ratio for the joint probabilities of two binary variables:
Parameters
| Name | Type | Description |
|---|---|---|
| p00 | number | The probability of X = 0 and Y = 0. |
| p01 | number | The probability of X = 0 and Y = 1. |
| p10 | number | The probability of X = 1 and Y = 0. |
| p11 | number | The probability of X = 1 and Y = 1. |
Returns
numberThe odds ratio. Returns Infinity when p01 or p10 is zero and the numerator is non-zero.
Examples
ran.dependence.oddsRatio(0.3, 0, 0.3, 0.4)
// => Infinity
ran.dependence.oddsRatio(0.3, 0.3, 0, 0.4)
// => Infinity
ran.dependence.oddsRatio(0.1, 0.2, 0.3, 0.4)
// => 0.6666666666666669ran.dependence.pearson(x, y)
Calculates the Pearson correlation coefficient for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberThe Pearson correlation coefficient, or NaN if arrays have fewer than two elements or zero variance.
Throws
ErrorExamples
ran.dependence.pearson([], [])
// => NaN
ran.dependence.pearson([1, 2, 3], [1, 1, 1])
// => NaN
ran.dependence.pearson([1, 2, 3], [4, 5, 6])
// => 1
ran.dependence.pearson([1, 9, 10], [1, 2, 10])
// => 0.6643835616438358ran.dependence.pointBiserial(x, y)
Calculates the point-biserial correlation coefficient for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. Must contain 0s and 1s only. |
Returns
numberThe point-biserial correlation coefficient, or NaN if arrays have fewer than 2 elements or zero variance.
Throws
ErrorExamples
ran.dependence.pointBiserial([], [])
// => NaN
ran.dependence.pointBiserial([2, 2, 2], [0, 0, 1])
// => NaN
ran.dependence.pointBiserial([1, 2, 3], [4, 5, 6])
// => 0.8660254037844386ran.dependence.somersD(x, y)
Calculates Somers' D for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberSomers' D, or NaN for empty arrays.
Throws
ErrorExamples
ran.dependence.somersD([], [])
// => NaN
ran.dependence.somersD([1, 2, 3], [4, 6, 6])
// => 0.6666666666666666
ran.dependence.somersD([1, 1, 0], [4, 5, 6])
// => -1ran.dependence.spearman(x, y)
Calculates Spearman's rank correlation coefficient for two paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | First array of values. |
| y | number[] | Second array of values. |
Returns
numberSpearman's rank correlation coefficient, or NaN for empty arrays.
Throws
ErrorExamples
ran.dependence.spearman([], [])
// => NaN
ran.dependence.spearman([1, 2, 3], [1, 4, 2])
// => 0.5
ran.dependence.spearman([1, 9, 10], [1, 2, 10])
// => 1ran.dependence.yuleQ(p00, p01, p10, p11)
Calculates Yule's Q for the joint probabilities of two binary variables:
Parameters
| Name | Type | Description |
|---|---|---|
| p00 | number | The probability of X = 0 and Y = 0. |
| p01 | number | The probability of X = 0 and Y = 1. |
| p10 | number | The probability of X = 1 and Y = 0. |
| p11 | number | The probability of X = 1 and Y = 1. |
Returns
numberYule's Q, or NaN when p01 or p10 is zero (the odds ratio diverges, making the formula indeterminate).
Examples
ran.dependence.yuleQ(0.3, 0, 0.3, 0.4)
// => NaN
ran.dependence.yuleQ(0.3, 0.3, 0, 0.4)
// => NaN
ran.dependence.yuleQ(0.1, 0.2, 0.3, 0.4)
// => -0.19999999999999984ran.dependence.yuleY(p00, p01, p10, p11)
Calculates Yule's Y for the joint probabilities of two binary variables:
Parameters
| Name | Type | Description |
|---|---|---|
| p00 | number | The probability of X = 0 and Y = 0. |
| p01 | number | The probability of X = 0 and Y = 1. |
| p10 | number | The probability of X = 1 and Y = 0. |
| p11 | number | The probability of X = 1 and Y = 1. |
Returns
numberYule's Y, or NaN when p01 or p10 is zero (the odds ratio diverges, making the formula indeterminate).
Examples
ran.dependence.yuleY(0.3, 0, 0.3, 0.4)
// => NaN
ran.dependence.yuleY(0.3, 0.3, 0, 0.4)
// => NaN
ran.dependence.yuleY(0.1, 0.2, 0.3, 0.4)
// => -0.10102051443364372ran.dispersion.cv(values)
Calculates the coefficient of variation of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate coefficient of variation for. |
Returns
numberCoefficient of variation, or NaN for fewer than 2 elements, zero mean, or zero variance.
Examples
ran.dispersion.cv([])
// => NaN
ran.dispersion.cv([1])
// => NaN
ran.dispersion.cv([-1, 0, 1])
// => NaN
ran.dispersion.cv([1, 2, 3, 4, 5])
// => 0.5270462766947299ran.dispersion.dVar(x)
Calculates the distance variance for paired arrays of values.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number[] | Array of values. |
Returns
numberThe distance variance, or NaN for an empty array.
Examples
ran.dispersion.dVar([])
// => NaN
ran.dispersion.dVar([1, 2, 3])
// => 0.7027283689263066ran.dispersion.entropy(probabilities[, base])
Calculates the Shannon entropy for a probability distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| probabilities | number[] | Array representing the probabilities for the i-th value. |
| base | number | Base for the logarithm. If not specified, natural logarithm is used. |
Returns
numberEntropy of the probabilities, or NaN for empty input.
Examples
ran.dispersion.entropy([])
// => NaN
ran.dispersion.entropy([0.1, 0.1, 0.8])
// => 0.639031859650177
ran.dispersion.entropy([0.3, 0.3, 0.4])
// => 1.0888999753452238ran.dispersion.gini(values)
Calculates the Gini coefficient for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate the Gini coefficient for. |
Returns
numberThe Gini coefficient, or NaN for fewer than 2 elements or zero mean.
Examples
ran.dispersion.gini([])
// => NaN
ran.dispersion.gini([1])
// => NaN
ran.dispersion.gini([-1, 0, 1])
// => NaN
ran.dispersion.gini([1, 2, 3, 4])
// => 0.25
ran.dispersion.gini([1, 1, 1, 7])
// => 0.45ran.dispersion.iqr(values)
Calculates the interquartile range for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate the interquartile range for. |
Returns
numberThe interquartile range, or NaN for an empty array.
Examples
ran.dispersion.iqr([])
// => NaN
ran.dispersion.iqr([1, 1, 2, 3, 3])
// => 2ran.dispersion.md(values)
Calculates the mean absolute difference of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate mean absolute difference for. |
Returns
numberMean absolute difference, or NaN for fewer than 2 elements.
Examples
ran.dispersion.md([])
// => NaN
ran.dispersion.md([1])
// => NaN
ran.dispersion.md([1, 2, 3, 4])
// => 1.25ran.dispersion.midhinge(values)
Calculates the midhinge for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate midhinge for. |
Returns
numberThe midhinge, or NaN for an empty array.
Examples
ran.dispersion.midhinge([])
// => NaN
ran.dispersion.midhinge([1, 1, 1, 2, 3])
// => 1.5ran.dispersion.qcd(values)
Calculates the quartile coefficient of dispersion for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate quartile coefficient of dispersion for. |
Returns
numberThe quartile coefficient of dispersion, or NaN for an empty array.
Examples
ran.dispersion.qcd([])
// => NaN
ran.dispersion.qcd([1, 2, 3])
// => 0.25ran.dispersion.range(values)
Calculates the range for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate range for. |
Returns
numberThe range of the values, or NaN for an empty array.
Examples
ran.dispersion.range([])
// => NaN
ran.dispersion.range([0, 1, 2, 2])
// => 2ran.dispersion.rmd(values)
Calculates the relative mean absolute difference of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate relative mean absolute difference for. |
Returns
numberRelative mean absolute difference, or NaN for fewer than 2 elements or zero mean.
Examples
ran.dispersion.rmd([])
// => NaN
ran.dispersion.rmd([1])
// => NaN
ran.dispersion.rmd([-1, 0, 1])
// => NaN
ran.dispersion.rmd([1, 2, 3, 4])
// => 0.5ran.dispersion.stdev(values)
Calculates the unbiased standard deviation of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate standard deviation for. |
Returns
numberStandard deviation of the values, NaN for fewer than 2 elements.
Examples
ran.dispersion.stdev([])
// => NaN
ran.dispersion.stdev([1])
// => NaN
ran.dispersion.stdev([1, 2, 3, 4, 5])
// => 1.5811388300841898ran.dispersion.variance(values)
Calculates the unbiased sample variance of an array of values using Welford's algorithm.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate variance for. |
Returns
numberVariance of the values, NaN for fewer than 2 elements.
Examples
ran.dispersion.variance([])
// => NaN
ran.dispersion.variance([1])
// => NaN
ran.dispersion.variance([1, 2, 3, 4, 5])
// => 2.5ran.dispersion.vmr(values)
Calculates the variance-to-mean ratio of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate variance-to-mean ratio for. |
Returns
numberVariance-to-mean ratio, or NaN for fewer than 2 elements or zero mean.
Examples
ran.dispersion.vmr([])
// => NaN
ran.dispersion.vmr([1])
// => NaN
ran.dispersion.vmr([-1, 0, 1])
// => NaN
ran.dispersion.vmr([1, 2, 3, 4, 5])
// => 0.8333333333333334ran.dist.Distribution()
The distribution generator base class, all distribution generators extend this class. The methods listed here are available for all distribution generators. Integer parameters of a distribution are rounded. The examples provided for this class are using a Pareto distribution.
ran.dist.Distribution.aic(data)
Returns the value of the Akaike information criterion for a specific data set. Note that this method does not optimize the likelihood, merely computes the AIC with the current parameter values.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of values containing the data. |
Returns
numberThe AIC for the current parameters.
Examples
let pareto1 = new dist.Pareto(1, 2)
let pareto2 = new dist.Pareto(1, 5)
let sample = pareto1.sample(1000)
pareto1.aic(sample)
// => 1584.6619128383577
pareto2.aic(sample)
// => 2719.0367230482957ran.dist.Distribution.bic(data)
Returns the value of the Bayesian information criterion for a specific data set. Note that this method does not optimize the likelihood, merely computes the BIC with the current parameter values.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of values containing the data. |
Returns
numberThe BIC for the current parameters.
Examples
let pareto1 = new dist.Pareto(1, 2)
let pareto2 = new dist.Pareto(1, 5)
let sample = pareto1.sample(1000)
pareto1.bic(sample)
// => 1825.3432698372499
pareto2.bic(sample)
// => 3190.5839264881165ran.dist.Distribution.bounded()
Returns the boundedness category of the distribution's support:
Returns
The boundedness category of the support.
ran.dist.Distribution.cdf(x)
The cumulative distribution function:
if the distribution is continuous and
if it is discrete. The functions and denote the probability density and mass functions.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate CDF at. |
Returns
numberThe cumulative distribution value.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.cdf(3)
// => 0.8888888888888888ran.dist.Distribution.cHazard(x)
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate cumulative hazard at. |
Returns
numberThe cumulative hazard.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.cHazard(3)
// => 2.197224577336219ran.dist.Distribution.fit(data)
Estimates the distribution parameters from data using maximum likelihood estimation (MLE). Distributions with a closed-form MLE return it directly; all others maximise the log-likelihood lnL(data) with Powell's derivative-free conjugate-direction optimizer.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of observations to fit. |
Returns
DistributionA new instance of the same distribution with MLE parameters.
ran.dist.Distribution.hazard(x)
The hazard function:
where and are the probability density (or mass) function and the survival function, respectively.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate the hazard at. |
Returns
numberThe hazard value.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.hazard(3)
// => 0.6666666666666663ran.dist.Distribution.kurtosis()
The theoretical excess kurtosis of the distribution:
Returns NaN when undefined (zero variance, or moment does not exist). Distributions with non-finite moments must override this method.
Returns
numberThe theoretical excess kurtosis.
ran.dist.Distribution.lnL(data)
The log-likelihood of the current distribution based on some data. More precisely:
where is the set of observations (sample) and is the parameter vector of the distribution. The function denotes the probability density/mass function.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of numbers to calculate log-likelihood for. |
Returns
numberThe log-likelihood of the data for the distribution.
Examples
let pareto = new ran.dist.Pareto(1, 2)
let uniform = new ran.dist.UniformContinuous(1, 10);
let sample1 = pareto.sample(100)
pareto.L(sample1)
// => -104.55926409382
let sample2 = uniform.sample(100)
pareto.L(sample2)
// => -393.1174868780569ran.dist.Distribution.load(state)
Loads a new state for the generator.
Parameters
| Name | Type | Description |
|---|---|---|
| state | Object | The state to load. |
Returns
thisReference to the current distribution.
Examples
let pareto1 = new ran.dist.Pareto(1, 2).seed('test')
let sample1 = pareto1.sample(2)
let state = pareto1.save()
let pareto2 = new ran.dist.Pareto().load(state)
let sample2 = pareto2.sample(3)
// => [ 1.1315154468682591,
// 5.44269493220745,
// 1.2587482868229616 ]ran.dist.Distribution.logPdf(x)
The logarithmic probability density function. For discrete distributions, this is the logarithm of the probability mass function.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate the log pdf at. |
Returns
numberThe logarithmic probability density (or mass).
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.lnPdf(3)
// => -2.6026896854443837ran.dist.Distribution.mean()
The theoretical mean of the distribution:
Returns a finite number for well-behaved distributions, NaN when the moment is mathematically undefined, or Infinity / -Infinity when it diverges. Distributions with non-finite moments must override this method; the numerical fallback cannot detect divergence through truncated integration.
Returns
numberThe theoretical mean.
ran.dist.Distribution.params()
Returns the natural (user-facing) parameters of the distribution. Internal lookup state is not included.
Returns
ObjectThe natural parameters of the distribution.
ran.dist.Distribution.pdf(x)
Probability density function. In case of discrete distributions, it is the probability mass function.
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate distribution at. |
Returns
numberThe probability density or probability mass.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.pdf(3)
// => 0.07407407407407407ran.dist.Distribution.q(p)
The quantile function of the distribution. For continuous distributions, it is defined as the inverse of the distribution function:
whereas for discrete distributions it is the lower boundary of the interval that satisfies :
with denoting the support of the distribution. For distributions with an analytically invertible cumulative distribution function, the quantile is explicitly implemented. In other cases, two fallback estimations are used: for continuous distributions the equation is solved using Brent's method. For discrete distributions a look-up table is used with linear search.
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | The probability at which the quantile should be evaluated. |
Returns
numberThe value of the quantile function at the specified probability.
Throws
Errorran.dist.Distribution.sample([n])
Generates some random variate.
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Number of variates to generate. If not specified, a single value is returned. |
Returns
numbernumber[]Single sample or an array of samples.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.sample(5)
// => [ 5.619011325146519,
// 1.3142187491180493,
// 1.0513159445581859,
// 1.8124951360943067,
// 1.1694087449301402 ]ran.dist.Distribution.save()
Returns the current state of the generator. The object returned by this method contains all information necessary to set up another generator of the same distribution (parameters, state of the pseudo random generator, etc).
Returns
Object representing the inner state of the current generator.
Examples
let pareto1 = new ran.dist.Pareto(1, 2).seed('test')
let sample1 = pareto1.sample(2)
let state = pareto1.save()
let pareto2 = new ran.dist.Pareto().load(state)
let sample2 = pareto2.sample(3)
// => [ 1.1315154468682591,
// 5.44269493220745,
// 1.2587482868229616 ]ran.dist.Distribution.seed(value)
Sets the seed for the distribution generator. Distributions implement the same PRNG ( xoshiro128+) that is used in the core functions.
Parameters
| Name | Type | Description |
|---|---|---|
| value | numberstring | The value of the seed, either a number or a string (for the ease of tracking seeds). |
Returns
thisReference to the current distribution.
Examples
let pareto = new ran.dist.Pareto(1, 2).seed('test')
pareto.sample(5)
// => [ 1.571395735462202,
// 2.317583041477979,
// 1.1315154468682591,
// 5.44269493220745,
// 1.2587482868229616 ]ran.dist.Distribution.skewness()
The theoretical skewness of the distribution:
Returns NaN when undefined (zero variance, or moment does not exist). Distributions with non-finite moments must override this method.
Returns
numberThe theoretical skewness.
ran.dist.Distribution.support()
Returns the support of the probability distribution (based on the current parameters). Note that the support for the probability distribution is not necessarily the same as the support of the cumulative distribution.
Returns
undefined[]An array of objects describing the lower and upper boundary of the support. Each object contains a value: number and a closed: boolean property with the value of the boundary and whether it is closed, respectively. When value is (+/-)Infinity, closed is always false.
ran.dist.Distribution.survival(x)
Parameters
| Name | Type | Description |
|---|---|---|
| x | number | Value to evaluate survival function at. |
Returns
numberThe survival value.
Examples
let pareto = new ran.dist.Pareto(1, 2)
pareto.survival(3)
// => 0.11111111111111116ran.dist.Distribution.test(values)
Tests if an array of values is sampled from the specified distribution. For discrete distributions this method uses test, whereas for continuous distributions it uses the Kolmogorov-Smirnov test. In both cases, the probability of Type I error (rejecting a correct null hypotheses) is 1%.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to test. |
Returns
Object with two properties representing the result of the test:
Examples
let pareto = new ran.dist.Pareto(1, 2)
let uniform = new ran.dist.UniformContinuous(1, 10);
let sample1 = pareto.sample(100)
pareto.test(sample1)
// => { statistics: 0.08632443341496943, passed: true }
let sample2 = uniform.sample(100)
pareto.test(sample2)
// => { statistics: 0.632890888159255, passed: false }ran.dist.Distribution.type()
Returns the type of the distribution (either discrete or continuous).
Returns
Distribution type.
ran.dist.Distribution.variance()
The theoretical variance of the distribution:
Returns a non-negative finite number for well-behaved distributions, NaN when the moment is mathematically undefined, or Infinity when it diverges. Distributions with non-finite moments must override this method.
Returns
numberThe theoretical variance.
ran.dist.Alpha(alpha, beta)
Probability density function for the alpha distribution:
where and denote the probability density and cumulative probability functions of the normal distribution. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Scale parameter. |
References
- Johnson, Kotz, and Balakrishnan, Continuous Univariate Distributions Vol. 1, 2nd ed., John Wiley and Sons, 1994, p. 173.
ran.dist.Anglit(mu, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| beta | number | Scale parameter. |
References
- M. King, Statistics for Process Control Engineers, John Wiley and Sons, 2017, p. 472.
ran.dist.Arcsine(a, b)
Probability density function for the arbitrarily bounded arcsine distribution:
where and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower boundary. |
| b | number | Upper boundary. |
References
- W. Feller, An Introduction to Probability Theory and Its Applications Vol. 2, 2nd ed., John Wiley and Sons, 1991, p. 79.
ran.dist.BaldingNichols(F, p)
Probability density function for the Balding-Nichols distribution:
where , and . Support: . It is simply a re-parametrization of the beta distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| F | number | Fixation index. |
| p | number | Allele frequency. |
References
- D.J. Balding and R.A. Nichols, "A method for quantifying differentiation between populations at multi-allelic loci and its implications for investigating identity and paternity", Genetica 96, 3–12, 1995.
ran.dist.Bates(n, a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Number of uniform variates to sum. If not an integer, it is rounded to the nearest one. |
| a | number | Lower boundary of the uniform variate. |
| b | number | Upper boundary of the uniform variate. |
ran.dist.Bates.fit(data)
Estimates distribution parameters from data using profile likelihood over integer n. Overrides the base-class Nelder-Mead because Math.round(n) makes the likelihood a staircase in n; instead, n is enumerated over a grid centred on the moment estimate and (a, b) are optimised continuously at each fixed n.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of sample values. |
Returns
BatesFitted distribution.
ran.dist.Benini(alpha, beta, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
| sigma | number | Scale parameter. |
ran.dist.BenktanderII(a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Scale parameter. |
| b | number | Shape parameter. |
ran.dist.Bernoulli(p)
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | Probability of the outcome 1. |
ran.dist.Beta(alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.BetaBinomial(n, alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Number of trials. |
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.BetaGeometric(alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.BetaNegativeBinomial(r, alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| r | number | Number of successes (rounded to nearest integer). |
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.BetaPrime(alpha, beta)
Probability density function for the beta prime distribution (also known as inverted beta):
with and is the beta function. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.BetaRectangular(alpha, beta, theta, a, b)
Probability density function for the beta-rectangular distribution:
with , , , and is the beta function. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
| theta | number | Mixture parameter. |
| a | number | Lower boundary of the support. |
| b | number | Upper boundary of the support. |
ran.dist.Binomial(n, p)
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Number of trials. |
| p | number | Probability of success. |
ran.dist.BirnbaumSaunders(mu, beta, gamma)
Probability density function for the Birnbaum-Saunders distribution (also known as fatigue life distribution):
with , , and is the probability density function of the standard normal distribution. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| beta | number | Scale parameter. |
| gamma | number | Shape parameter. |
ran.dist.Borel(mu)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Distribution parameter. |
ran.dist.BorelTanner(mu, n)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Distribution parameter. |
| n | number | Number of Borel distributed variates to add. If not an integer, it is rounded to the nearest one. |
ran.dist.BoundedPareto(L, H, alpha)
Parameters
| Name | Type | Description |
|---|---|---|
| L | number | Lower boundary. |
| H | number | Upper boundary. |
| alpha | number | Shape parameter. |
ran.dist.Bradford(c)
Parameters
| Name | Type | Description |
|---|---|---|
| c | number | Shape parameter. |
ran.dist.Burr(c, k)
Probability density function for the Burr (XII) distribution (also known as Singh-Maddala distribution):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| c | number | First shape parameter. |
| k | number | Second shape parameter. |
ran.dist.Categorical(weights, min)
Parameters
| Name | Type | Description |
|---|---|---|
| weights | number[] | Weights for the distribution (doesn't need to be normalized). |
| min | number | Lowest value to sample (support starts at this value). |
ran.dist.Categorical.fit(data)
Estimates the categorical distribution from data via maximum likelihood. The MLE is closed-form (empirical frequencies of the observed integer categories) so this override skips the optimizer. See decisions/0016-distribution-fit-powell-and-exact-mle.md.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of integer observations to fit. |
Returns
CategoricalA new Categorical instance with MLE parameters.
ran.dist.Cauchy(x0, gamma)
Parameters
| Name | Type | Description |
|---|---|---|
| x0 | number | Location parameter. |
| gamma | number | Scale parameter. |
ran.dist.Champernowne(alpha, lambda, x0)
Probability density function for the Champernowne distribution:
with normalization constant , where , , and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. Must be positive. |
| lambda | number | Asymmetry parameter. Must satisfy 0 <= lambda < 1. |
| x0 | number | Location parameter. |
ran.dist.Chi(k)
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | Degrees of freedom. If not an integer, is rounded to the nearest integer. |
ran.dist.Chi2(k)
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | Degrees of freedom. If not an integer, is rounded to the nearest one. |
ran.dist.ConwayMaxwellPoisson(lambda, nu)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Rate parameter (lambda > 0). |
| nu | number | Dispersion parameter (nu > 0). nu = 1 gives Poisson, nu > 1 gives underdispersion. |
ran.dist.Dagum(p, a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | First shape parameter. |
| a | number | Second shape parameter. |
| b | number | Scale parameter. |
ran.dist.Davis(mu, b, n)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| b | number | Scale parameter. |
| n | number | Shape parameter. Must be greater than 1. |
ran.dist.Degenerate(x0)
Parameters
| Name | Type | Description |
|---|---|---|
| x0 | number | Location of the distribution. |
ran.dist.Delaporte(alpha, beta, lambda)
Probability mass function for the Delaporte distribution:
with . Support: . For , it is the negative binomial, and for it is the [Poisson distribution]#dist.Poisson. Note that these special cases are not covered by this class. For these distributions, please refer to the corresponding generators.
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter of the gamma component. Default component is 1. |
| beta | number | Scale parameter of the gamma component. |
| lambda | number | Mean of the Poisson component. |
ran.dist.DiscreteUniform(xmin, xmax)
Parameters
| Name | Type | Description |
|---|---|---|
| xmin | number | Lower boundary. If not an integer, it is rounded to the nearest one. |
| xmax | number | Upper boundary. If not an integer, it is rounded to the nearest one. |
ran.dist.DiscreteWeibull(q, beta)
Probability mass function for the discrete Weibull distribution (using the original parametrization):
with and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| q | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.DoubleGamma(alpha, beta)
Probability density function for the double gamma distribution (with the same shape/rate parametrization that the [gamma distribution]#dist.Gamma uses):
where . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Rate parameter. |
ran.dist.DoubleWeibull(lambda, k)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Scale parameter. |
| k | number | Shape parameter. |
ran.dist.DoublyNoncentralBeta(alpha, beta, lambda1, lambda2)
Probability density function for the doubly non-central beta distribution:
where and . Support: . Formula from C. Orsi. New insights into non-central beta distributions. arXiv:1706.08557, 2017, Eq. (21).
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
| lambda1 | number | First non-centrality parameter. |
| lambda2 | number | Second non-centrality parameter. |
ran.dist.DoublyNoncentralChi2(k1, k2, lambda1, lambda2)
Probability density function for the doubly non-central distribution:
where is the central density with degrees of freedom, and . Support: . Formula follows from the Poisson-mixture representation of the non-central χ² in P. B. Patnaik. The non-central χ²- and F-distributions and their applications. Biometrika, 36(1–2):202–232, 1949.
Non-identifiability warning: DoublyNoncentralChi2(k1, k2, λ1, λ2) is statistically identical to NoncentralChi2(k1+k2, λ1+λ2) — the PDF and CDF depend only on the sums. Only the sums k1+k2 and λ1+λ2 are identifiable from data. After calling fit(), the individual parameters are an arbitrary symmetric split of the fitted sums; do not interpret them individually.
Parameters
| Name | Type | Description |
|---|---|---|
| k1 | number | First degrees of freedom. If not an integer, it is rounded to the nearest one. |
| k2 | number | Second degrees of freedom. If not an integer, it is rounded to the nearest one. |
| lambda1 | number | First non-centrality parameter. |
| lambda2 | number | Second non-centrality parameter. |
ran.dist.DoublyNoncentralChi2.fit(data)
Fits a DoublyNoncentralChi2 to data. Because DNCχ²(k1,k2,λ1,λ2) ≡ ncχ²(k1+k2,λ1+λ2), only the sums are identifiable; fitting is performed in the collapsed 2D space and the result is split symmetrically.
Parameters
| Name | Type | Description |
|---|---|---|
| data | number[] | Array of sample values. |
Returns
DoublyNoncentralChi2Fitted distribution with k1+k2 and lambda1+lambda2 equal to the MLE sums, split symmetrically.
ran.dist.DoublyNoncentralF(d1, d2, lambda1, lambda2)
Probability density function for the doubly non-central F distribution:
where and . Support: . Formula from M. L. Tiku. Series expansions for the doubly non-central F-distribution. Australian Journal of Statistics, 7(2):78–89, 1965.
Parameters
| Name | Type | Description |
|---|---|---|
| d1 | number | First degrees of freedom. If not an integer, it is rounded to the nearest one. |
| d2 | number | Second degrees of freedom. If not an integer, it is rounded to the nearest one. |
| lambda1 | number | First non-centrality parameter. |
| lambda2 | number | Second non-centrality parameter. |
ran.dist.DoublyNoncentralT(nu, mu, theta)
Probability density function for the doubly non-central t distribution:
where , and . Support: . Implementation is based on Section 10.4.1.2 in Marc S. Paolella. Intermediate Probability: A Computational Approach. (2007)
Parameters
| Name | Type | Description |
|---|---|---|
| nu | number | Degrees of freedom. If not an integer, it is rounded to the nearest one. |
| mu | number | Location parameter. |
| theta | number | Shape parameter. |
ran.dist.Erlang(k, lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | Shape parameter. It is rounded to the nearest integer. |
| lambda | number | Rate parameter. |
ran.dist.Exponential(lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Rate parameter. |
ran.dist.ExponentialLogarithmic(p, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | Shape parameter. |
| beta | number | Scale parameter. |
ran.dist.ExponentiatedWeibull(lambda, k, alpha)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Scale parameter. |
| k | number | First shape parameter. |
| alpha | number | Second shape parameter. |
ran.dist.F(d1, d2)
Probability density function for the F distribution (or Fisher-Snedecor's F distribution):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| d1 | number | First degree of freedom. If not an integer, it is rounded to the nearest one. |
| d2 | number | Second degree of freedom. If not an integer, it is rounded to the nearest one. |
ran.dist.FisherZ(d1, d2)
Parameters
| Name | Type | Description |
|---|---|---|
| d1 | number | First degree of freedom. |
| d2 | number | Second degree of freedom. |
ran.dist.FlorySchulz(a)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Shape parameter. |
ran.dist.Frechet(alpha, s, m)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| s | number | Scale parameter. |
| m | number | Location parameter. |
ran.dist.Gamma(alpha, beta)
Probability density function for the gamma distribution using the shape/rate parametrization:
where . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Rate parameter. |
References
- G. Marsaglia and W. W. Tsang, "A Simple Method for Generating Gamma Variables", ACM Trans. Math. Softw. 26(3), 363–372, 2000.
ran.dist.GammaGompertz(b, s, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| b | number | Scale parameter. |
| s | number | First shape parameter. |
| beta | number | Second shape parameter. |
ran.dist.GeneralizedExponential(a, b, c)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | First shape parameter. |
| b | number | Second shape parameter. |
| c | number | Third shape parameter. |
ran.dist.GeneralizedExtremeValue(c)
Probability density function for the generalized extreme value distribution:
with . Support: if , otherwise.
Parameters
| Name | Type | Description |
|---|---|---|
| c | number | Shape parameter. |
ran.dist.GeneralizedGamma(a, d, p)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Scale parameter. |
| d | number | Shape parameter. |
| p | number | Shape parameter. |
ran.dist.GeneralizedHermite(a1, a2, m)
Probability mass function for the generalized Hermite distribution:
where , , , and . Support: . It is the distribution of where are Poisson variates with parameters respectively.
Parameters
| Name | Type | Description |
|---|---|---|
| a1 | number | Mean of the first Poisson component. |
| a2 | number | Mean of the second Poisson component. |
| m | number | Multiplier of the second Poisson. If not an integer, it is rounded to the nearest one. |
ran.dist.GeneralizedLogistic(mu, s, c)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| s | number | Scale parameter. |
| c | number | Shape parameter. |
ran.dist.GeneralizedNormal(mu, alpha, beta)
Probability density function for the generalized normal distribution:
where and . Support: . It is also a special case of the generalized gamma distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location paramameter. |
| alpha | number | Scale parameter. |
| beta | number | Shape parameter. |
ran.dist.GeneralizedPareto(mu, sigma, xi)
Probability density function for the generalized Pareto distribution:
with , and . Support: if , otherwise.
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
| xi | number | Shape parameter. |
ran.dist.Geometric(p)
Probability mass function for the geometric distribution (the number of failures before the first success definition):
with . Support: . Note that the discrete exponential distribution is also a geometric distribution with rate parameter equal to .
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | Probability of success. |
ran.dist.Gilbrat()
Probability density function for the Gilbrat's distribution:
Support: . Note that this distribution is simply a special case of the log-normal.
ran.dist.Gompertz(eta, b)
Parameters
| Name | Type | Description |
|---|---|---|
| eta | number | Shape parameter. |
| b | number | Scale parameter. |
ran.dist.Gumbel(mu, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| beta | number | Scale parameter. |
ran.dist.HalfGeneralizedNormal(alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Scale parameter. |
| beta | number | Shape parameter. |
ran.dist.HalfLogistic()
ran.dist.HalfNormal(sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| sigma | number | Scale parameter. |
ran.dist.HeadsMinusTails(n)
Probability mass function for the absolute-value (folded) heads-minus-tails distribution, i.e. the distribution of where is the number of heads in fair coin flips and is the number of tails. This is the non-negative folded variant; the signed distribution (support ) is described at the MathWorld reference below:
where . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Half number of trials (n > 0). |
References
ran.dist.Hoyt(q, omega)
Probability density function for the Nakagami distribution (previously mis-labelled as the Hoyt distribution):
where and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| q | number | Shape parameter (same as m in Nakagami). |
| omega | number | Spread parameter. |
References
- ran.dist.Nakagami
ran.dist.HyperbolicSecant()
ran.dist.Hypergeometric(N, K, n)
Parameters
| Name | Type | Description |
|---|---|---|
| N | number | Total number of elements to sample from. If not an integer, it is rounded to the nearest one. |
| K | number | Total number of successes. If not an integer, it is rounded to the nearest one. |
| n | number | Number of draws. If not an integer, it is rounded to the nearest one. |
ran.dist.InverseChi2(nu)
Parameters
| Name | Type | Description |
|---|---|---|
| nu | number | Degrees of freedom. |
ran.dist.InverseGamma(alpha, beta)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Scale parameter. |
ran.dist.InverseGaussian(mu, lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Mean of the distribution. |
| lambda | number | Shape parameter. |
References
- J. R. Michael, W. R. Schucany and R. W. Haas, "Generating Random Variates Using Transformations with Multiple Roots", Am. Stat. 30(2), 88–90, 1976.
ran.dist.InvertedWeibull(c)
Parameters
| Name | Type | Description |
|---|---|---|
| c | number | Shape parameter. |
ran.dist.JohnsonSB(gamma, delta, lambda, xi)
Parameters
| Name | Type | Description |
|---|---|---|
| gamma | number | First location parameter. |
| delta | number | First scale parameter. |
| lambda | number | Second scale parameter. |
| xi | number | Second location parameter. |
ran.dist.JohnsonSU(gamma, delta, lambda, xi)
Parameters
| Name | Type | Description |
|---|---|---|
| gamma | number | First location parameter. |
| delta | number | First scale parameter. |
| lambda | number | Second scale parameter. |
| xi | number | Second location parameter. |
ran.dist.Kolmogorov()
ran.dist.Kumaraswamy(a, b)
Probability density function for the Kumaraswamy distribution (also known as Minimax distribution):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | First shape parameter. |
| b | number | Second shape parameter. |
ran.dist.Laplace(mu, b)
Probability density function for the Laplace distribution (also known as double exponential distribution):
where and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| b | number | Scale parameter. |
ran.dist.Levy(mu, c)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| c | number | Scale parameter. |
ran.dist.Lindley(theta)
Parameters
| Name | Type | Description |
|---|---|---|
| theta | number | Shape parameter. |
ran.dist.Logarithmic(a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower boundary of the distribution. |
| b | number | Upper boundary of the distribution. |
ran.dist.LogCauchy(mu, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
ran.dist.LogGamma(alpha, beta, mu)
Probability density function for the log-gamma distribution using the shape/rate parametrization:
where and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Rate parameter. |
| mu | number | Location parameter. |
ran.dist.Logistic(mu, s)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| s | number | Scale parameter. |
ran.dist.LogisticExponential(lambda, kappa)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Scale parameter. |
| kappa | number | Shape parameter. |
ran.dist.LogitNormal(mu, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
ran.dist.LogLaplace(mu, b)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| b | number | Scale parameter. |
ran.dist.LogLogistic(alpha, beta)
Probability density function for the log-logistic distribution (also known as Fisk distribution):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Scale parameter. |
| beta | number | Shape parameter. |
ran.dist.LogNormal(mu, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
ran.dist.LogSeries(p)
Parameters
| Name | Type | Description |
|---|---|---|
| p | number | Distribution parameter. |
References
- A. Kemp, "Efficient generation of logarithmically distributed pseudo-random variables", Appl. Stat. 30(3), 249–253, 1981.
ran.dist.Lomax(lambda, alpha)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Scale parameter. |
| alpha | number | Shape parameter. |
ran.dist.Makeham(alpha, beta, lambda)
Probability density function for the Makeham distribution (also known as Gompertz-Makeham distribution):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
| beta | number | Rate parameter. |
| lambda | number | Scale parameter. |
ran.dist.MaxwellBoltzmann(a)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Scale parameter. |
ran.dist.Mielke(k, s)
Probability density function for the Mielke distribution:
with . Support: . It can be viewed as a re-parametrization of the Dagum distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | First shape parameter. |
| s | number | Second shape parameter. |
ran.dist.Moyal(mu, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
ran.dist.Muth(alpha)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | Shape parameter. |
ran.dist.Nakagami(m, omega)
Parameters
| Name | Type | Description |
|---|---|---|
| m | number | Shape parameter. |
| omega | number | Spread parameter. |
ran.dist.NegativeHypergeometric(N, K, r)
Parameters
| Name | Type | Description |
|---|---|---|
| N | number | Total number of elements to sample from. If not an integer, it is rounded to the nearest one. |
| K | number | Total number of successes. If not an integer, it is rounded to the nearest one. |
| r | number | Total number of failures to stop at. If not an integer, it is rounded to the nearest one. |
ran.dist.NeymanA(lambda, phi)
Probability mass function for the Neyman type A distribution:
where and denotes the Stirling number of the second kind. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Mean of the number of clusters. |
| phi | number | Mean of the cluster size. |
ran.dist.NoncentralBeta(alpha, beta, lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| alpha | number | First shape parameter. |
| beta | number | Second shape parameter. |
| lambda | number | Non-centrality parameter. |
ran.dist.NoncentralChi(k, lambda)
Probability density function for the non-central distribution:
with , and is the modified Bessel function of the first kind with order . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | Degrees of freedom. If not an integer, it is rounded to the nearest one. |
| lambda | number | Non-centrality parameter. |
ran.dist.NoncentralChi2(k, lambda)
Probability density function for the non-central distribution:
with , and is the modified Bessel function of the first kind with order . Support: . When the distribution degenerates to a central .
Parameters
| Name | Type | Description |
|---|---|---|
| k | number | Degrees of freedom. If not an integer, it is rounded to the nearest one. |
| lambda | number | Non-centrality parameter. |
ran.dist.NoncentralF(d1, d2, lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| d1 | number | First degree of freedom. If not an integer, it is rounded to the nearest one. |
| d2 | number | Second degree of freedom. If not an integer, it is rounded to the nearest one. |
| lambda | number | Non-centrality parameter. |
ran.dist.NoncentralT(nu, mu)
Parameters
| Name | Type | Description |
|---|---|---|
| nu | number | Degrees of freedom. If not an integer, it is rounded to the nearest one. |
| mu | number | Non-centrality parameter. |
ran.dist.Normal(mu, sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter (mean). |
| sigma | number | Squared scale parameter (variance). |
References
ran.dist.Pareto(xmin, alpha)
Parameters
| Name | Type | Description |
|---|---|---|
| xmin | number | Scale parameter. |
| alpha | number | Shape parameter. |
ran.dist.PERT(a, b, c)
Probability density function for the PERT distribution:
where , , , and is the beta function. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower boundary of the support. |
| b | number | Mode of the distribution. |
| c | number | Upper boundary of the support. |
ran.dist.Poisson(lambda)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Mean of the distribution. |
References
- D. E. Knuth, "Seminumerical Algorithms", The Art of Computer Programming vol. 2, 1969 (small λ). A. C. Atkinson, "The Computer Generation of Poisson Random Variables", Appl. Stat. 28(1), 29–35, 1979 (large λ).
ran.dist.PolyaAeppli(lambda, theta)
Probability mass function for the Pólya-Aeppli distribution (also known as geometric Poisson distribution):
where and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Mean of the Poisson component. |
| theta | number | Parameter of the shifted geometric component. |
ran.dist.PowerLaw(a)
Probability density function for the power-law distribution (also called power-law distribution):
with . Support: . It is a special case of the Kumaraswamy distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | One plus the exponent of the distribution. |
ran.dist.QExponential(q, lambda)
Probability density function for the q-exponential distribution:
where , and denotes the q-exponential function. Support: if , otherwise .
Parameters
| Name | Type | Description |
|---|---|---|
| q | number | Shape parameter. |
| lambda | number | Rate parameter. |
ran.dist.R(c)
Parameters
| Name | Type | Description |
|---|---|---|
| c | number | Shape parameter. |
ran.dist.Rademacher()
ran.dist.RaisedCosine(mu, s)
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location paramter. |
| s | number | Scale parameter. |
ran.dist.Rayleigh(sigma)
Parameters
| Name | Type | Description |
|---|---|---|
| sigma | number | Scale parameter. |
ran.dist.Reciprocal(a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower boundary of the support. |
| b | number | Upper boundary of the support. |
ran.dist.ReciprocalInverseGaussian(mu, lambda)
Probability density function for the reciprocal inverse Gaussian distribution (RIG):
with . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Mean of the inverse Gaussian distribution. |
| lambda | number | Shape parameter. |
ran.dist.Rice(nu, sigma)
Probability density function for the Rice distribution:
with and is the modified Bessel function of the first kind with order zero. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| nu | number | First shape parameter. |
| sigma | number | Second shape parameter. |
ran.dist.ShiftedLogLogistic(mu, sigma, xi)
Probability density function for the shifted log-logistic distribution:
with , and . Support: if , if , otherwise.
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Location parameter. |
| sigma | number | Scale parameter. |
| xi | number | Shape parameter. |
ran.dist.Skellam(mu1, mu2)
Probability mass function for the Skellam distribution:
with and is the modified Bessel function of the first kind with order . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| mu1 | number | Mean of the first Poisson distribution. |
| mu2 | number | Mean of the second Poisson distribution. |
ran.dist.SkewNormal(xi, omega, alpha)
Probability density function for the skew normal distribution:
where , and , denote the probability density and cumulative distribution functions of the standard normal distribution. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| xi | number | Location parameter. |
| omega | number | Scale parameter. |
| alpha | number | Shape parameter. |
References
ran.dist.Slash()
Probability density function for the slash distribution:
where is the probability density function of the standard normal distribution. Support: .
ran.dist.Soliton(N)
Parameters
| Name | Type | Description |
|---|---|---|
| N | number | Number of blocks in the messaging model. If not an integer, it is rounded to the nearest one. |
ran.dist.StudentT(nu)
Parameters
| Name | Type | Description |
|---|---|---|
| nu | number | Degrees of freedom. |
ran.dist.StudentZ(n)
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Degrees of freedom. |
ran.dist.Trapezoidal(a, b, c, d)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower bound of the support. |
| b | number | Start of the level part. |
| c | number | End of the level part. |
| d | number | Upper bound of the support. |
ran.dist.Triangular(a, b, c)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower bound of the support. |
| b | number | Upper bound of the support. |
| c | number | Mode of the distribution. |
ran.dist.TruncatedNormal(mu, sigma, a, b)
Probability density function for the truncated normal distribution:
where and . The functions and denote the probability density and cumulative distribution functions of the normal distribution. Finally, , and . Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| mu | number | Mean of the underlying normal distribution. |
| sigma | number | Variance of the underlying normal distribution. |
| a | number | Lower boundary of the support. |
| b | number | Upper boundary of the support. |
ran.dist.TukeyLambda(lambda)
Probability density function for the Tukey lambda distribution:
where and . Support: if , otherwise .
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Shape parameter. |
ran.dist.Uniform(xmin, xmax)
Parameters
| Name | Type | Description |
|---|---|---|
| xmin | number | Lower boundary. |
| xmax | number | Upper boundary. |
ran.dist.UniformProduct(n)
Parameters
| Name | Type | Description |
|---|---|---|
| n | number | Number of uniform factors. If not an integer, it is rounded to the nearest one. |
ran.dist.UniformRatio()
ran.dist.UQuadratic(a, b)
Parameters
| Name | Type | Description |
|---|---|---|
| a | number | Lower bound of the support. |
| b | number | Upper bound of the support. |
ran.dist.VonMises(kappa)
Probability density function for the von Mises distribution:
with . Support: . Note that originally this distribution is periodic and therefore it is defined over , but (without the loss of general usage) this implementation still does limit the support on the bounded interval .
Parameters
| Name | Type | Description |
|---|---|---|
| kappa | number | Shape parameter. |
References
- L. Barabesi, "Generating von Mises variates by the ratio-of-uniforms method", Statistica Applicata 7(4), 417–426, 1995.
ran.dist.Weibull(lambda, k)
Parameters
| Name | Type | Description |
|---|---|---|
| lambda | number | Scale parameter. |
| k | number | Shape parameter. |
ran.dist.Wigner(R)
Parameters
| Name | Type | Description |
|---|---|---|
| R | number | Radius of the distribution. |
ran.dist.YuleSimon(rho)
Parameters
| Name | Type | Description |
|---|---|---|
| rho | number | Shape parameter. |
ran.dist.Zeta(s)
Probability mass function for the zeta distribution:
with and is the Riemann zeta function. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| s | number | Exponent of the distribution. |
References
- L. Devroye, "Non-Uniform Random Variate Generation", Springer-Verlag, 1986, ch. 10.
ran.dist.Zipf(s, N)
Probability mass function for the Zipf distribution:
with , and denotes the generalized harmonic number. Support: .
Parameters
| Name | Type | Description |
|---|---|---|
| s | number | Exponent of the distribution. |
| N | number | Number of words. If not an integer, it is rounded to the nearest integer. Default is 100. |
ran.dist.ZipfMandelbrot(N, s, q)
Parameters
| Name | Type | Description |
|---|---|---|
| N | number | Number of elements (support size). If not an integer, it is rounded to the nearest integer. |
| s | number | Exponent of the distribution. |
| q | number | Shift parameter. |
ran.location.geometricMean(values)
Calculates the geometric mean of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate geometric mean for. |
Returns
numberGeometric mean of the values, NaN for empty input.
Examples
ran.location.geometricMean([])
// => NaN
ran.location.geometricMean([1, 2, 3])
// => 1.8171205928321394ran.location.harmonicMean(values)
Calculates the harmonic mean of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate harmonic mean for. |
Returns
numberHarmonic mean of the values, NaN if any value is non-positive.
Examples
ran.location.harmonicMean([])
// => NaN
ran.location.harmonicMean([0, 1, 2])
// => NaN
ran.location.harmonicMean([-1, 2, 3])
// => NaN
ran.location.harmonicMean([1, 2, 3])
// => 1.6363636363636365ran.location.mean(values)
Calculates the arithmetic mean of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate mean for. |
Returns
numberMean of the values, NaN for empty input.
Examples
ran.location.mean([])
// => NaN
ran.location.mean([1, 2, 3])
// => 2ran.location.median(values)
Calculates the median of a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate median for. |
Returns
numberMedian of the values, NaN for empty input.
Examples
ran.location.median([])
// => NaN
ran.location.median([1, 2, 3, 4])
// => 2.5ran.location.midrange(values)
Calculates the mid-range for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate mid-range for. |
Returns
numberThe mid-range of the values, NaN for empty input.
Examples
ran.location.midrange([])
// => NaN
ran.location.midrange([0, 0, 0, 1, 2])
// => 1ran.location.mode(values)
Calculates the mode(s) of a sample. In case of discrete values (integers), it returns the values corresponding to the highest frequencies in ascending order. For continuous sample, the mode is estimated using the half-sample mode algorithm.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate mode for. |
Returns
numbernumber[]The estimated mode (continuous sample) or an array of modes (discrete sample). Returns an empty array for empty input.
Examples
ran.location.mode([])
// => []
ran.location.mode([1])
// => [1]
ran.location.mode([1, 1, 2, 2, 3])
// => [1, 2]
ran.location.mode([1, 2, 2, 2, 3])
// => [2]
ran.location.mode([1.2, 3.4, 5.6])
// => 4.5ran.location.trimean(values)
Calculates the trimean for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate trimean for. |
Returns
numberThe trimean of the values, NaN for empty input.
Examples
ran.location.trimean([])
// => NaN
ran.location.trimean([1, 1, 1, 2, 3])
// => 1.25ran.shape.kurtosis(values)
Calculates the sample excess kurtosis which is unbiased for the normal distribution.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate kurtosis for. |
Returns
numberThe sample excess kurtosis, or NaN for fewer than 3 elements or zero variance.
Examples
ran.shape.kurtosis([])
// => NaN
ran.shape.kurtosis([1, 2])
// => NaN
ran.shape.kurtosis([1, 1, 1])
// => NaN
ran.shape.kurtosis([1, 1, 3, 1, 1])
// => 5.000000000000003
ran.shape.kurtosis([1, 2, 2, 2, 1])
// => -3.3333333333333326ran.shape.max(values)
Returns the maximum of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to find the maximum for. |
Returns
numberThe maximum of the values, or NaN for an empty array.
Examples
ran.shape.max([])
// => NaN
ran.shape.max([3, 1, 4, 1, 5, 9])
// => 9ran.shape.min(values)
Returns the minimum of an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to find the minimum for. |
Returns
numberThe minimum of the values, or NaN for an empty array.
Examples
ran.shape.min([])
// => NaN
ran.shape.min([3, 1, 4, 1, 5, 9])
// => 1ran.shape.moment(values, k[, c])
Calculates the k-th raw moment for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate moment for. |
| k | number | Order of the moment. |
| c | number | Value to shift the distribution by before calculating the moment. |
Returns
numberThe k-th moment, or NaN for an empty array.
Examples
ran.shape.moment([], 2)
// => NaN
ran.shape.moment([1, 2, 3], 0)
// => 1
ran.shape.moment([1, 2, 3], 2)
// => 4.666666666666667ran.shape.quantile(values, p)
Calculates the quantile at 0 < p < 1 using the R-7 algorithm.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate quantile for. |
| p | number | Value to calculate quantile at. |
Returns
numberThe quantile of the sample, or NaN for an empty array.
ran.shape.rank(values)
Calculates the fractional rank for an array of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate ranks for. |
Returns
number[]The ranks of the values, or an empty array for empty input.
Examples
ran.shape.rank([])
// => []
ran.shape.rank([1, 2, 2, 3])
// => [1, 2.5, 2.5, 4]ran.shape.skewness(values)
Calculates the Fisher-Pearson standardized sample skewness for a sample of values.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate skewness for. |
Returns
numberThe sample skewness, or NaN for fewer than 3 elements or zero variance.
Examples
ran.shape.skewness([])
// => NaN
ran.shape.skewness([1, 2])
// => NaN
ran.shape.skewness([1, 1, 1])
// => NaN
ran.shape.skewness([1, 1, 1, 2])
// => 2
ran.shape.skewness([1, 2, 2, 2])
// => -2ran.shape.yule(values)
Calculates Yule's coefficient which is a measure of skewness based on quantiles.
Parameters
| Name | Type | Description |
|---|---|---|
| values | number[] | Array of values to calculate Yule's coefficient for. |
Returns
numberYule's coefficient, or NaN for an empty array or when the lower and upper quartiles are equal.
Examples
ran.shape.yule([])
// => NaN
ran.shape.yule([1, 1, 1])
// => NaN
ran.shape.yule([1, 1, 1, 2])
// => 1
ran.shape.yule([1, 2, 2, 2])
// => -1ran.test.bartlett(dataSets[, alpha])
Calculates the Bartlett statistics for multiple data sets.
Parameters
| Name | Type | Description |
|---|---|---|
| dataSets | Array[] | Array containing the data sets. |
| alpha | number | Confidence level. |
Returns
Object containing the test statistics (chi2) and whether the data sets passed the null hypothesis that their variances are the same.
Throws
ErrorErrorExamples
let normal1 = new ran.dist.Normal(1, 2)
let normal2 = new ran.dist.Normal(1, 3)
let normal3 = new ran.dist.Normal(1, 5)
ran.test.bartlett([normal1.sample(100), normal1.sample(100), normal1.sample(100)], 0.1)
// => { stat: 0.09827551592930094, passed: true }
ran.test.bartlett([normal1.sample(100), normal2.sample(100), normal3.sample(100)], 0.1)
// => { stat: 104.31185521417476, passed: false }ran.test.brownForsythe(dataSets[, alpha])
Calculates the Brown-Forsythe test statistic for multiple data sets.
Parameters
| Name | Type | Description |
|---|---|---|
| dataSets | Array[] | Array containing the data sets. |
| alpha | number | Confidence level. |
Returns
Object containing the test statistics (W) and whether the data sets passed the null hypothesis that their variances are the same.
Throws
ErrorErrorExamples
let normal1 = new ran.dist.Normal(1, 2)
let normal2 = new ran.dist.Normal(1, 3)
let normal3 = new ran.dist.Normal(1, 5)
ran.test.brownForsythe([normal1.sample(100), normal1.sample(100), normal1.sample(100)], 0.1)
// => { stat: 1.0664885130451343, passed: true }
ran.test.brownForsythe([normal1.sample(100), normal2.sample(100), normal3.sample(100)], 0.1)
// => { stat: 27.495614343570345, passed: false }ran.test.hsic(dataSets[, alpha])
Calculates the Hilbert-Schmidt independence criterion (HSIC) for paired arrays of values. HSIC tests if two data sets are statistically independent. Source: A. Gretton et al. A Kernel Statistical Test of Independence in Advances in Neural Information Processing Systems (2008).
Parameters
| Name | Type | Description |
|---|---|---|
| dataSets | Array[] | Array containing the two data sets. |
| alpha | number | Confidence level. |
Returns
Object containing the test statistics and whether the data sets passed the null hypothesis that they are statistically independent.
Throws
ErrorErrorErrorExamples
let sample1 = Array.from({length: 50}, (d, i) => i)
let sample2 = sample1.map(d => d + Math.random() - 0.5)
ran.test.hsic([sample1, sample2])
// => { stat: 6.197628059960943, passed: false }
sample1 = ran.core.float(0, 10, 50)
sample2 = ran.core.float(0, 10, 50)
ran.test.hsic([sample1, sample2])
// => { stat: 0.3876607680368274, passed: true }ran.test.levene(dataSets, alpha)
Calculates the Levene's test statistic for multiple data sets.
Parameters
| Name | Type | Description |
|---|---|---|
| dataSets | Array[] | Array containing the data sets. |
| alpha | number | Confidence level. |
Returns
Object containing the test statistics (W) and whether the data sets passed the null hypothesis that their variances are the same.
Throws
ErrorErrorExamples
let normal1 = new ran.dist.Normal(1, 2)
let normal2 = new ran.dist.Normal(1, 3)
let normal3 = new ran.dist.Normal(1, 5)
ran.test.levene([normal1.sample(100), normal1.sample(100), normal1.sample(100)], 0.1)
// => { stat: 0.019917137672045088, passed: true }
ran.test.levene([normal1.sample(100), normal2.sample(100), normal3.sample(100)], 0.1)
// => { stat: 29.06345994086687, passed: false }ran.test.mannWhitney(dataSets[, alpha])
Calculates the Mann-Whitney statistics for two data sets.
Parameters
| Name | Type | Description |
|---|---|---|
| dataSets | Array[] | Array containing the two data sets. |
| alpha | number | Confidence level. |
Returns
Object containing the (non-standardized) test statistics (U) and whether the data sets passed the null hypothesis that the samples come from the same distribution.
Throws
ErrorExamples
let pareto = new ran.dist.Pareto(1, 2)
let uniform = new ran.dist.Uniform(1, 10)
ran.test.mannWhitney([pareto.sample(100), pareto.sample(100)], 0.1)
// => { stat: 4941, passed: true }
ran.test.mannWhitney([pareto.sample(100), uniform.sample(100)], 0.1)
// => { stat: 132, passed: false }