JavaScript must be enabled in order for you to use JSXGraph and JSXGraph reference. However, it seems JavaScript is either disabled or not supported by your browser.

Class Index | File Index

Elements
Classes

Namespace JXG.Math.Statistics


      ↳ JXG.Math.Statistics



Defined in: statistics.js.

Namespace Summary
Constructor Attributes Constructor Name and Description
 
Functions for mathematical statistics.
Method Summary
Method Attributes Method Name and Description
<static>  
JXG.Math.Statistics.abs(arr)
Determines the absolute value of every given value.
<static>  
JXG.Math.Statistics.add(arr1, arr2)
Adds up two (sequences of) values.
<static>  
JXG.Math.Statistics.div(arr1, arr2)
Divides two (sequences of) values.
<static> <deprecated>  
JXG.Math.Statistics.divide()
<static>  
JXG.Math.Statistics.generateGaussian(mean, stdDev)
Generate values of a standard normal random variable with the Marsaglia polar method, see https://en.wikipedia.org/wiki/Marsaglia_polar_method.
<static>  
JXG.Math.Statistics.histogram(x, opt)
Compute the histogram of a dataset.
<static>  
JXG.Math.Statistics.max(arr)
Extracts the maximum value from the array.
<static>  
JXG.Math.Statistics.mean(arr)
Determines the mean value of the values given in an array.
<static>  
JXG.Math.Statistics.median(arr)
The median of a finite set of values is the value that divides the set into two equal sized subsets.
<static>  
JXG.Math.Statistics.min(arr)
Extracts the minimum value from the array.
<static>  
JXG.Math.Statistics.mod(arr1, arr2, math)
Divides two (sequences of) values and returns the remainder.
<static>  
JXG.Math.Statistics.multiply(arr1, arr2)
Multiplies two (sequences of) values.
<static>  
JXG.Math.Statistics.percentile(arr, percentile)
The P-th percentile ( 0 < P ≤ 100 ) of a list of N ordered values (sorted from least to greatest) is the smallest value in the list such that no more than P percent of the data is strictly less than the value and at least P percent of the data is less than or equal to that value.
<static>  
JXG.Math.Statistics.prod(arr)
Multiplies all elements of the given array.
<static>  
JXG.Math.Statistics.randomBeta(alpha, beta)
Generate value of a random variable with beta distribution with shape parameters alpha and beta.
<static>  
JXG.Math.Statistics.randomBinomial(n, p)
Generate values for a random variable in binomial distribution with parameters n and p.
<static>  
JXG.Math.Statistics.randomChisquare(k)
Generate value of a random variable with chi-square distribution with k degrees of freedom.
<static>  
JXG.Math.Statistics.randomExponential(lambda)
Generate value of a random variable with exponential distribution, i.e.
<static>  
JXG.Math.Statistics.randomF(d1, d2)
Generate value of a random variable with F-distribution with d1 and d2 degrees of freedom.
<static>  
JXG.Math.Statistics.randomGamma(a, b, t)
Generate value of a random variable with gamma distribution of order alpha.
<static>  
JXG.Math.Statistics.randomGeometric(p)
Generate values for a random variable in geometric distribution with probability p.
<static>  
JXG.Math.Statistics.randomHypergeometric(good, bad, samples)
Generate values for a random variable in hypergeometric distribution.
<static>  
JXG.Math.Statistics.randomNormal(mean, stdDev)
Generate value of a standard normal random variable with given mean and standard deviation.
<static>  
JXG.Math.Statistics.randomPareto(gamma, k)
Generate values for a random variable in Pareto distribution with shape gamma and scale k.
<static>  
JXG.Math.Statistics.randomPoisson(mu)
Generate values for a random variable in Poisson distribution with mean mu.
<static>  
JXG.Math.Statistics.randomT(nu)
Generate value of a random variable with Students-t-distribution with ν degrees of freedom.
<static>  
JXG.Math.Statistics.randomUniform(a, b)
Generate value of a uniform distributed random variable in the interval [a, b].
<static>  
JXG.Math.Statistics.range(arr)
Determines the lowest and the highest value from the given array.
<static>  
JXG.Math.Statistics.sd(arr)
Determines the standard deviation which shows how much variation there is from the average value of a set of numbers.
<static>  
JXG.Math.Statistics.subtract(arr1, arr2)
Subtracts two (sequences of) values.
<static>  
JXG.Math.Statistics.sum(arr)
Sums up all elements of the given array.
<static>  
JXG.Math.Statistics.TheilSenRegression(coords)
The Theil-Sen estimator can be used to determine a more robust linear regression of a set of sample points than least squares regression in JXG.Math.Numerics.regressionPolynomial.
<static>  
JXG.Math.Statistics.variance(arr)
Bias-corrected sample variance.
<static>  
JXG.Math.Statistics.weightedMean(arr, w)
Weighted mean value is basically the same as JXG.Math.Statistics.mean but here the values are weighted, i.e.
Namespace Detail
JXG.Math.Statistics
Functions for mathematical statistics. Most functions are like in the statistics package R.
Method Detail
<static> {Array|Number} JXG.Math.Statistics.abs(arr)
Determines the absolute value of every given value.
Parameters:
{Array|Number} arr
Returns:
{Array|Number}

<static> {Array|Number} JXG.Math.Statistics.add(arr1, arr2)
Adds up two (sequences of) values. If one value is an array and the other one is a number the number is added to every element of the array. If two arrays are given and the lengths don't match the shortest length is taken.
Parameters:
{Array|Number} arr1
{Array|Number} arr2
Returns:
{Array|Number}

<static> {Array|Number} JXG.Math.Statistics.div(arr1, arr2)
Divides two (sequences of) values. If two arrays are given and the lengths don't match the shortest length is taken.
Parameters:
{Array|Number} arr1
Dividend
{Array|Number} arr2
Divisor
Returns:
{Array|Number}

<static> JXG.Math.Statistics.divide()
Deprecated:
Use JXG.Math.Statistics.div instead.

<static> {Number} JXG.Math.Statistics.generateGaussian(mean, stdDev)
Generate values of a standard normal random variable with the Marsaglia polar method, see https://en.wikipedia.org/wiki/Marsaglia_polar_method. See also D. E. Knuth, The art of computer programming, vol 2, p. 117.
Parameters:
{Number} mean
mean value of the normal distribution
{Number} stdDev
standard deviation of the normal distribution
Returns:
{Number} value of a standard normal random variable

<static> JXG.Math.Statistics.histogram(x, opt)
Compute the histogram of a dataset. Optional parameters can be supplied through a JavaScript object with the following default values:
{
  bins: 10,          // Number of bins
  range: false,      // false or array. The lower and upper range of the bins.
                     // If not provided, range is simply [min(x), max(x)].
                     // Values outside the range are ignored.
  density: false,    // If true, normalize the counts by dividing by sum(counts)
  cumulative: false
}
The function returns an array containing two arrays. The first array is of length bins+1 containing the start values of the bins. The last entry contains the end values of the last bin.

The second array contains the counts of each bin.

Parameters:
{Array} x
{Object} opt
Optional parameters
Returns:
Array [bin, counts] Array bins contains start values of bins, array counts contains the number of entries of x which are contained in each bin.
Examples:
 let board = JXG.JSXGraph.initBoard('jxgbox',
      { boundingbox: [-1.7, .5, 20, -.03], axis: true});
 let board2 = JXG.JSXGraph.initBoard('jxgbox2',
      { boundingbox: [-1.6, 1.1, 20, -.06], axis: true});

  let runs = [
      [0.5, 1.0, 'brown'],
      [1.0, 2.0, 'red'],
      [2.0, 2.0, 'orange'],
      [3.0, 2.0, 'yellow'],
      [5.0, 1.0, 'green'],
      [9.0, 0.5, 'black'],
      [7.5, 1.0, 'purple'],
  ]

  let labelY = .4
  runs.forEach((run,i) => {
      board.create('segment',[[7,labelY-(i/50)],[9,labelY-(i/50)]],{strokeColor:run[2]})
      board.create('text',[10,labelY-(i/50),`k=${run[0]}, θ=${run[1]}`])

      // density
      let x = Array(50000).fill(0).map(() => JXG.Math.Statistics.randomGamma(run[0],run[1]))
      let res = JXG.Math.Statistics.histogram(x, { bins: 50, density: true, cumulative: false, range: [0, 20] });
      board.create('curve', [res[1], res[0]], { strokeColor: run[2], strokeWidth:2});

      // cumulative density
      res = JXG.Math.Statistics.histogram(x, { bins: 50, density: true, cumulative: true, range: [0, 20] });
      res[0].unshift(0)  // add zero to front so cumulative starts at zero
      res[1].unshift(0)
      board2.create('curve', [res[1], res[0]], { strokeColor: run[2], strokeWidth:2 });
  })


  

					
					

<static> {Number} JXG.Math.Statistics.max(arr)
Extracts the maximum value from the array.
Parameters:
{Array} arr
Returns:
{Number} The highest number from the array. It returns NaN if not every element could be interpreted as a number and -Infinity if an empty array is given or no element could be interpreted as a number.

<static> {Number} JXG.Math.Statistics.mean(arr)
Determines the mean value of the values given in an array.
Parameters:
{Array} arr
Returns:
{Number}

<static> {Number} JXG.Math.Statistics.median(arr)
The median of a finite set of values is the value that divides the set into two equal sized subsets.
Parameters:
{Array} arr
The set of values.
Returns:
{Number}

<static> {Number} JXG.Math.Statistics.min(arr)
Extracts the minimum value from the array.
Parameters:
{Array} arr
Returns:
{Number} The lowest number from the array. It returns NaN if not every element could be interpreted as a number and Infinity if an empty array is given or no element could be interpreted as a number.

<static> {Array|Number} JXG.Math.Statistics.mod(arr1, arr2, math)
Divides two (sequences of) values and returns the remainder. If two arrays are given and the lengths don't match the shortest length is taken.
Parameters:
{Array|Number} arr1
Dividend
{Array|Number} arr2
Divisor
{Boolean} math Optional, Default: false
Mathematical mod or symmetric mod? Default is symmetric, the JavaScript % operator.
Returns:
{Array|Number}

<static> {Array|Number} JXG.Math.Statistics.multiply(arr1, arr2)
Multiplies two (sequences of) values. If one value is an array and the other one is a number the number is multiplied to every element of the array. If two arrays are given and the lengths don't match the shortest length is taken.
Parameters:
{Array|Number} arr1
{Array|Number} arr2
Returns:
{Array|Number}

<static> {Number|Array} JXG.Math.Statistics.percentile(arr, percentile)
The P-th percentile ( 0 < P ≤ 100 ) of a list of N ordered values (sorted from least to greatest) is the smallest value in the list such that no more than P percent of the data is strictly less than the value and at least P percent of the data is less than or equal to that value. See https://en.wikipedia.org/wiki/Percentile. Here, the linear interpolation between closest ranks method is used.
Parameters:
{Array} arr
The set of values, need not be ordered.
{Number|Array} percentile
One or several percentiles
Returns:
{Number|Array} Depending if a number or an array is the input for percentile, a number or an array containing the percentiles is returned.

<static> {Number} JXG.Math.Statistics.prod(arr)
Multiplies all elements of the given array.
Parameters:
{Array} arr
An array of numbers.
Returns:
{Number}

<static> JXG.Math.Statistics.randomBeta(alpha, beta)
Generate value of a random variable with beta distribution with shape parameters alpha and beta. See https://en.wikipedia.org/wiki/Beta_distribution.
Parameters:
{Number} alpha
> 0
{Number} beta
> 0
Returns:
Number

<static> JXG.Math.Statistics.randomBinomial(n, p)
Generate values for a random variable in binomial distribution with parameters n and p. See https://en.wikipedia.org/wiki/Binomial_distribution. It uses algorithm BG from https://dl.acm.org/doi/pdf/10.1145/42372.42381.
Parameters:
{Number} n
Number of trials (n >= 0)
{Number} p
Probability (0 <= p <= 1)
Returns:
Number Integer value of a random variable in binomial distribution
Examples:
let board = JXG.JSXGraph.initBoard('jxgbox',
    { boundingbox: [-1.7, .5, 30, -.03], axis: true });

let runs = [
    [0.5, 20, 'blue'],
    [0.7, 20, 'green'],
    [0.5, 40, 'red'],
];

let labelY = .4;
runs.forEach((run, i) => {
    board.create('segment', [[7, labelY - (i / 50)], [9, labelY - (i / 50)]], { strokeColor: run[2] });
    board.create('text', [10, labelY - (i / 50), `p=${run[0]}, n=${run[1]}`]);

    let x = Array(50000).fill(0).map(() => JXG.Math.Statistics.randomBinomial(run[1], run[0]));
    let res = JXG.Math.Statistics.histogram(x, {
        bins: 40,
        density: true,
        cumulative: false,
        range: [0, 40]
    });
    board.create('curve', [res[1], res[0]], { strokeColor: run[2] });
});



					
					

<static> JXG.Math.Statistics.randomChisquare(k)
Generate value of a random variable with chi-square distribution with k degrees of freedom. See https://en.wikipedia.org/wiki/Chi-squared_distribution.
Parameters:
{Number} k
> 0
Returns:
Number

<static> JXG.Math.Statistics.randomExponential(lambda)
Generate value of a random variable with exponential distribution, i.e. f(x; lambda) = lambda * e^(-lambda x) if x >= 0 and f(x; lambda) = 0 if x < 0. See https://en.wikipedia.org/wiki/Exponential_distribution. Algorithm: D.E. Knuth, TAOCP 2, p. 128.
Parameters:
{Number} lambda
> 0
Returns:
Number
Examples:
 let board = JXG.JSXGraph.initBoard('JXGbox',
      { boundingbox: [-.5, 1.5, 5, -.1], axis: true});

  let runs = [
      [0.5, 'red'],
      [1.0, 'green'],
      [1.5, 'blue'],
  ]

  let labelY = 1
  runs.forEach((run,i) => {
      board.create('segment',[[1.8,labelY-(i/20)],[2.3,labelY-(i/20)]],{strokeColor:run[1]})
      board.create('text',[2.5,labelY-(i/20),`λ=${run[0]}`])

      let x = Array(50000).fill(0).map(() => JXG.Math.Statistics.randomExponential(run[0]))
      let res = JXG.Math.Statistics.histogram(x, { bins: 40, density: true, cumulative: false, range: false });
      board.create('curve', [res[1], res[0]], { strokeColor: run[1], strokeWidth:2});
  })


					
					

<static> JXG.Math.Statistics.randomF(d1, d2)
Generate value of a random variable with F-distribution with d1 and d2 degrees of freedom. See https://en.wikipedia.org/wiki/F-distribution.
Parameters:
{Number} d1
> 0
{Number} d2
> 0
Returns:
Number

<static> JXG.Math.Statistics.randomGamma(a, b, t)
Generate value of a random variable with gamma distribution of order alpha. See https://en.wikipedia.org/wiki/Gamma_distribution. Algorithm: D.E. Knuth, TAOCP 2, p. 129.
Parameters:
{Number} a
shape, > 0
{Number} b Optional, Default: 1
scale, > 0
{Number} t Optional, Default: 0
threshold
Returns:
Number
Examples:
 let board = JXG.JSXGraph.initBoard('jxgbox',
      { boundingbox: [-1.7, .5, 20, -.03], axis: true});

  let runs = [
      [0.5, 1.0, 'brown'],
      [1.0, 2.0, 'red'],
      [2.0, 2.0, 'orange'],
      [3.0, 2.0, 'yellow'],
      [5.0, 1.0, 'green'],
      [9.0, 0.5, 'black'],
      [7.5, 1.0, 'purple'],
  ]

  let labelY = .4
  runs.forEach((run,i) => {
      board.create('segment',[[7,labelY-(i/50)],[9,labelY-(i/50)]],{strokeColor:run[2]})
      board.create('text',[10,labelY-(i/50),`k=${run[0]}, θ=${run[1]}`])

      // density
      let x = Array(50000).fill(0).map(() => JXG.Math.Statistics.randomGamma(run[0],run[1]))
      let res = JXG.Math.Statistics.histogram(x, { bins: 50, density: true, cumulative: false, range: [0, 20] });
      board.create('curve', [res[1], res[0]], { strokeColor: run[2]});

  })



					
					

<static> JXG.Math.Statistics.randomGeometric(p)
Generate values for a random variable in geometric distribution with probability p. See https://en.wikipedia.org/wiki/Geometric_distribution.
Parameters:
{Number} p
(0 <= p <= 1)
Returns:
Number

<static> JXG.Math.Statistics.randomHypergeometric(good, bad, samples)
Generate values for a random variable in hypergeometric distribution. Samples are drawn from a hypergeometric distribution with specified parameters, good (ways to make a good selection), bad (ways to make a bad selection), and samples (number of items sampled, which is less than or equal to good + bad).

Naive implementation with runtime O(samples).

Parameters:
{Number} good
ways to make a good selection
{Number} bad
ways to make a bad selection
{Number} samples
number of items sampled
Returns:

<static> JXG.Math.Statistics.randomNormal(mean, stdDev)
Generate value of a standard normal random variable with given mean and standard deviation. Alias for JXG.Math.Statistics#generateGaussian
Parameters:
{Number} mean
{Number} stdDev
Returns:
Number
See:
JXG.Math.Statistics#generateGaussian
Examples:
 let board = JXG.JSXGraph.initBoard('JXGbox',
      { boundingbox: [-5, 1.5, 5, -.03], axis: true});

  let runs = [
      [0, 0.2, 'blue'],
      [0, 1.0, 'red'],
      [0, 5.0, 'orange'],
      [-2,0.5, 'green'],
  ]

  let labelY = 1.2
  runs.forEach((run,i) => {
      board.create('segment',[[1.0,labelY-(i/20)],[2.0,labelY-(i/20)]],{strokeColor:run[2]})
      board.create('text',[2.5,labelY-(i/20),`μ=${run[0]}, σ2=${run[1]}`])

      let x = Array(50000).fill(0).map(() => JXG.Math.Statistics.randomNormal(run[0],Math.sqrt(run[1])))  // sqrt so Std Dev, not Variance
      let res = JXG.Math.Statistics.histogram(x, { bins: 40, density: true, cumulative: false, range: false });
      board.create('curve', [res[1], res[0]], { strokeColor: run[2], strokeWidth:2});
  })


					
					

<static> JXG.Math.Statistics.randomPareto(gamma, k)
Generate values for a random variable in Pareto distribution with shape gamma and scale k. See https://en.wikipedia.org/wiki/Pareto_distribution. Method: use inverse transformation sampling.
Parameters:
{Number} gamma
shape (0 < gamma)
{Number} k
scale (0 < k < x)
Returns:
Number

<static> JXG.Math.Statistics.randomPoisson(mu)
Generate values for a random variable in Poisson distribution with mean mu. See https://en.wikipedia.org/wiki/Poisson_distribution.
Parameters:
{Number} mu
(0 < mu)
Returns:
Number

<static> JXG.Math.Statistics.randomT(nu)
Generate value of a random variable with Students-t-distribution with ν degrees of freedom. See https://en.wikipedia.org/wiki/Student%27s_t-distribution.
Parameters:
{Number} nu
> 0
Returns:
Number

<static> JXG.Math.Statistics.randomUniform(a, b)
Generate value of a uniform distributed random variable in the interval [a, b].
Parameters:
{Number} a
{Number} b
Returns:
Number

<static> {Array} JXG.Math.Statistics.range(arr)
Determines the lowest and the highest value from the given array.
Parameters:
{Array} arr
Returns:
{Array} The minimum value as the first and the maximum value as the second value.

<static> {Number} JXG.Math.Statistics.sd(arr)
Determines the standard deviation which shows how much variation there is from the average value of a set of numbers.
Parameters:
{Array} arr
Returns:
{Number}

<static> {Array|Number} JXG.Math.Statistics.subtract(arr1, arr2)
Subtracts two (sequences of) values. If two arrays are given and the lengths don't match the shortest length is taken.
Parameters:
{Array|Number} arr1
Minuend
{Array|Number} arr2
Subtrahend
Returns:
{Array|Number}

<static> {Number} JXG.Math.Statistics.sum(arr)
Sums up all elements of the given array.
Parameters:
{Array} arr
An array of numbers.
Returns:
{Number}

<static> {Array} JXG.Math.Statistics.TheilSenRegression(coords)
The Theil-Sen estimator can be used to determine a more robust linear regression of a set of sample points than least squares regression in JXG.Math.Numerics.regressionPolynomial. If the function should be applied to an array a of points, a the coords array can be generated with JavaScript array.map:
JXG.Math.Statistics.TheilSenRegression(a.map(el => el.coords));
Parameters:
{Array} coords
Array of JXG.Coords.
Returns:
{Array} A stdform array of the regression line.
Examples:
var board = JXG.JSXGraph.initBoard('jxgbox', { boundingbox: [-6,6,6,-6], axis : true });
var a=[];
a[0]=board.create('point', [0,0]);
a[1]=board.create('point', [3,0]);
a[2]=board.create('point', [0,3]);

board.create('line', [
    () => JXG.Math.Statistics.TheilSenRegression(a.map(el => el.coords))
  ],
  {strokeWidth:1, strokeColor:'black'});


					
					

<static> {Number} JXG.Math.Statistics.variance(arr)
Bias-corrected sample variance. A variance is a measure of how far a set of numbers are spread out from each other.
Parameters:
{Array} arr
Returns:
{Number}

<static> {Number} JXG.Math.Statistics.weightedMean(arr, w)
Weighted mean value is basically the same as JXG.Math.Statistics.mean but here the values are weighted, i.e. multiplied with another value called weight. The weight values are given as a second array with the same length as the value array..
Parameters:
{Array} arr
Set of alues.
{Array} w
Weight values.
Throws:
{Error}
If the dimensions of the arrays don't match.
Returns:
{Number}

Documentation generated by JsDoc Toolkit 2.4.0 on Wed Oct 23 2024 15:44:14 GMT+0200 (Mitteleuropäische Sommerzeit)