朋友圈选美大赛
我觉得好好玩,就转发到了自己的朋友圈,果然感兴趣的小伙伴超级多,太多人询问如何绘制这张图,我就委托公众号:《 医学僧的科研日记》写一个笔记,如下:
我们经常会碰到连续变量的多组比较,比如比较基因在不同分组(如分期、分级和亚型等)的表达差异。两个分组之间的比较可以使用T检验或Wilcox秩和检验,三个及三个以上分组的比较可以使用方差检验和kruskal检验。同样的,我们可以将不同分组的差异结果进行可视化,比如这里我们模拟一个基因在肿瘤四种AJCC分期的表达情况。同样的,我们可以将不同分组的差异结果进行可视化。这里,可以想象有一个选美比赛,一共有4个lady参加这个比赛,有30个评委需要对这4个lady进行评价,打分(Beauty值)在(-5,5)分区间内, 我们这里比较以下30个评委的打分分布来判断4个lady谁能获得冠军。
# 生成随机数
set.seed(39)
data <- data.frame(Beauty=c(rnorm(30,0,1.3),rnorm(30,0.5,1.6),
rnorm(30,1,1.9),rnorm(30,1.5,1.9)),
Lady=c(rep(paste0('Lady-',1:4),each=30)))
# 开始可视化+统计分析:
library(ggplot2)
library(ggsci)
library(ggpubr)
ggplot(data,aes(Lady,Beauty,fill=Lady))+
geom_boxplot(outlier.colour = NA,notch = T,size = 0.4)+
geom_jitter(shape = 21,size=2,width = 0.2)+
geom_violin(position = position_dodge(width = .75),
size = 0.4,alpha = 0.4,trim = T)+
theme_classic()+
theme(legend.position = 'none',
axis.title.y = element_text(size=12),
axis.text = element_text(size=12),
axis.title.x = element_blank())+
scale_fill_npg()+
stat_compare_means(comparisons = list(c('Lady-1','Lady-2'),c('Lady-1','Lady-3'),
c('Lady-1','Lady-4'),c('Lady-2','Lady-3'),
c('Lady-2','Lady-4'),c('Lady-3','Lady-4')),
label = 'p.signif')+
stat_compare_means(label.y = max(data$Beauty)+5.5)
ggsave('LadyFirst.pdf',width = 4,height = 4)
从统计结果来看,这4位选手的Beauty值是有差异的(Kruskal−Wallis, p = 0.00061),但是Lady2与Lady3, Lady2与Lady4以及Lady3与Lady4两两之间是没有统计学差异的。Of note!Lady1的Beauty值要显著低于其他三个Lady,那如果有一个选丑比赛,then we have a winner!但既然是比赛嘛,总得有个胜负,所以我们比较以下她们Beauty value的中位值,发现,Lady-4的Beauty值 最高,followed by Lady-3 and Lady-2. 所以我们的冠军是Lady-4,亚军是Lady-3,季军是Lady-2, Lady-1也得到了一张参与卡片,上面写的是“谢谢惠顾”。