文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

R语言绘制带误差线的条形图

2024-04-02 19:55

关注

条形统计图是用一个单位长度表示一定的数量,根据数量的多少画成长短不同的直条.带误差的条形图可以通过误差线来判断显著性。

在这里插入图片描述

继续使用我们的汽车销售数据(公众号回复:汽车销售,可以获得该数据)来演示,先导入数据

library(foreign)
library(ggplot2)
library(tidyverse)  
bc <- read.spss("E:/r/test/tree_car.sav",
                use.value.labels=F, to.data.frame=T)
names(bc)

在这里插入图片描述

我们来看下数据,car就是汽车售价,age是年龄,gender是性别,inccat是收入,这里分成4个等级,ed是教育程度。
假设我们想知道不同教育水平的男女在买汽车的价格上有什么不同,可绘制带误差和可信区间的折线图,关键就是要算出它的标准误se和95%ci.
我们先生成一个计算标准误se和95%ci的自定义函数,这是国外一位大佬设计的函数,我见好用直接搬运过来了。

summarySE <- function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE,
                      conf.interval=.95, .drop=TRUE) {
  library(plyr)
  
  # New version of length which can handle NA's: if na.rm==T, don't count them
  length2 <- function (x, na.rm=FALSE) {
    if (na.rm) sum(!is.na(x))
    else       length(x)
  }
  
  # This does the summary. For each group's data frame, return a vector with
  # N, mean, and sd
  datac <- ddply(data, groupvars, .drop=.drop,
                 .fun = function(xx, col) {
                   c(N    = length2(xx[[col]], na.rm=na.rm),
                     mean = mean   (xx[[col]], na.rm=na.rm),
                     sd   = sd     (xx[[col]], na.rm=na.rm)
                   )
                 },
                 measurevar
  )
  
  # Rename the "mean" column    
  datac <- rename(datac, c("mean" = measurevar))
  
  datac$se <- datac$sd / sqrt(datac$N)  # Calculate standard error of the mean
  
  # Confidence interval multiplier for standard error
  # Calculate t-statistic for confidence interval: 
  # e.g., if conf.interval is .95, use .975 (above/below), and use df=N-1
  ciMult <- qt(conf.interval/2 + .5, datac$N-1)
  datac$ci <- datac$se * ciMult
  
  return(datac)
}

生成函数后,我们使用自定义函数summarySE生成标准误se和95%ci. Measurevar填入你要衡量比较的指标,这里填入汽车售价,groupvars这里填入性别和教育程度。

carss<- summarySE(bc, measurevar="car", groupvars=c("gender","ed"))

生成了我们需要的做图数据

在这里插入图片描述

画条形图和画折线图不同的是,教育这个指标我们要转换成分类变量

carss$ed <- factor(carss$ed)

转换好以后就可以做图了,先做一个带误差线的

ggplot(carss, aes(x=ed, y=car, fill=gender)) + 
  geom_bar(position=position_dodge(), stat="identity") +
  geom_errorbar(aes(ymin=car-se, ymax=car+se),
                width=.2,                    # Width of the error bars
                position=position_dodge(.9))

在这里插入图片描述

画个带置信区间的

ggplot(carss, aes(x=ed, y=car, fill=gender)) + 
  geom_bar(position=position_dodge(), stat="identity") +
  geom_errorbar(aes(ymin=car-ci, ymax=car+ci),
                width=.2,                    # Width of the error bars
                position=position_dodge(.9))

在这里插入图片描述

进行美化一下,一个可以用于发表的图就做成了

在这里插入图片描述

如何利用置信区间来判断显著性

在这里插入图片描述

在这里插入图片描述

到此这篇关于R语言绘制带误差线的条形图的文章就介绍到这了,更多相关R语言 带误差线条形图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯