Многие знакомы с коэффициентом Джини, который используют для того, чтобы измерить глубину неравенства доходов среди населения например.
В кредитном скоринге мы говорим о том, что такая-то модель имеет определенный Джини, когда хотим сказать о ее качестве или дискриминирующей способности, то есть способности отличать хороших и плохих заемщиков. Качественно, Джини это наш местный R^2.
Для того, чтобы рассчитать коэффициент Джини как показатель глубины неравенства есть полезный пакет LORENZ 2.0, а для более привычной ситуации, когда мы имеем вектор с парами {0/1,балл модели}, следуя Toni Bellotti, я написал следующую функцию:
gini[list_List, step_: 0.001] /; (Union[list[[All, 1]]] == {0, 1}) :=
Module[{CDF0, CDF1, pnts, auc, gthby},
gthby = GatherBy[list, First];
If[gthby[[1, 1, 1]] == 1, gthby = {gthby[[2]], gthby[[1]]}];
{CDF0, CDF1} = EmpiricalDistribution[#[[All, 2]]] & /@ gthby;
pnts = N[
Table[{CDF[CDF0, x], CDF[CDF1, x]}, {x, Min[list[[All, 2]]],
Max[list[[All, 2]]], step}]];
auc = Total[.5 (#[[1, 2]] + #[[2, 2]]) (#[[2, 1]] - #[[1, 1]]) & /@
Partition[Prepend[pnts, {0, 0}], 2, 1]];
2 auc - 1]
Вот например ROC кривая c Джини 0.169: