mlgamma.gms : Maximum Likelihood estimation of parameters of the gamma distribution

Description

```Maximum Likelihood estimation of parameters of the gamma distribution.
```

References

• Cox, D R, and Snell, E J, Applied Statistics: Principles and Examples. London: Chapman and Hall, 1981.
• Tierney, L, XLISP-STAT, A Statistical Environment Based on the XLISP Language (Version 2.0), Number 528. Tech. rep., University of Minnesota, School of Statistics, 1989.

Small Model of Type : NLP

Category : GAMS Model library

Main file : mlgamma.gms

``````\$title Maximum Likelihood Estimation of Parameters of the Gamma Distribution (MLGAMMA,SEQ=303)

\$onText
Maximum Likelihood estimation of parameters of the gamma distribution.

Erwin Kalvelagen, April 2004.

Data from:
Cox, D R, and Snell, E J, Applied Statistics: Principles and
Examples. London: Chapman and Hall, 1981.

Example from:
Tierney, L, XLISP-STAT, A Statistical Environment Based on the XLISP
Language (Version 2.0), Number 528. Tech. rep., University of Minnesota,
School of Statistics, 1989.

Keywords: nonlinear programming, statistics, gamma distribution, maximum likelihood
\$offText

Set i 'observations' / i1*i29 /

Parameter x(i) 'times (in operating hours) between failures of airco units on several aircraft'
/  i1  90,  i2  10,  i3  60,  i4 186,  i5  61
i6  49,  i7  14,  i8  24,  i9  56, i10  20
i11  79, i12  84, i13  44, i14  59, i15  29
i16 118, i17  25, i18 156, i19 310, i20  76
i21  26, i22  44, i23  23, i24  62, i25 130
i26 208, i27  70, i28 101, i29 208          /;

Scalar n;
n = card(i);

Scalar average;
average = sum(i, x(i))/n;

Scalar stdev 'standard deviation';
stdev = sqrt(sum(i, sqr(x(i) - average))/(n - 1));

display average, stdev;

Variable beta, mu, like;

Equation loglike;

loglike.. like =e= n*[log(beta) - log(mu) - loggamma(beta)]
+  sum(i, (beta - 1)*log(beta*x(i)/mu))
-  sum(i, beta*x(i)/mu);

* lower bounds so log() and loggamma() are safe
beta.lo = 0.001;
mu.lo   = 0.001;

* we could use initial values
* mu.l   = average;
* beta.l = sqr(average/stdev);

Model m / loglike /;

solve m using nlp maximimizing like;
``````