R绘制月薪百分位与累计相对频率笛卡尔平面报错如何解决?
报错根因
- 你计算得到的
x1是间隔5%的百分位数结果,共21个值(seq(0, 1, by=0.05)生成的概率序列长度为21) - 你编写的
y1<-prop.table(bd_tarea[8])得到的是80条原始薪资数据各自的占比,长度为80,二者长度不匹配触发报错 - 额外逻辑问题:你需求中的纵轴是累计相对频率,和单条原始数据的占比不属于同一指标,原始
y1的计算逻辑不符合要求
修复后的完整实现代码
方法1:完全匹配题目要求的百分位数采样绘图
# 提取综合月薪数值向量 smi <- as.numeric(unlist(bd_tarea[8])) # 计算0%到100%间隔5%的百分位数作为横轴 x1 <- quantile(smi, prob = seq(0, 1, by = 0.05)) # 百分位数对应的累计相对频率就是生成百分位数用的概率序列,作为纵轴 y1 <- seq(0, 1, by = 0.05) # 绘制图形,type参数选l为折线,选p为散点,可按需调整 plot(x1, y1, type = "l", xlab = "综合月薪(比索)", ylab = "累计相对频率", main = "综合月薪累计频率分布")
方法2:使用经验累积分布函数绘制更平滑的全量分布
如果不需要严格限制只采样间隔5%的百分位点,可以直接调用R内置的经验累积分布函数,得到更流畅的累计分布曲线:
smi <- as.numeric(unlist(bd_tarea[8])) plot(ecdf(smi), xlab = "综合月薪(比索)", ylab = "累计相对频率", main = "综合月薪累计频率分布")
内容的提问来源于stack exchange,提问作者Olga Gonzalez
相关产品推荐
相关产品推荐

