Extreme Optimization >
User's Guide >
Statistics Library >
Continuous Probability Distributions >
The Gamma Distribution
Extreme Optimization User's Guide
User's Guide
Up: Continuous Probability Distributions Next: The Gumbel Distribution Previous: The F Distribution Contents
The Gamma Distribution
The gamma distribution can be used to model the time until an
event occurs a specified number of times. For example, if a system
has n-1 backups all with identical exponential
distributions, then the time until the original system and all its
backups have failed can be modeled using a gamma distribution. From
this example, it is obvious that the exponential distribution is a
special case of the gamma distribution.
The gamma distribution has a scale parameter and a shape
parameter often called the order. These parameters are usually
denoted by the Greek letters &952; and &945;. In the above
example, the scale parameter &952; corresponds to the mean time
to failure of each system, while the shape parameter equals
n-1.
The probability density function is:

The gamma distribution may also have a location parameter, which
translates the distribution functions up or down the X axis by the
specified amount.
If the shape parameter is an integer, and the location parameter
is 0, then the distribution is an Erlang distribution. The chi square distribution is also a
special case of the gamma distribution, with location parameter 0,
scale parameter 2, and the shape parameter equal to the degrees of
freedom divided by 2.
The gamma distribution is implemented by the GammaDistribution
class. It has five constructors with one to three parameters. The
first parameter is always the shape parameter. The second
parameter, if present, is the scale parameter. The default value is
1. The third parameter specifies the location, with a default of
zero.
The following constructs the same gamma distribution of order
4.2, scale parameter 1 and location parameter 0 using each of the
three constructors:
| C# | Copy Code |
GammaDistribution gamma1 = new GammaDistribution(4.2, 1.0, 0.0);
GammaDistribution gamma2 = new GammaDistribution(4.2, 1.0);
GammaDistribution gamma3 = new GammaDistribution(4.2); |
| Visual Basic | Copy Code |
Dim gamma1 As GammaDistribution = New GammaDistribution(4.2, 1.0, 0.0)
Dim gamma2 As GammaDistribution = New GammaDistribution(4.2, 1.0)
Dim gamma3 As GammaDistribution = New GammaDistribution(4.2) |
The GammaDistribution class has three specific
properties,
ShapeParameter,
ScaleParameter, and
LocationParameter, which return the shape, scale and
location parameters of the distribution.
If a variable is assumed to have a gamma distribution, then the
parameter of the distribution can be estimated using the method of
maximum likelihood or the method of matching moments. The fourth
and fifth constructors perform this calculation. The first
parameter is a NumericalVariable
whose distribution is to be estimated. The optional second
parameter is a EstimationMethod
value that specifies the method to be used. The default is the
method of matching moments.
Note that parameter estimation says nothing about how well the
estimated distribution fits the variable's distribution. Use one of
the goodness-of-fit tests to verify the appropriateness of the
choice of distribution.
GammaDistribution has one static (Shared
in Visual Basic) method,
GetRandomVariate, which generates a random variate
using a user-supplied uniform random number generator. It has three
overloads, that take from 2 to 4 parameters. The first parameter is
the random number generator. The second to fourth parameters, if
present, have the same meaning as the parameters of the constructor
above.
| C# | Copy Code |
MersenneTwister random = new MersenneTwister();
double variate
variate = GammaDistribution.GetRandomVariate(random, 4.2, 1.0, 0.0);
variate = GammaDistribution.GetRandomVariate(random, 4.2, 1.0);
variate = GammaDistribution.GetRandomVariate(random, 4.2); |
| Visual Basic | Copy Code |
Dim random As MersenneTwister = New MersenneTwister()
Dim variate As Double
variate = GammaDistribution.GetRandomVariate(random, 4.2, 1.0, 0.0)
variate = GammaDistribution.GetRandomVariate(random, 4.2, 1.0)
variate = GammaDistribution.GetRandomVariate(random, 4.2) |
The above example uses the Mersenne
Twister to generate uniform random numbers.
For details of the properties and methods common to all
continuous distribution classes, see the topic on ContinuousDistribution
class.
Up: Continuous Probability Distributions Next: The Gumbel Distribution Previous: The F Distribution Contents
Copyright 2004-2008,
Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M
Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual
Studio.NET, and the Visual Studio Logo are registered trademarks of Microsoft Corporation