Кривая Лоренца - PullRequest
       6

Кривая Лоренца

3 голосов
/ 07 июня 2010

Мне нужно получить график кривой Лоренца для кумулятивной переменной как функции количества наблюдений. Я хочу, чтобы обе оси отображались в процентном отношении (например, например, наблюдения - это количество покупателей, а переменная y - это сумма, которую они купили, покупатели уже ранжированы в порядке убывания, я хочу получить график, который говорит: % покупателей приобрели 90% от общего количества купленных "). Мой набор данных - пара миллионов наблюдений.

Каков наилучший способ сделать это? Подразделы вопросы:

Если мне нужно добавить две переменные для квантилей общего количества наблюдений и общего количества купленных $ (чтобы использовать их для построения графика), что это за объект, который возвращает номер строки? Я попробовал:

user_quantile <- row(df)/nrow(df)

но я получаю матрицу идентичных столбцов (user_quantile.1, user_quantile.2), из которых мне нужен только один столбец.

Есть ли способ пропустить добавление процентов в качестве переменных и использовать их только для значений осей?

Сюжет имеет много точек, чем мне нужно, чтобы получить линию. Каков наилучший подход для минимизации вычислительных затрат и получения хорошего графика?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 07 июня 2010

Возможно, вы захотите познакомиться с превосходной RSeek поисковой системой для R контента. Один быстрый запрос для кривой Лоренца кривой Лоренца ) приводит к следующим пакетам:

  • ineq : измерение неравенства, концентрации и бедности
  • reldist : методы относительного распределения
  • GeoXp : интерактивный исследовательский анализ пространственных данных
  • lawstat : пакет R для биостатистики, государственной политики и права

Кажется, что все они обеспечивают функцию кривой Лоренца.

0 голосов
/ 29 июня 2013

Для того, чтобы закончить сюжет, вам нужно сначала упорядочить необработанные данные.

1) Вы можете использовать функцию cut2() из пакета Hmisc, чтобы разрезать данные в квантилях.Проверьте документацию, это не сложно.Это похоже на cut() из базового пакета.

2) После использования функции cut2() с данными о доходах вам необходимо вычислить частоту каждого дециля.Для этого используйте table().Затем рассчитайте процент дохода для каждого дециля.

3) Теперь у вас должна быть очень маленькая таблица со следующими столбцами: Дециль, совокупный% от общего дохода.Добавьте еще один столбец с линией 45 градусов.Просто добавьте постоянный совокупный% дохода.

finaltable$cumulative_equality_line = seq(0.1, 1, by = 0.1)

4) Вы можете использовать базовую графику или ggplot2 для построения графика.Я думаю, вы можете сделать это с помощью информации шага 3 или, возможно, проверить конкретные вопросы построения.

Мне придется сделать это в ближайшее время, но у меня уже есть финальный стол.Я выложу код для заговора, как только я это сделаю.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...