This example obtains maximum likelihood estimates for the parameters of a gamma distribution.
import com.imsl.math.*;
import com.imsl.stat.distributions.*;
import java.text.DecimalFormat;
public class MaximumLikelihoodEstimationEx2 {
public static void main(String[] args) throws Exception {
double x[] = {
1.015998e0, 0.2677489e0, 2.198958e0, 1.784697e0, 0.691063e0,
0.992409e0, 0.5466309e0, 1.154601e0, 2.613015e0, 1.219826e0,
1.158957e0, 3.933280e0, 0.2462264e0, 3.946624e0, 4.184852e0,
1.148567e0, 1.798003e0, 1.437205e0, 2.383511e0, 2.030147e0,
0.7575e0, 0.903873e0, 0.5005532e0, 0.296348e0, 1.564283e0,
2.787072e0, 0.3472906e0, 2.228984e0, 2.328759e0, 4.634677e0,
1.41974e0, 0.5815979e0, 2.654966e0, 1.719702e0, 1.668744e0,
2.203117e0, 0.7410172e0, 0.5147782e0, 0.4841398e0, 2.745041e0,
1.455526e0, 0.7109387e0, 0.967477e0, 0.876192e0, 0.4505406e0,
0.3986173e0, 0.4707685e0, 0.301807e0, 0.624848e0, 4.325418e0,
1.410972e0, 2.630923e0, 0.4841873e0, 0.1835388e0, 0.2373447e0,
0.5298828e0, 1.323294e0, 1.672188e0, 0.009495691e0, 1.832066e0,
1.210357e0, 1.133037e0, 1.23147e0, 0.379497e0, 2.001283e0,
0.5448404e0, 0.1165402e0, 1.834957e0, 1.530335e0, 2.550148e0,
1.240445e0, 1.058339e0, 1.613384e0, 1.708352e0, 1.134821e0,
0.6249367e0, 0.8273115e0, 0.9793533e0, 0.05378025e0,
0.6828388e0, 0.9259066e0, 0.8168141e0, 3.910878e0, 1.88685e0,
2.836617e0, 1.644921e0, 0.863347e0, 2.128436e0, 2.710456e0,
4.747736e0, 0.823015e0, 1.279859e0, 2.991689e0, 2.483813e0,
0.0610894e0, 0.5572344e0, 0.07148165e0, 0.3847188e0,
1.322698e0, 0.3358647e0
};
GammaPD gamma = new GammaPD();
MaximumLikelihoodEstimation mle
= new MaximumLikelihoodEstimation(x, gamma, 3, 1);
mle.compute();
double[] parameterEstimates = mle.getEstimates();
double[][] hessian = mle.getHessian();
double[] stdErrs = mle.getStandardErrors();
double mLogLikelihood = mle.getMinusLogLikelihood();
PrintMatrixFormat pmf = new PrintMatrixFormat();
pmf.setNumberFormat(new DecimalFormat("0.00000000"));
PrintMatrix pm = new PrintMatrix("MLEs");
pm.print(pmf, parameterEstimates);
pm.setTitle("hessian");
pm.print(pmf, hessian);
pm.setTitle("standard errors");
pm.print(pmf, stdErrs);
System.out.printf("Minus log likelihood: %5.2f\n", mLogLikelihood);
}
}
MLEs
0
0 1.47875577
1 0.96006357
hessian
0 1
0 -95.27326615 -104.15984884
1 -104.15984884 -160.43415880
standard errors
0
0 0.19017869
1 0.14655443
Minus log likelihood: 130.88
Link to Java source.