Libraries‎ > ‎Sugarscape Library‎ > ‎

Draw Lorenz curve

BehaviourComposer: ignore everything before this.

Begin micro-behaviour:

Begin description:

I draw a Lorenz curve and compute the Gini coefficient.

End description

Draw Lorenz curve

Begin NetLogo code:

do-after-setup   [do-every 1       [let population count all-individuals        if population <= 2 [stop]        set-current-plot "Wealth Distribution"        auto-plot-off        create-temporary-plot-pen "Lorenz pen"        set-current-plot-pen "Lorenz pen"        ; draw the perfectly equitable distribution first        set-plot-pen-color 0        set-plot-x-range 0 100        set-plot-y-range 0 100        plot-pen-up        plotxy 0 0        plot-pen-down        plotxy 100 100        plotxy 0 0        set-plot-pen-color round time mod 145        let individuals-by-wealth            sort-on [my-sugar] all-individuals        let total-wealth sum [my-sugar] of all-individuals        let one-percent-of-the-population population / 100        let percent-of-population 0        let gini-coefficient 0        while [percent-of-population < 100]              [let agents-in-percent-of-population                   sublist individuals-by-wealth                           0 round (percent-of-population * one-percent-of-the-population)               let wealth-of-percent-of-population 0               forEach agents-in-percent-of-population                  [set wealth-of-percent-of-population                       wealth-of-percent-of-population + [my-sugar] of ?]                   let percent-of-wealth wealth-of-percent-of-population * 100 / total-wealth                   set gini-coefficient gini-coefficient +                                        percent-of-population - percent-of-wealth                   plotxy percent-of-population                          percent-of-wealth                   set percent-of-population percent-of-population + 1]        set my-gini-coefficient gini-coefficient / 5050]]

End NetLogo code

Variants

How this works

After drawing the black diagonal line representing the equitable distribution it then picks a new pen colour and draws the Lorenz curve. It does this by sorting all the individuals by wealth (sugar) and computing what percentage of the total that each percentile of the poorer individuals posses. While doing this it also computes the Gini coefficient by approximating it by summing the 100 rectangles between the Lorenz curve and the equitable distribution and dividing that by the area under the diagonal line (which is the sum of 1, 2, 3, ..., 98, 99, 100 or 5050).

Related micro-behaviours

This expects CREATE-EMPTY-LORENZ-CURVE has been added to create the surface this draws upon.

History

This was implemented by Ken Kahn. Last updated on 27 June 2012.

BehaviourComposer: ignore everything after this.