微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将效果大小添加到 t 检验的 ggplot 条形图? 例如,Cohen's d 或 Hedges' g

如何解决如何将效果大小添加到 t 检验的 ggplot 条形图? 例如,Cohen's d 或 Hedges' g

我有一个如下所示的数据集。

Group <- c("A","B","A","B")
score <- c(26,22,15,5,19,3,4,23,2,20,4)
Order <- c("First","First","Second","Second")
Data <- data.frame(Group,score,Order)

Data

   Group score  Order
1      A    26  First
2      B    22  First
3      A    15  First
4      A     5 Second
5      A    19  First
6      B     3 Second
7      A     4 Second
8      A     5 Second
9      B    23  First
10     B     3 Second
11     A     5 Second
12     A     2 Second
13     B    20  First
14     B     4 Second

我需要绘制每组之间的分数差异,以及每次比较的效果大小(Cohen's d 或 Hedge's g 都可以)。

下面的代码让我得到了我想要的情节,但效果大小。

OrderComparison <- list(c("First","Second"))

ggplot(Data,aes(Order,fill=Order))+ 
  stat_summary(geom = "bar",fun = mean,position = "dodge",color="black")+
  stat_summary(geom = "errorbar",fun.data = mean_se,width=.2)+
  stat_compare_means(method = "t.test",comparisons = OrderComparison,label = "p.signif",position = "identity")+
  facet_wrap(~Group,scales="fixed",strip.position = "bottom")+
  theme_classic()+
  theme(legend.position = "none")+
  scale_fill_grey(start = .6,end = 1)

image of bar plot

问题

我需要什么代码(和/或包)来自动放置效果 每次比较的大小?

感谢任何建议或指导。

解决方法

library(effsize)
library(dplyr)

cohen=numeric()
for (i in LETTERS[1:2]) {
  Group=filter(Data,Group==i)
  treatment = filter(Group,Order=="First")%>%select(Score)%>%unlist()
  control = filter(Group,Order=="Second")%>%select(Score)%>%unlist()
  d = (c(treatment,control))
  f = c(rep("Treatment",length(treatment)),rep("Control",length(control)))
  c=cohen.d(treatment,control)
  cohen[i]=c$estimate
}

effsize=data.frame(sz=c(rep(paste("Cohen's d:",cohen[1]),8),rep(paste("Cohen's d:",cohen[2]),6)),Group=c(rep("A",rep("B",6)))

ggplot(Data,aes(Order,Score,fill=Order))+ 
  stat_summary(geom = "bar",fun = mean,position = "dodge",color="black")+
  stat_summary(geom = "errorbar",fun.data = mean_se,width=.2)+
  stat_compare_means(method = "t.test",comparisons = OrderComparison,label = "p.signif",position = "identity")+
  facet_wrap(~Group,scales="fixed",strip.position = "bottom")+
  theme_classic()+
  theme(legend.position = "none")+
  scale_fill_grey(start = .6,end = 1)+
  geom_text(aes(x=1.5,y=25,label=sz),data=effsize)

它手动计算两组的 Cohen's d 并将其放入图中。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。