Gini Coefficient for the HP-41
Overview
1°) Program#1
2°) Program#2
-The Gini coefficient measures the statistical dispersion of a distribution.
-It is always between 0 and 1.
-It may be computed by the formula:
G = 1 + [ Sumi ni ( ni
xi - 2 Sumj<=i ni xi ) ]
/ [ ( Sumi ni ) ( Sumi ni xi
) ]
1°) Program#1
-The xi 's must be stored in increasing order
Data Registers: • R00 = p = number of points ( Registers R00 thru R2p are to be initialized before executing "GINI" )
• R01 = x1 • R03 = x2
....... • R2p-1 = xp
with x1 <= x2 <= ...............
<= xp
• R02 = n1 • R04 = n2
....... • R2p = np
Flags: /
Subroutines: /
01 LBL "GINI"
02 CLA 03 RCL 00 04 ST+ X 05 STO M 06 CLST |
07 LBL 01
08 RCL IND M 09 ST+ N 10 STO O 11 DSE M 12 RCL IND M |
13 *
14 ST+ Z 15 RCL Z 16 ST+ X 17 - 18 RCL O |
19 *
20 - 21 DSE M 22 GTO 01 23 X<>Y 24 RCL N |
25 *
26 ST- Y 27 / 28 CLA 29 END |
( 53 bytes / SIZE 2p+1 )
STACK | INPUT | OUTPUT |
X | / | G |
Example:
xi | 2 7
9 12 15 19 Store
these R01 R03
R05 R07 R09 R11
---------------------------- 12
numbers ------------------------------------
respectively and p = 6 into R00
ni | 3
5 8 14 7 2
into
R02 R04 R06 R08 R10
R12
XEQ "GINI" >>>> G = 0.196298984
( in 3.5 seconds )
Note:
-If p = 50, execution time = 29 seconds.
2°) Program#2
-Instead of storing all the xi's, ni's in data registers, we may also store the required sums only.
-The following program also calculates the arithmetic mean, the standard deviation, the skewness and the kurtosis
of a given set of p points
x1 , x2 , ............ , xp
with respective frequencies n1
, n2 , ............ , np
Data Registers: R00 = Sum ni
R01 = Sum ni xi R03 = Sum ni
xi3 R05 = Sumi ni
( ni xi - 2 Sumj<=i ni xi
) R07 = G
R02 = Sum ni xi2 R04 = Sum
ni xi4 R06 = m = arithmetic
mean
R08 = n m2
Flag: F01
CF 01 if you want to use the sample standard deviation
Subroutines: /
SF 01 if you want to use the population standard deviation
01 LBL A
02 ST+ 00 03 STO 06 04 RCL Y 05 STO T 06 * 07 STO 07 08 * 09 ST+ 02 10 * 11 ST+ 03 12 * 13 ST+ 04 14 RCL 01 15 ST+ X 16 RCL 07 17 ST+ 01 |
18 +
19 RCL 06 20 * 21 ST- 05 22 R^ 23 RTN 24 LBL "STAT" 25 RCL 05 26 RCL 00 27 RCL 01 28 * 29 ST+ Y 30 / 31 STO 07 32 RCL 01 33 RCL 00 34 / |
35 ENTER^
36 STO 06 37 X^2 38 RCL 00 39 * 40 STO 08 41 RCL 02 42 ENTER^ 43 + 44 X<>Y 45 - 46 * 47 3 48 * 49 RCL 03 50 4 51 * |
52 -
53 * 54 RCL 04 55 + 56 RCL 08 57 ST+ X 58 RCL 02 59 3 60 * 61 - 62 RCL 06 63 * 64 RCL 03 65 + 66 RCL 00 67 ST/ Z 68 / |
69 RCL 02
70 RCL 08 71 - 72 RCL 00 73 FC? 01 74 DSE X 75 / 76 ST/ Y 77 ST/ Z 78 ST/ Z 79 SQRT 80 ST/ Y 81 RCL 07 82 SIGN 83 CLX 84 RCL 06 85 END |
( 113 bytes / SIZE 009 )
STACK | INPUTS#i | OUTPUTS#i | final OUTPUTS |
T | / | / | µ4 |
Z | / | / | µ3 |
Y | xi | / | s |
X | ni | xi | m |
L | / | ni | G |
Where
m = arithmetic mean
G = Gini coefficient
s = sample standard deviation if CF
01
µ3 = skewness
s = population standard deviation if
SF 01
µ4 = kurtosis
Example: Given the distribution:
xi | 2 | 7 | 9 | 12 | 15 | 19 |
ni | 3 | 5 | 8 | 14 | 7 | 2 |
-Clear registers R00 thru R05 ( for instance execute CLS
if your statistic registers are R00 thru R05 )
-Then, xi ENTER^ ni
S+ ( [A] in user mode )
for all the points
2 ENTER^ 7 ENTER^
9 ENTER^ 12 ENTER^
15 ENTER^ 19 ENTER^
3 S+
5 S+
8 S+
14 S+
7 S+
2 S+
in user mode
-Finally, simply press R/S ( or XEQ "STAT" ) it yields:
if CF 01
m = 10.8718
if SF 01
m = 10.8718
RDN s = 4.0012
RDN s = 3.9496
RDN µ3 = -0.3406 = skewness
RDN µ3 = -0.3542 = skewness
RDN µ4 = 3.0605 = kurtosis
RDN µ4 = 3.2238 = kurtosis
-And in both cases:
G = 0.196298984 = R07
Notes:
-The xi 's must also be stored in increasing order
to compute G correctly.
-For a normal distribution, µ3 = 0 &
µ4 = 3
-This program is actually a modification of "STAT" listed in "Statistics
& Probability for the HP-41"