like.gms : Maximum Likelihood Estimation

Description

This application from the biomedical area tests the hypothesis
that a population of systolic blood pressure can be separated into
three distinct groups.


Reference

  • Bracken, J, and McCormick, G P, Chapter 8.5. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 90-92.

Small Model of Type : NLP


Category : GAMS Model library


Main file : like.gms

$title Maximum Likelihood Estimation  (LIKE,SEQ=25)
$Ontext

This application from the biomedical area tests the hypothesis
that a population of systolic blood pressure can be separated into
three distinct groups.


Bracken, J, and McCormick, G P, Chapter 8.5. In Selected Applications of
Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 90-92.

$Offtext

 sets  i  observations  / 1*31 /
       g  groups        / one, two, three /


       table  data(*,i)  systolic blood pressure data

            1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
pressure   95 105 110 115 120 125 130 135 140 145 150 155 160 165 170
frequency   1   1   4   4  15  15  15  13  21  12  17   4  20   8  17

  +        16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31
pressure  175 180 185 190 195 200 205 210 215 220 225 230 235 240 245 260
frequency   8   6   6   7   4   3   3   8   1   6   0   5   1   7   1   2

  parameters  y(i)   pressure
              w(i)   frequency weight
              c      constant ;

  y(i) = data("pressure",i);  w(i) = data("frequency",i);
  c    = 1/sqrt(2*3.14159); display y, w, c;

  positive variables  p(g)   proportion of population
                      m(g)   population mean
                      s(g)   population standard deviation
           variable   mlf    maximum likelihood value

  equations like, pdef, rank;


like.. mlf =e= sum(i, w(i)*log(c*sum(g, p(g)/s(g)*exp(-.5*sqr((y(i)-m(g))/s(g))))));

pdef.. sum(g, p(g)) =e= 1 ;

rank(g+1).. m(g+1) =g= m(g);

model ml1 maximum likelihood - ordered    / like,pdef,rank /
      ml2 maximum likelihood - unordered  / like,pdef / ;

p.l(g) = 1/3; m.l(g) = 100 + 30*ord(g); s.l(g) = 15;

p.lo(g)=.1;
s.lo(g)=.1;

*  reported solution below gives a nonoptimal solution
*  p.fx('one')   = .365;
*  p.fx('two')   = .475;
*  p.fx('three') = .160;

option domlim  = 1e3;
ml1.workfactor = 1.5;
solve ml1 maximizing mlf using nlp;