Logo Search packages:      
Sourcecode: octave-statistics version File versions  Download package

gamfit.m

## -*- texinfo -*-
## @deftypefn {Function File} {} [A B] = gamfit (@var{R})
## Finds the maximumlikelihood estimator for the Gamma distribution for R
## @seealso{gampdf, gaminv, gamrnd, gamlike}
## @end deftypefn

## This function works by minimizing the value of gamlike for the vector R.
## Just about any minimization function will work, all it has to do a
## minimize for one variable. Although the gamma distribution has two
## parameters, their product is the mean of the data. so a helper function
## for the search takes one parameter, calculates the other and then returns
## the value of gamlike.

## Note: Octave uses the inverse scale parameter, which is the opposite of
## Matlab. To work for Matlab, value of b needs to be inverted in a few
## places (marked with **)

## Written by Martijn van Oosterhout <kleptog@svana.org> (Nov 2006)
## This code is public domain

function res = gamfit(R)

avg = mean(R);

# This can be just about any search function. I choose this because it
# seemed to be the only one that might work in this situaition...
a=nmsmax( @gamfit_search, 1, [], [], avg, R );

b=a/avg;      # **

res=[a 1/b];

# Helper function so we only have to minimize for one variable. Also to
# inverting the output of gamlike, incase the optimisation function wants to
# maximize rather than minimize.

function res = gamfit_search( a, avg, R )

b=a/avg;      # **

res = -gamlike([a 1/b], R);

             

Generated by  Doxygen 1.6.0   Back to index