Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
palkamj
Frequent Visitor

How to calculate GINI coefficient as a measure

Hi,

 

I'm wondering if it's possible to calculate the GINI coefficient as a measure.  I have data on panel studies which contains for each study ID the number of answers in that study. So basically one column for study IDs and another for the number of answers. These studies belong in different categories, although one study can belong in many categories at once.. I'd like to use the GINI coefficient to portray how evenly the answers are divided between studies, and then show this on a multi-row card for each category.

1 ACCEPTED SOLUTION
Mikelg
New Member

Hi @palkamj,

 

This is definitely possible.

 

If we have a table ("IncomeTable") which contains a column with the data by individual:

Capture.JPG

 

And if we add this measure to the data model:

(Note: adjust row 2 so that SELECTCOLUMNS points to the column that contains your data)

 

 

Gini Coefficient2 = 
VAR DataColumn = SELECTCOLUMNS(IncomeTable,"Data",IncomeTable[Income])
VAR Areas_Under_Lorenz_Curve =
    ADDCOLUMNS (
        DataColumn,
        "Area",
        VAR IteratingIncome = [Data]
        VAR LessOrEqual_Table =
            FILTER ( DataColumn, [Data] <= IteratingIncome )
        VAR LessOrEqualCummulative =
            SUMX ( LessOrEqual_Table, [Data] )
        VAR Less_Table =
            FILTER ( DataColumn, [Data] < IteratingIncome )
        VAR Less_Cummulative =
            SUMX ( Less_Table, [Data] )
        VAR TotalIncome =
            SUMX ( DataColumn, [Data])
        VAR NoOfDataPoints =
            COUNTROWS ( DataColumn )
        RETURN
            DIVIDE (
                DIVIDE ( LessOrEqualCummulative + Less_Cummulative, 2 ),
                TotalIncome * NoOfDataPoints
            )
    )
RETURN
    ( 0.5 - SUMX ( Areas_Under_Lorenz_Curve, [Area] ) ) / 0.5

 

 

Then your report will calculate gini coefficients at any filter level:

Capture1.JPG

@v-shex-msft if you agree with please mark it as the solution to this question

View solution in original post

3 REPLIES 3
Mikelg
New Member

Hi @palkamj,

 

This is definitely possible.

 

If we have a table ("IncomeTable") which contains a column with the data by individual:

Capture.JPG

 

And if we add this measure to the data model:

(Note: adjust row 2 so that SELECTCOLUMNS points to the column that contains your data)

 

 

Gini Coefficient2 = 
VAR DataColumn = SELECTCOLUMNS(IncomeTable,"Data",IncomeTable[Income])
VAR Areas_Under_Lorenz_Curve =
    ADDCOLUMNS (
        DataColumn,
        "Area",
        VAR IteratingIncome = [Data]
        VAR LessOrEqual_Table =
            FILTER ( DataColumn, [Data] <= IteratingIncome )
        VAR LessOrEqualCummulative =
            SUMX ( LessOrEqual_Table, [Data] )
        VAR Less_Table =
            FILTER ( DataColumn, [Data] < IteratingIncome )
        VAR Less_Cummulative =
            SUMX ( Less_Table, [Data] )
        VAR TotalIncome =
            SUMX ( DataColumn, [Data])
        VAR NoOfDataPoints =
            COUNTROWS ( DataColumn )
        RETURN
            DIVIDE (
                DIVIDE ( LessOrEqualCummulative + Less_Cummulative, 2 ),
                TotalIncome * NoOfDataPoints
            )
    )
RETURN
    ( 0.5 - SUMX ( Areas_Under_Lorenz_Curve, [Area] ) ) / 0.5

 

 

Then your report will calculate gini coefficients at any filter level:

Capture1.JPG

@v-shex-msft if you agree with please mark it as the solution to this question

Hello @Mikelg,
Thanks a lot for sharing,

when applying your formula to a simple test table 

GroupIncome
A500
B0
C0

 

The results obtain is 0.67 while it should be 1 as all income is detain by one group...
What surprise me is that nowhere in the formula we precise the grouping category
Let me know if i do something wrong or if any fixes need to be done to the formula


problema Gini.png

v-shex-msft
Community Support
Community Support

HI @palkamj,

 

I don't think it is possible to achieve this requirement, may be your can take a look at below link which told about use excel to achieve gini coefficient.(include coding formula)

Fast Gini – calculating Gini coefficients in Excel efficiently

 

Regards,
Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors