2010-06-07 260 views
3

我需要得到累积变量的洛伦兹曲线作为观测值数量的函数。我希望两个轴都以百分比形式显示(例如,观察值是买家数量,y变量是他们购买的数量,买家已经按降序排列,我想得到的情节是“前10名%购买者购买了总购买量的90%“)。我的数据集是几百万观察值。洛伦兹曲线图

这样做的最好方法是什么?子问题:

如果我需要为总观测值和总购买量的分位数添加两个变量(以便使用它们进行绘图),那么返回行数的对象是什么?我想:

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

,但我得到相同的列(user_quantile.1,user_quantile.2),其中我只需要一列的矩阵。

是否有任何方式跳过添加百分比作为变量,只有他们的轴值?

这个情节有很多点,比我需要得到的线。最大限度地减少计算工作量并获得一张好图的最佳方法是什么?

谢谢。

回答

8

您可能想要了解有关R内容的优秀RSeek搜索引擎。一个快速查询洛伦兹曲线(和洛伦茨曲线)导致这些软件包:

  • ineq:测量不平等,浓度和贫困
  • reldist:相对分布方法
  • GeoXp:互动探索空间数据分析
  • lawstat:生物统计学,公共政策和法律的R包

所有这些似乎都提供了洛伦兹曲线函数。

0

为了完成绘图,您首先需要安排原始数据。

1)您可以使用Hmisc软件包中的cut2()函数来削减分位数。检查文档,这并不难。它与基础包中的cut()类似。

2)将cut2()函数与收入数据一起使用后,需要计算每个十分位数的频率。为此,请使用table()。然后计算每个十分位数的收入百分比。

3)现在你应该有一张非常小的表格,其中包含以下列: Decile,累计收入的百分比。 添加45度线的另一列。只需添加一个不断累积的收入百分比。

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

4)您可以使用基础图形或ggplot2进行绘图。我想你可以用第3步的信息来做,也可以查看具体的绘图问题。

我得尽快做,但我已经有了决赛桌。一旦我做到了,我会发布绘图代码。

祝你好运!