Тематические карты

Придумываем несколько способов сделать статистику более наглядной и оживить публикуемые материалы. Например, наверняка будем использовать тематические карты, цвета которых отражали бы уровень какой то переменной.
Это довольно интересная задачка, так как методов раскраски карт много, но большинство дороги. Вдохновляет flowingdata, но к сожалению, там предлагается использовать Python, а мне бы хотелось оставаться на своей комфортной территории (по крайней мере сегодня).
Решение в Mathematica предложено здесь, однако в большинстве случаев оно оказалось неприменим во всех случаях кроме примера.
Предлагаю переписанные мной в приложении. Что происходит:
1. Берем карту из Вики в формате svg (векторный рисунок).
2. Отдельные полигоны рисунка конвертируем в полигоны Mathematica, так что их раскраской и видом мы можем управлять легко.
Здесь предварительный результат, так как нужно еще сопоставить коды регионов ISO с соответствующими полигонами.
Здесь делал попытку описать рецепт пошагово.

Тематические карты

001011001

 Удивительно, конечно, какого количества стандартных функций не хватает в Mathcad.
В приложенном файле две  функции binary2decimal и decimal2binary (на основе 1 и 2, соответственно), которые конвертируют целые положительные числа между двумя системами исчисления в Mathcad14.

001011001

Оправданная дискриминация

Многие знакомы с коэффициентом Джини, который используют для того, чтобы измерить глубину неравенства доходов среди населения например.
В кредитном скоринге мы говорим о том, что такая-то модель имеет определенный Джини, когда хотим сказать о ее качестве или дискриминирующей способности, то есть способности отличать хороших и плохих заемщиков. Качественно, Джини это наш местный 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:
Оправданная дискриминация