Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference
  • Extreme Optimization
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Nuget packages
    • Configuration
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Data Access Library User's Guide
    • Reference
  • Statistics Library User's Guide
    • Statistical Variables
    • Numerical Variables
    • Statistical Models
    • Regression Analysis
    • Analysis of Variance
    • Time Series Analysis
    • Multivariate Analysis
    • Continuous Distributions
    • Discrete Distributions
    • Multivariate Distributions
    • Kernel Density Estimation
    • Hypothesis Tests
    • Appendices
  • Continuous Distributions
    • Continuous Distributions
    • The Beta Distribution
    • The Cauchy Distribution
    • The Chi Square Distribution
    • The Erlang Distribution
    • The Exponential Distribution
    • The F Distribution
    • The Gamma Distribution
    • The Generalized Pareto Distribution
    • The Gumbel Distribution
    • The Laplace Distribution
    • The Logistic Distribution
    • Log-Logistic Distribution
    • The Lognormal Distribution
    • The Non-central Beta Distribution
    • The Non-central Chi Square Distribution
    • The Non-central F Distribution
    • The Non-central Student t distribution
    • The Normal Distribution
    • The Pareto Distribution
    • The Rayleigh Distribution
    • Student's t Distribution
    • The Transformed Beta Distribution
    • The Transformed Gamma Distribution
    • The Triangular Distribution
    • The Continuous Uniform Distribution
    • The Weibull Distribution
  • The Gamma Distribution

The Gamma Distribution

Extreme Optimization Numerical Libraries for .NET Professional

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 θ and α. In the above example, the scale parameter θ corresponds to the mean time to failure of each system, while the shape parameter equals n-1.

The probability density function is:

Probability density of the gamma distribution.

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 The Erlang Distribution. The 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 arguments. The first argument is always the shape parameter. The second argument, if present, is the scale parameter. The default value is 1. The third argument 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#
VB
C++
F#
Copy
var gamma1 = new GammaDistribution(4.2, 1.0, 0.0);
var gamma2 = new GammaDistribution(4.2, 1.0);
var gamma3 = new GammaDistribution(4.2);
Dim gamma1 = New GammaDistribution(4.2, 1.0, 0.0)
Dim gamma2 = New GammaDistribution(4.2, 1.0)
Dim gamma3 = New GammaDistribution(4.2)

No code example is currently available or this language may not be supported.

let gamma1 = GammaDistribution(4.2, 1.0, 0.0)
let gamma2 = GammaDistribution(4.2, 1.0)
let gamma3 = 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 argument is a VectorT 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, Sample, which generates a random sample using a user-supplied uniform random number generator. It has three overloads, that take from 2 to 4 parameters. The first argument is the random number generator. The second to fourth parameters, if present, have the same meaning as the parameters of the constructor above.

C#
VB
C++
F#
Copy
var random = new MersenneTwister();
double sample1 = GammaDistribution.Sample(random, 4.2, 1.0, 0.0);
double sample2 = GammaDistribution.Sample(random, 4.2, 1.0);
double sample3 = GammaDistribution.Sample(random, 4.2);
Dim random = New MersenneTwister()
Dim sample1 = GammaDistribution.Sample(random, 4.2, 1.0, 0.0)
Dim sample2 = GammaDistribution.Sample(random, 4.2, 1.0)
Dim sample3 = GammaDistribution.Sample(random, 4.2)

No code example is currently available or this language may not be supported.

let random = MersenneTwister()
let sample1 = GammaDistribution.Sample(random, 4.2, 1.0, 0.0)
let sample2 = GammaDistribution.Sample(random, 4.2, 1.0)
let sample3 = GammaDistribution.Sample(random, 4.2)

The above example uses the MersenneTwister to generate uniform random numbers.

For details of the properties and methods common to all continuous distribution classes, see the topic on continuous distributions.

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2021, 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 Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.