You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

普通与基于因子的Lorenz曲线结果矛盾及多曲线绘制问题

曲线结果相反的原因

  • 核心问题是stat_lorenz()的desc参数设置不符合洛伦兹曲线的绘制逻辑:
    • 标准洛伦兹曲线需要将收入/消费等指标从小到大排序,依次计算低收入到高收入群体的累计占比对应的指标累计占比,默认参数desc = FALSE符合该要求,生成的曲线会自然位于45度线下方
    • 你设置desc = TRUE时会将指标从大到小排序,反向计算累计占比,因此曲线会出现在45度线上方,和预期结果完全相反

按ticks分组绘制多条洛伦兹曲线的实现

只需在ggplot的美学映射中添加color = ticks或group = ticks参数,即可按分组生成多条曲线,同时删除错误的desc = TRUE设置即可得到符合要求的结果。

修正后完整代码

library(gglorenz)
library(tidyverse)
library(hrbrthemes)

ticks <-  c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
consumption <- c(0, 3, 10, 30, 100, 10, 20, 300, 500, 1000 )
df <-  data.frame(ticks, consumption)
df$ticks <- as.factor(df$ticks)

df %>%
  ggplot(aes(x = consumption, color = ticks)) + # 按ticks分组,不同组曲线颜色不同
  stat_lorenz() + # 使用默认desc=FALSE,符合标准洛伦兹曲线逻辑
  coord_fixed() +
  geom_abline(linetype = "dashed") +
  scale_x_percent() +
  scale_y_percent() +
  theme_ipsum_rc() +
  labs(x = "农户累计占比",
       y = "每英亩总利润累计占比",
       title = "农户间不平等程度",
       color = "分组")

若不需要区分颜色仅需要分组绘制,将color = ticks替换为group = ticks即可。

内容的提问来源于stack exchange,提问作者Sadaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 02:45:05