WelcomeBasicsPlots and GUIApplicationsOther
|
Geometric
mean and geometric deviation
This program computes the geometric
mean and geometric
deviation of a set of data. We obtain the results in two
ways, using iterations
and available vectorized
operations in Matlab.
The geom. mean is given by this formula
this means that it is the nth-root
of the product of all the elements being considered. n is the number of
elements in the set.
The geom. deviation is given by this formula
where q is
a sum including the natural logarithms of the elements in the set.
We can use iterations to calculate what we need. In Matlab, this is not
the most efficient way to do it, but we can implement the same
algorithm in other languages...
function [gm, gd] = geo_mean_dev(x)
% Take into
account the number of elements in the vector
n = length(x);
% Initialize
some variables
gm = 1;
q = 0;
% Iterate
through all of the elements
for i = 1 : n
d = x(i);
% Compute mean
gm = gm * d^(1/n);
% Accumulate intermediate term for deviation
q = q + log(d)^2;
end
% Compute
deviation
gd = abs(exp(sqrt(q/(n-1)-(n/(n-1)*(log(gm))^2))));
We can test our function as follows (from the command window or from
another script):
x = [3 5 8 3 7 2];
[gm1, gd1]= geo_mean_dev(x)
Matlab response is
gm1 = 4.1407
gd1 = 1.7237
We can also use the vectorized form to make it easier and faster...
(note that the 'log'
function performs the natural
logarithm of a number, while the 'log10' function performs
the log in base 10)
n = length(x);
% The 'prod' function gets the multiplication of all the elements
gm2 = prod(x)^(1/n)
% The 'sum' function gets the sum of the vector
q = sum(log(x).^2);
% and now we
can imlement the last formula
gd2 = exp(sqrt(q/(n-1)-(n/(n-1)*log(gm2)^2)))
Again, Matlab response is
gm2 = 4.1407
gd2 = 1.7237
From
'Geometric Mean' to
home
From
'Geometric Mean' to 'Matlab Cookbook'
|
|
|