Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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.
Solved! Go to Solution.
Hi @palkamj,
This is definitely possible.
If we have a table ("IncomeTable") which contains a column with the data by individual:
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:
@v-shex-msft if you agree with please mark it as the solution to this question
Hi @palkamj,
This is definitely possible.
If we have a table ("IncomeTable") which contains a column with the data by individual:
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:
@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
Group | Income |
A | 500 |
B | 0 |
C | 0 |
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
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
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.