批量统计比较,听说你想要很久了?安排!

2020-07-16 15:10:48 浏览数 (2)

统计学一直是让医学生头疼的课程,文章中各式各样的统计方法让人云里雾里。举个简单的例子,两组之间的比较,该怎么分析?你肯跟会说用t检验,不过t检验一定是正确的吗?是否方差齐性,是否正态分布,这些都是我们要关心的,如果方差不齐,我们该怎么办?如果有很多分组,我们两两之间必要,也要花费很多的时间。那有没有什么快速、高效、准确的方法,能够让我们快速准确绘制统计检验的图形呢?哈哈,今天我们就来学习一下如何用最快最简单的方式完成统计检验和绘制发表级的图片吧!

背景知识-统计

关于不同分组的统计比较,首先最重要的就是统计方法的选择,具体的原理我们在此不做赘述。至于啥时候用t检验,啥时候用方差分析,啥时候用非参,啥时候用卡方,大家还是应该多多少少知道一些的。关于这些统计方法的定义啥的,我们就不过多赘述了,这里有个表格,给大家做个汇总。

实例操作

了解了上面的统计内容后,我们就直奔主题了,不再绕弯子了。我们所有的分析也都是用R语言来操作,根据客服的统计,我们发现近期大家对于R语言的基础问题,比如如何运行,如何安装R包等问题,提问的越来越少,看来大家对R语言的基础已经掌握的七七八八了,这是一件好事情。还是那句话,希望大家不要一心盯着高级代码,基础要打扎实,切忌焦躁。好了,啰哩啰嗦讲完了,直接上代码:

比较两个独立的组

首先总归是读入数据,老规矩,下一步就是核查数据,如果数据不对的话,还要进行转换。这些所有的预处理都弄好了之后,后面就是均值的比较了,以前不同的方法要用到不同的函数,现在一个函数即可,compare_means()函数,可以帮我们实现多种方法的均值比较。

1### 1.比较两个独立的组: 2# read in data 3data<-read.csv("data.csv",header=T,row.names=1) 4# check data 5str(data) 6# format data 7data$dose<-as.factor(data$dose) 8 9# t检验 10compare_means(len ~ supp, data = data, 11 method = "t.test") 12 13# wilcoxon 检验 14compare_means(len ~ supp, data = data, 15 method = "wilcox.test")

输出的结果是什么样子的呢?我们一起来看看:

这个结果怎么看呢?曾经听一个做统计的老师说过这么一句话:统计就是个“屁”(p)。虽然是一句笑谈,但是p value确实是统计结果中我们最关心的,所以,上面的图中有好多p值,我们可以直接看p.signif,这个是直接显示p值是否显著的,这里是ns,就是not significant的意思。下面就是画图的事情了,p值有了,后面就是绘图了,怎么绘图很重要。关于不同组别的比较,可以用很多图形表示,大家动动脑筋,比如箱线图、小提琴图、乃至半小提琴图都可以,这些图形我们之前都讲过,不过之前的教程没有跟大家说如何在图中绘制p值,现在就教大家怎么绘制完整的统计比较绘图。

1# violin plot 2ggviolin(data,x="supp",y="len", 3 color = "supp", 4 fill="NA", 5 palette ="jco", 6 alpha=0.7, #透明度 7 linetype=1, 8 trim=F, 9 size=1, 10 width=1, #violin width 11 draw_quantiles = 0.5, #median value 12 add=c("jitter","mean"), #加散点 13 add.params = list(shape="supp",color="supp",alpha=0.6), 14 error.plot = "errorbar", 15 position=position_dodge(1), 16 xlab="supp", #x轴 17 ylab="Length",#y轴 18 title=" ", 19 ggtheme=theme_pubr()) 20 stat_compare_means(method = "t.test",label.y = 50)#可改成wilcox.test

好了,图形出来了,是不是看起来还不错呢?

比较成对的两组

有独立样本检验,就有配对样本检验。特别是对于那些自身对照的样本,这个还是很重要的。

1### 2.比较成对的两组: 2ggpaired(data, x = "supp", y = "len", 3 color = "supp", line.color = "gray", line.size = 0.4, 4 palette = "jco") 5 stat_compare_means(paired = TRUE, method = "t.test")

两组以上统计比较

两组的统计比较还是略微简单一些的,那多组的比较就很烦了,如果是3组,你要两两比较,需要比较3次,如果是4组,那就需要比较6次。这个是非常耗费时间,而且容易出错的地方。

1### 3.两组以上统计检验 2compare_means(len ~ dose, data = data) 3compare_means(len ~ dose, data = ToothGrowth,method = "t.test")

似乎还不错哈,不管你有多少组,指定组别,直接就能计算出来了,一个词“方便”!

多类型亚组统计比较

实际在文章中我们常常会有另一个需求,除了多个分组之间的比较,还会涉及多种类型的亚组比较,比如比较不同药物浓度下两个对照组之间是否有差别,那么应该如何统计,如何画我们的美图呢?这里给大家提供一种方法:分面(facet)。

所谓分面,顾名思义就是按照数据不同的亚组分不同层面绘制,实现方法如下:

1## 多亚组分析 2# 分面 3ggviolin(data,x="supp",y="len", 4 color = "supp", 5 fill="NA", 6 palette ="jco", 7 alpha=0.7, #透明度 8 linetype=1, 9 trim=F, 10 size=1, 11 width=1, #violin width 12 draw_quantiles = 0.5, #median value 13 add=c("jitter","mean"), #加散点 14 add.params = list(shape="supp",color="supp",alpha=0.6), 15 error.plot = "errorbar", 16 position=position_dodge(1), 17 xlab="supp", 18 ylab="Length", 19 title=" ", 20 ggtheme=theme_pubr()) 21 stat_compare_means(method = "t.test",label = "..p..",label.y = 40) 22 facet_grid(~dose)#加上一行即可

这样是不是很直观呢,当然还有一种方法,如果你喜欢上面的分面,也可以把所有的图放在一个坐标轴内。

1# 取消分面 2ggviolin(data,x="dose",y="len", 3 # remove=c("4") 4 color = "supp", 5 fill="NA", 6 palette ="jco", 7 alpha=0.7, #透明度 8 linetype=1, 9 trim=F, 10 size=1, 11 width=1, #violin width 12 draw_quantiles = 0.5, #median value 13 add=c("jitter","mean"), #加散点 14 add.params = list(shape="supp",color="supp",alpha=0.6), 15 error.plot = "errorbar", 16 position=position_dodge(1), 17 xlab="dose", 18 ylab="Length", 19 title=" ", 20 ggtheme=theme_pubr()) 21 stat_compare_means(aes(group = supp),method = "t.test",label="..p..")

观察一下,和上面这幅图有什么不一样?ok,关于批量的统计比较分析,我们先讲到这里,希望大家能够学会文中的操作,因为这样能够极大地提升我们的工作效率。好了,赶紧联系客服领取代码和测试数据吧。

0 人点赞