我需要得到一个累积变量的洛伦兹曲线图,作为观测数量的函数。我希望两个轴都以百分比显示(例如,观察是买家的数量,y变量是他们购买的数量,买家已经按降序排列,我想得到的图表是“前10名” %购买者购买了总购买量的90%“)。我的数据集是几百万次观察。
最好的方法是什么?子的问题:
如果我需要为总观测值的分位数添加两个变量并且总买入$(以便用它们绘制),那么返回行号的对象是什么?我试过了:
user_quantile <- row(df)/nrow(df)
但我得到一个相同列的矩阵(user_quantile.1,user_quantile.2),其中我只需要一列。
是否有任何方法可以跳过将百分比作为变量添加并仅将它们用于轴值?
情节可以达到许多点,而不是我需要的线。什么是最小化计算工作量并获得漂亮图表的最佳方法?
感谢。
答案 0 :(得分:8)
您可能希望熟悉R内容的优秀RSeek搜索引擎。一个快速查询洛伦兹曲线(和洛伦兹曲线)会导致这些包:
所有这些似乎都提供了洛伦兹曲线函数。
答案 1 :(得分:0)
为了完成绘图,您首先需要安排原始数据。
1)您可以使用Hmisc包中的cut2()
函数来剪切分位数中的数据。检查文档,这并不难。它类似于基础包中的cut()
。
2)将cut2()
函数与收入数据一起使用后,您需要计算每个十分位数的频率。请使用table()
。然后计算每个十分位数的收入百分比。
3)现在你应该有一个非常小的表,其中包含以下列: 十分位数,累计占总收入的百分比。 添加另一列45度线。只需添加一个不变的累积收入百分比。
finaltable$cumulative_equality_line = seq(0.1, 1, by = 0.1)
4)您可以使用基本图形或ggplot2进行绘图。我想你可以用第3步的信息来做,或者查看具体的绘图问题。
我很快就会这么做,但我已经有了决赛桌。一旦我这样做,我会发布用于绘图的代码。
祝你好运!