ggplot的置信区间误差棒

3

我想在ggplot中添加置信区间误差线。

我有一个数据集,并且使用ggplot绘制如下:

df <- data.frame(
        Sample=c("Sample1", "Sample2", "Sample3", "Sample4", "Sample5"), 
        Weight=c(10.5, NA, 4.9, 7.8, 6.9))

p <- ggplot(data=df, aes(x=Sample, y=Weight)) + 
geom_bar(stat="identity", fill="black") + 
scale_y_continuous(expand = c(0,0), limits = c(0, 8)) + 
theme_classic() + 
theme(axis.text.x = element_text(angle = 45, hjust = 1)

p

我刚开始学习添加误差线,看了一些使用geom_bar的选项,但却没能成功。

希望得到帮助,在条形图中加入置信区间误差线。谢谢!


4
每个样本只有一次观察。 - slava-kohut
3
你希望知道如何估算误差或置信区间并绘制图表。为了生成区间,你需要进行统计建模假设。如果你只是问我的年龄,那么只有一个真实值;因此,很难为我的年龄提供“好”的误差范围。 - MrFlick
实际上,每个重量观测值都是八个观测值的平均值。 - Jessica
1
你有原始的 Weight 值吗?如果有,计算每组8个值的平均值和标准误差,然后可以计算一个区间(例如,对于95%的区间,平均值+/-(2 * se))。 - Gavin Simpson
1
你能展示原始数据吗?你需要标准误差吗? - Mike
尽管给出的评论和答案提供了解决问题的可靠方法,但请允许我建议一种完全不同的方式来可视化您的数据。如果您只有八个测量值,那么汇总统计可能会有些误差。为什么不显示箱线图,甚至是实际值,例如使用geom_point - 这将更好地展示实际测量值。在这种情况下,条形图非常具有误导性,实际上更适用于计数统计。 - tjebo
1个回答

4
使用 geom_errorbar 添加误差条层。
df <- data.frame(
  Sample=c("Sample1", "Sample2", "Sample3", "Sample4", "Sample5"), 
  Average.Weight=c(10.5, NA, 4.9, 7.8, 6.9),
  # arbitrarily make up some Standard Errors for each mean:
  SE = c(1, NA, .3, .25, .2)) # JUST MAKING THINGS UP HERE
 

现在你有一个包含每个样本的 Average WeightSE 列的数据框。使用 ggplot 绘制:

ggplot(data = na.omit(df)) + #don't bother plotting the NA
  geom_bar(stat = "identity", aes(x = Sample,y = Average.Weight)) +
  geom_errorbar(
    aes(x=Sample, 
        ymin = Average.Weight - 1.96*SE, 
        ymax = Average.Weight + 1.96*SE), 
    color = "red"
  )

enter image description here


你可能需要澄清一下 df$SE = 1/1:nrow(df) 只是为标准误差创建了一些占位符值。 - Axeman
你好,我想在置信水平为0.05时,在柱状图上添加显著差异。这是一个数据框对象,我使用ANOVA做了同样的事情:lsmeans(df, pairwise~Weight, adjust='Tukey')。但我不确定如何将差异(星号)放入此数据集中。谢谢! - Jessica
看起来这里有一个类似的问题:https://dev59.com/Y2Qn5IYBdhLWcg3wIUFn,有一些叫做`ggsignif`和`ggpubr`的包可能会有所帮助。 - Dij
你好 @Dij,我使用了你的代码来添加误差线,但是我得到的误差线非常小,难以置信。我不确定出了什么问题。谢谢! - Jessica
@Jessica 你的标准误差是什么,你是如何计算它们的?看起来你的平均值在5到10之间。除非你分享一些数据,否则我真的无法告诉你置信区间有多准确。在你的问题中,你只提供了平均值,而没有产生这些平均值的分布,因此我们无法知道任何平均估计的SE是多少。 - Dij
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接