菜鸟学R语言(组间多重比较)

菜鸟学R语言(组间多重比较)

经过方差分析可以说明各总体均值间的差异是否显著,即只能说明均值不全相等,但不能具体说明哪几个均值之间有显著差异。此时多重比较就派上用场了,在科研中也是比较常用的方法。
具体的理论知识不再多讲,上代码之前先了解一下多重比较的类别。

  1. LSD检验(最小显著差数检验法):这也是我最常用的方法,基本上就是T检验的简单变形,T检验是对两组,而这个可以对多组间的均数做检验;
  2. Dunnett检验:适用于多个试验组与一个对照组的比较,多对一;
  3. Turkey检验:适用于组数大于6以上(不确定);
  4. SNK法(Student-Newman-Keuls):最为流行的方法,广泛使用,但只告诉有无差异,不提供精确P值。
  5. Duncan法:没用过,不过结果应该和LSD差不多;
  6. Scheffe检验:适用于任何比较。
  7. Bonferroni法:当比较次数不多时(小于5组),Bonferroni法的效果较好。

进行两两比较的时候,假如是验证性研究用Bonferroni或LSD比较好,Bonferroni法适用于小于5组的比较。假如是探索性研究且各组人数相同用TurKey法较好,其他的用scheffe较好。

我解释的不清楚,有兴趣的话可以看看下面这个附件。
WHAT???不能插入附件嘛?这是其中的一张图。
在这里插入图片描述
具体用什么哪个方法,还是根据实际情况吧。

选几个用代码试试,我拿自己的实验数据举栗子了。
就不展示进行正态分布和方差齐性检验的部分了。下图是我论文中的一幅图,每个柱子上边的的abc字母不同代表差异显著。可以认为是5个变量(5个深度),4个水平(4种植被,用1 2 3 4表示),或者反过来说也可以吧。。因变量是同位素值。比较各个深度下,不同的植被同位素值的组间差异。第一个和最后一个深度,方差分析显示差异不显著,其实也就没有必要做多重比较了,但我也标上字母了,只不过都一样。
在这里插入图片描述
扯了不少废话,上代码!!!

LSD检验

library(agricolae)
qiudexun <- aov(nb1~type1, data = soil)
out1 <- LSD.test(qiudexun, "type1", p.adj = "bonferroni" )
print(out1$groups)
qiudexun <- aov(nb2~type2, data = soil)
out1 <- LSD.test(qiudexun, "type2", p.adj = "bonferroni" )
print(out1$groups)
qiudexun <- aov(nb3~type3, data = soil)
out1 <- LSD.test(qiudexun, "type3", p.adj = "bonferroni" )
print(out1$groups)
qiudexun <- aov(nb4~type4, data = soil)
out1 <- LSD.test(qiudexun, "type4", p.adj = "bonferroni" )
print(out1$groups)
qiudexun <- aov(nb5~type5, data = soil)
out1 <- LSD.test(qiudexun, "type5", p.adj = "bonferroni" )
print(out1$groups)

结果如下:

> library(agricolae)
> qiudexun <- aov(nb1~type1, data = soil)
> out1 <- LSD.test(qiudexun, "type1", p.adj = "bonferroni" )
> print(out1$groups)
        nb1 groups
1 -7.683238      a
4 -7.932266      a
3 -8.271141      a
2 -8.523507      a
> qiudexun <- aov(nb2~type2, data = soil)
> out1 <- LSD.test(qiudexun, "type2", p.adj = "bonferroni" )
> print(out1$groups)
         nb2 groups
4  -9.775052      a
1 -10.147676     ab
3 -10.161522     ab
2 -11.173642      b
> qiudexun <- aov(nb3~type3, data = soil)
> out1 <- LSD.test(qiudexun, "type3", p.adj = "bonferroni" )
> print(out1$groups)
        nb3 groups
4 -10.24492      a
3 -10.53397      a
1 -11.53943     ab
2 -12.50955      b
> qiudexun <- aov(nb4~type4, data = soil)
> out1 <- LSD.test(qiudexun, "type4", p.adj = "bonferroni" )
> print(out1$groups)
         nb4 groups
3  -9.768635      a
2 -10.134467     ab
1 -10.336852     ab
4 -11.266095      b
> qiudexun <- aov(nb5~type5, data = soil)
> out1 <- LSD.test(qiudexun, "type5", p.adj = "bonferroni" )
> print(out1$groups)
         nb5 groups
3  -9.633797      a
2  -9.936403      a
1 -10.376280      a
4 -11.256957      a

代码应该可以简化,不过重要的方法和结果,写论文谁在乎你的过程啊(我胡说的)。
用的方法是LSD,但是注意p.adj = “bonferroni”,这是不是就等同于Bonferroni法?如果去掉这行代码呢?用nb2~type2检验一下。

> qiudexun <- aov(nb2~type2, data = soil)
> out1 <- LSD.test(qiudexun, "type2")
> print(out1$groups)
         nb2 groups
4  -9.775052      a
1 -10.147676      a
3 -10.161522      a
2 -11.173642      b

可以看到结果是不同的!分别是a, a, a, b和a, ab, ab, b!但哪个对呢?我也不清楚。。我做的时候加上了p.adj = “bonferroni”

Dunnett检验

这个适用于有对照组的数据,多个组分别于一个组进行比较。
其实我的数据也有对照组,PR、CK、AG、Cropland分别是刺槐、柠条、撂荒草地、农地。农地就是对照组,下面试试:

试了半天出错了,凸(艹皿艹 ),略过!

Tukey检验

上面提到Tukey检验适用于组数大于6以上,这个其实并不是判断依据,如果各组例数相等,Tukey法也很不错!而且是所有组之间的比较,我感觉在不考虑适用条件的情况下,Tukey检验可以代替Dunnett检验,只不过输出结果是P值的形式。

> qiudexun <- aov(nb1 ~ as.factor(type1), data = soil)
> tuk <- TukeyHSD(qiudexun)
> tuk
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = nb1 ~ as.factor(type1), data = soil)

$`as.factor(type1)`
         diff       lwr      upr     p adj
2-1 -0.840269 -4.288832 2.608294 0.9126657
3-1 -0.587903 -4.036466 2.860660 0.9673972
4-1 -0.249028 -3.697591 3.199535 0.9973443
3-2  0.252366 -3.196197 3.700929 0.9972372
4-2  0.591241 -2.857322 4.039804 0.9668702
4-3  0.338875 -3.109688 3.787438 0.9933945
> qiudexun <- aov(nb2 ~ as.factor(type2), data = soil)
> tuk <- TukeyHSD(qiudexun)
> tuk
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = nb2 ~ as.factor(type2), data = soil)

$`as.factor(type2)`
         diff         lwr         upr     p adj
2-1 -1.025966 -1.98726176 -0.06467024 0.0344268
3-1 -0.013846 -0.97514176  0.94744976 0.9999737
4-1  0.372624 -0.58867176  1.33391976 0.6893429
3-2  1.012120  0.05082424  1.97341576 0.0373150
4-2  1.398590  0.43729424  2.35988576 0.0036800
4-3  0.386470 -0.57482576  1.34776576 0.6651247

以nb2 ~ as.factor(type2)为例,注意这里要加as.factor,这是因为自变量用数字1234表示的,R可能识别不出来这是因子。看P值,小于0.05的有2-1,3-2,4-2,转换为字母表示(平均值由大到小为4, 1, 3, 2):a, a, a, b。这与LSD方法结果一样,与bonferroni不一样。
写到这里,难道我论文中的结果,要修改嘛???

一言难尽,睡觉了,剩下的几种方法下次再补充。
### 回答1: 习 R 语言的 ggplot2 语法的方法有很多,下面是一些建议: 1. 首先,可以阅读 ggplot2 官方文档,了解 ggplot2 的基本概念和使用方法。官方文档链接:https://ggplot2.tidyverse.org/ 2. 可以在网上搜索 ggplot2 教程,找到适合自己的习方式。一些可以参考的资源包括: - R 语言中文社区(https://www.r-project.org.cn/)上的 ggplot2 教程:https://www.r-project.org.cn/document/r-tutor/r-tutor-ggplot2.html - 菜鸟教程(https://www.runoob.com/)上的 ggplot2 教程:https://www.runoob.com/r/r-ggplot2-intro.html - 还有一些博客、论坛等网站上的 ggplot2 教程,如:https://www.cnblogs.com/datageek/p/10840165.html 3. 可以尝试自己动手练习,使用 ggplot2 绘图。一些可以参考的练习题目包括: - 绘制简单的直方图、饼图等 - 绘制多变量数据的散点图、条形图等 - 绘制分组数据的折线图、箱线图等 4. 可以加入一些习群或论坛,和其他习者交流习心得。 希望这些建议能帮助你习 ggplot2 语法。 ### 回答2: R语言的ggplot2语法可以通过以下几个步骤进行: 1. 了解ggplot2的基本概念:ggplot2是R语言中用于数据可视化的一个包,它基于“图层”和“映射”的思想进行数据绘图。在开始习ggplot2之前,先了解它的核心概念和基本原理是非常重要的。 2. 习ggplot2的基本语法:ggplot2的语法相对简洁直观,通过使用“+”符号来逐步构建图形。习ggplot2的语法包括了解如何在图层中添加数据、映射、几何对象、标度、分面等元素。 3. 掌握ggplot2的常用函数:ggplot2有许多常用的函数,如qplot()、ggplot()、aes()等。这些函数可以用来创建一个基础图形、设置绘图参数、进行数据映射等。习这些常用函数能够帮助我们更好地理解和使用ggplot2。 4. 阅读相关文档和示例:ggplot2有丰富的文档和示例,可以从ggplot2官方文档或书籍中找到习资源。阅读这些文档和示例能够帮助我们更深入地了解ggplot2的各种功能和用法。 5. 练习和实践:习ggplot2语法最重要的一点是不断练习和实践。通过自己动手编写代码、绘制图形,探索和尝试不同的参数和选项,可以逐渐掌握ggplot2的语法和技巧。 总之,习ggplot2的语法需要通过了解基本概念、习基本语法、掌握常用函数、阅读文档和示例,并进行实践和练习。通过不断的习和实践,我们可以逐步掌握并熟练运用ggplot2的语法,从而能够更好地进行数据可视化。 ### 回答3: R语言的ggplot2语法需要按照以下步骤进行: 1. 了解ggplot2的基本概念和原理。ggplot2是一个用于数据可视化的R包,其基于图层(layer)的概念,可以通过逐渐添加图层来构建复杂的图形。理解图层的概念对于习ggplot2的语法非常重要。 2. 习ggplot2的基本语法。ggplot2的语法基于“+”符号,通过逐步组合不同的图层和美映射(aesthetic mappings)来构建图形。掌握基本的语法结构,包括ggplot()函数、aes()函数和geom_*()函数,是习ggplot2的关键。 3. 阅读官方文档和教程。ggplot2官方文档提供了详细的介绍和示例,可以通过查看文档来习不同的图层和美映射的用法。此外,还有许多在线教程和书籍可供参考,例如《ggplot2: Elegant Graphics for Data Analysis》。 4. 练习绘制图形。习ggplot2最好的方式是进行实践。可以通过使用现有的数据集或者自己创建数据集来练习绘制图形。不断尝试不同的图层和美映射,探索不同的图形效果和展示方式。 5. 参考其他人的代码和作品。通过查看其他人的ggplot2代码和图形作品,可以习到更多实际应用的技巧和经验。可以在GitHub上搜索ggplot2相关的项目和资源,也可以参加R语言社区的讨论和交流。 总之,要R语言的ggplot2语法,需要理解ggplot2的基本概念和语法结构,阅读官方文档和教程,进行实践练习,并参考其他人的代码和作品。通过不断的习和实践,就可以掌握ggplot2的语法,从而能够使用ggplot2创建出美观且富有表达力的数据可视化图形。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值