如何解决如何将效果大小添加到 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)
问题
感谢任何建议或指导。
解决方法
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 并将其放入图中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。