如何在 R 中手动创建 x 轴上有两个类别的箱线图

How to manually create box plots in R with two categories on x-axis

我见过非常相似的问题,但 none 非常适合我正在尝试做的事情。 我有以下 RWE:

n1 = 177
avg1 = 7.508192
sd1 = 5.439677
error1 <- qnorm(.975) * sd1/sqrt(n1)
avg1 - error1
avg1 + error1

n2 = 93
avg2 = 6.713011
sd2 = 3.22479
error2 <- qnorm(.975) * sd2/sqrt(n2)
avg2 - error2
avg2 + error2

我可以通过计算 avg +/- error 看出置信区间重叠与否的程度;但是,我希望将这两组数据与它们的均值和置信区间并排绘制成一个漂亮的图形。我希望能够将 x 轴标记为 "data1" & "data2"。我查看了箱线图功能,但似乎无法弄清楚当我不使用数据本身而是手动生成置信区间时如何执行此操作。我不确定 boxplot 是否是适合使用的函数,但它在我正在寻找的范围内。我这里有 advice/places 到 look/simple 的疏忽吗?

boxplotbwplot 需要实际数据进行绘图。但是有一个名为 bxp(在 graphics 中)的函数将摘要统计数据作为输入并从中生成箱线图。它需要一个参数列表作为调用 boxplot 的输出。所以你想阅读 ?bxp?boxplotvalue 部分。您的列表至少需要包含 statsnames 元素。但是,在箱线图中可视化您在上面显示的汇总数据很可能会让其他人感到困惑,因为您使用的数字与箱线图通常显示的数字不同——请参阅 boxplot.statsDetails 部分了解常用的定义。

您的数据表明,您想要绘制均值并指出 95% 的置信区间。这可以通过 barplot 加上错误栏来完成。在 R 中有很多方法可以做到这一点——参见这个 post:

当然,一个合适的箱线图比“炸药图”(又名带误差线的条形图)提供更多信息。因此,如果您 拥有原始数据或可以获得构建数据所需的汇总统计数据,那将是更可取的。

嘿,如果你想绘制 95% CI,base R 中的箱线图可能不是最好的。因为你必须使用晶须作为置信区间?您可以将 geom_point() 与 geom_errorbar() 结合使用,请参阅我使用您的值创建的示例数据集:

x = data.frame(
x=rep(c("a","b"),each=2),
data=rep(c("A","B"),2),
avg=rep(c(avg1,avg2),2),
lower=rep(c(avg1 - error1,avg2 - error2),2),
upper=rep(c(avg1 + error1,avg2 + error2),2)
)
ggplot(x,aes(x=x,y=avg,col=data,ymin=lower,ymax=upper)) +
geom_point(position=position_dodge(width=0.1)) +
geom_errorbar(width=0.1,position=position_dodge(width=0.1))