geometricMean

(Weighted) geometric mean

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

The output y is the geometric mean of the components of the input vector x. As a second argument a vector of positive weights (default = 1 for each weight) can be given to calculate the weighted geometric mean.

Syntax

Functions.geometricMean(x);
Functions.geometricMean(x, weights);

Implementation


  w := BusinessSimulation.Functions.clip(weights, {0, inf});
  y := if min(x) < small then 0 else exp( sum( log(x[i]) * w[i] for i in 1:n ) / sum(w) );

Notes

  • If any component of the input vector is zero or negative, the output will be zero.

  • Any negative weight will be set to zero in order to prevent negative weights.

Examples


Functions.geometricMean({10, 20});        // 14.1421..
Functions.geometricMean({ 0, 20});        //  0.0
Functions.geometricMean({10, 20},{1,10}); // 18.7786..
Functions.geometricMean({10, 20},{1,-1}); // 10.

See also

GeometricMean, arithmeticMean

Syntax

y = geometricMean(x, weights)

Inputs (2)

x

Type: Real[:]

Description: Vector input

weights

Default Value: ones(size(x, 1))

Type: Real[size(x, 1)]

Description: Vector of weights

Outputs (1)

y

Type: Real