Log-трансформация денежных переменных

Log-трансформация денежных переменных

Данные, имеющие денежную природу, оставляют существенную часть маркетинговых датасетов — это покупки, доходы, траты, остатки, LTV и прочее. При том работать с этими данными часто не очень удобно — у них как правило ассиметричное (ненормальное) распределение с невыровненной вариацией, сильно скошенное вправо, и явно нелинейно (мультипликативно) по своей природе. Это сразу усложняет использование таких популярных интерпретируемых моделей как линейная и логистическая регрессия, затрудняет визуализацию.

В работе с такого рода данными обычно применяют трансформации, т.е. преобразования данных, в результате которых они становятся «нормально»-распределенными. Обобщая, можно выделить два базовых подхода:

  1. Двух-параметрическая трансформация Box-Cox, частными случаями которой являются популярные транформации логарифм и квадратный корень
  2. Гиперболический арксинус (IHS, inverse hyperbolic sine)

Эти транформации кратко но емко (применительно к нашей задаче) описаны например тут.

Для работы с денежными данными логично выбрать лог-трансформацию вида log10(1+x).

  • Десятка в основании логарифма используется для удобства, деньги привыкли округлять степенями 10-ки (тысячи, миллионы, кому как удобней).
  • добавляя единицу к переменной мы решаем пробему нулевых данных (0 рублей), как известтно логарифм нуля = минус бесконечность. Добавив же единичку, мы не сильно испортили «вид» трансформированных данных, но преобразование 0 по такой формуле приводит к нулю, логарифм 1 = 0.

Итак, мы решили задачу «нормализации», разобрались как корректно учесть 0, а как быть с отрицательными велиинами, например отрицательный денежный поток или убыток или овердрафт на счете? Помочь нам может так называемый «логарифм со знаком» или signed log. Все очень просто — мы «вытаскиваем» знак наружу из-под логарифма, [т.е. буквально log(-5) -> -log(5)], не забывая при этом корректно обрабатывать ноль. Итого мы получаем итогое преобразование вида:

sign(x) * log10(1+abs(x))

которое можно копировать например в R и начинать новую жизнь с денежными переменными

i_hate_math_will_make_you_mad2

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s