rank05.gms : Percentile ranking of household expenditure data with heterogenous household size

Description


Category : GAMS Data Utilities library


Main file : rank05.gms   includes :  rank05.gms

$title Repeated computation of percentiles within a loop (rank05,SEQ=139)

Set h / 0*100 /;

Parameter
   y(h)    'Aggregate expenditure associated with household type h'
   n(h)    'Number of persons associated with household type h'
   ypc(h)  'Per-capita expenditure of household type h'
   rank(h) 'Rank of household in per-capita expenditure';

* Assign some random values:
y(h)   = uniform(0.2,1.2);
n(h)   = uniform(1,6);
ypc(h) = y(h)/n(h);

* Assign ranks to household based on per-capita expenditures:
$libInclude rank ypc h rank

* Now determine percentile ranking of the households taking into account
* differences in numbers of members and household representation:
Set r 'Temporary set used for ranking' / r0*r100 /;

Parameter
   pcttmp(r) 'Temporary array for computing percentiles'
   pct(h)    'Percentile rankings for households';

Set r0(r) / r0 /;

* First, create an array with households assigned
loop((r0(r),h), pcttmp(r+(rank(h)-1)) = n(h););
loop(r,         pcttmp(r) = pcttmp(r) + pcttmp(r-1););
pcttmp(r) = pcttmp(r)/sum(h, n(h));

loop((r0(r),h), pct(h) = pcttmp(r+(rank(h)-1)););

Parameter ranking 'Ranking of households and expenditures';

loop((r0(r),h),
   ranking(r+(rank(h)-1),h,"n")   = n(h);
   ranking(r+(rank(h)-1),h,"ypc") = ypc(h);
   ranking(r+(rank(h)-1),h,"pct") = pct(h);
);

display ranking;