r语言平均值显著性检验_R语言标记显著性标记

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-24 08:44   108   0

学术论文和杂志中最常见的是用“字母”和“星号”标记差异显著性,在之前的文章《显著性分析后如何标记“abc”?》已经介绍过如何用SPSS比较均值的结果进行“纯手动”添加字母显著性标记。嗯,方法似乎非常“绕”,且一走神就容易错。

那么有没有R脚本可以实现相关的方差分析、均值比较、生成变量均值对应的“字母标记”?当然,如果能直接将字母标记添加到图表(比如柱状图)中,岂不美滋滋?

闲言少叙,接下来主要为大家介绍如何用R进行方差齐性检验(Bartlett test 和Levene test)、方差分析、均值的多重比较方法(TukeyHSD和LSD法),最后用ggplot2包进行数据可视化。示例数据和脚本可通过点击 阅读原文下载

# 读取示例数据data

data

方差齐性检验nom

# 如果是2(多)因数,使用interaction()函数,leveneTest(y~interaction(var1,var2),data= data)

nom

nom$p.value # 输出p值,当p>0.05时,方差是齐性的。

# 使用另一种方法进行齐性检验,SPSS软件使用Levene test进行齐性检验,这里需要安装car包。

install.packages("car")

library("car")

nom1

# 如果是2因素,使用*,leveneTest(y~ivar1*var2,data = data)

nom1

nom1$`Pr(>F)` # 输出p值,当p>0.05时,方差是齐性的。

方差分析# 单因素方差分析,整体来看差异显著

oneway

anova(oneway)

多重比较#TukeyHSD法(Tukey’s Honestly Significant Difference)

bijiao

bijiao

# 得到两两比较的差异分析结果

# LSD法(Fisher’s Least Significant Difference)

install.packages("agricolae")

library("agricolae")

out

out

# LSD法检验处微小的差异,比较方便的是直接得出显著行标记,不需人工标记

# 整理用于作图的数据框

mar

rownamemar

newmar

sort

# 将groups的数据框按列名排序,目的是保持与均值标准差的数据一一对应

rowname

mean

sd

marker

plotdata

plotdata

# 生成新的数据框

作图+显著性标记# ggplot2 绘制带显著性标记的柱状图,更详细的内容参考《ggplot2绘图学习笔记分享》的内容

library("ggplot2")

p1

p1

p2

p3

p3

p4

p4

p5

p5

#更改y轴显示范围,这里的expand默认为TRUE

mytheme

axis.text =element_text(size=12),

panel.grid.major =element_line(color ="white"),

panel.grid.minor =element_line(colour = "white"),

axis.text.x =element_text(size = 12,angle=0,vjust=0,hjust=0,color = "black"),

axis.text.y =element_text(size = 12,color ="black"),

legend.text =element_text(size = 12),legend.title = element_blank()

plot.margin =unit(c(0.5,0.5,0.5,0.5), "cm"))

p5+mytheme

# 最终的绘制结果如下,如果不喜欢柱子下的“空隙”,可将p5中coord_cartesian(ylim = c(0,60),expand =FALSE)的expand改为TRUE。

#将图表保存为PDF文件

ggsave("wanyixia1.pdf", width = 10, height= 10, units = "cm")

最后想一下,如果不用LSD法现成的标记,用TukeyHSD法两两比较的结果又该进行标记呢?

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP