首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中为这些最低显着性差异(LSD)结果创建字母摘要?

如何在R中为这些最低显着性差异(LSD)结果创建字母摘要?
EN

Stack Overflow用户
提问于 2018-04-06 23:48:13
回答 2查看 1.2K关注 0票数 2

我试着在R中比较不同材料重量的材料的抗拉强度。拉伸数据如下:

代码语言:javascript
复制
tensile <- read.table(text="   Weight Strength Replicate
1      15        7         1
2      15        7         2
3      15       15         3
4      15       11         4
5      15        9         5
6      20       12         1
7      20       17         2
8      20       12         3
9      20       18         4
10     20       18         5
11     25       14         1
12     25       18         2
13     25       18         3
14     25       19         4
15     25       19         5
16     30       19         1
17     30       25         2
18     30       22         3
19     30       19         4
20     30       23         5
21     35        7         1
22     35       10         2
23     35       11         3
24     35       15         4
25     35       11         5", header=TRUE)

就本分析而言,应将变量Weight视为一个因子(解释性/自变量):

代码语言:javascript
复制
tensile$Weight <- factor(tensile$Weight)

我首先对我的数据拟合了一个单向ANOVA模型:

代码语言:javascript
复制
tensile.aov <- aov(Strength ~ Weight, data = tensile)

根据方差分析,对于响应(强度)来说,不同的权重似乎是不同的。因此,我决定使用LSD (最小显着性差异)进行成对比较:

代码语言:javascript
复制
LSD.aov(tensile.aov)

然而,这个LSD函数是通过一个单独的文件提供的,所以很遗憾我无法在这里分享代码。

我计算了我的数据的LSD,得到了下表:

请注意,根据原始p值,35和15以及25和20权重之间的成对比较是唯一在alpha = 0.05显著性水平上彼此没有显著差异的权重;其他成对比较是显著不同的。我想创建一个字母摘要来说明这一点,其中只有当组之间没有显著差异时才具有相同的字母,而不具有相同字母的组彼此之间存在显著差异:

如何在R中创建这样一个表?

我也完全接受“手动”解决方案。这里,我指的是使用向量等手动创建表。我是R的新手,所以我甚至不能很好地掌握最基本的方面。

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 11:54:33

multcompView包可以将p值转换为字母,但在本例中,emmeans包既可以执行比较,也可以执行字母。

代码语言:javascript
复制
library(emmeans)
em <- emmeans(tensile.aov, ~Weight)

summary(pairs(em, adjust="none"), infer=TRUE)
#>  contrast estimate      SE df    lower.CL   upper.CL t.ratio p.value
#>  15 - 20      -5.6 1.79555 20  -9.3454518 -1.8545482  -3.119  0.0054
#>  15 - 25      -7.8 1.79555 20 -11.5454518 -4.0545482  -4.344  0.0003
#>  15 - 30     -11.8 1.79555 20 -15.5454518 -8.0545482  -6.572  <.0001
#>  15 - 35      -1.0 1.79555 20  -4.7454518  2.7454518  -0.557  0.5838
#>  20 - 25      -2.2 1.79555 20  -5.9454518  1.5454518  -1.225  0.2347
#>  20 - 30      -6.2 1.79555 20  -9.9454518 -2.4545482  -3.453  0.0025
#>  20 - 35       4.6 1.79555 20   0.8545482  8.3454518   2.562  0.0186
#>  25 - 30      -4.0 1.79555 20  -7.7454518 -0.2545482  -2.228  0.0375
#>  25 - 35       6.8 1.79555 20   3.0545482 10.5454518   3.787  0.0012
#>  30 - 35      10.8 1.79555 20   7.0545482 14.5454518   6.015  <.0001
#>
#> Confidence level used: 0.95

cld(em, adjust="none")
#>  Weight emmean       SE df  lower.CL upper.CL .group
#>  15        9.8 1.269646 20  7.151566 12.44843  1    
#>  35       10.8 1.269646 20  8.151566 13.44843  1    
#>  20       15.4 1.269646 20 12.751566 18.04843   2   
#>  25       17.6 1.269646 20 14.951566 20.24843   2   
#>  30       21.6 1.269646 20 18.951566 24.24843    3  
#> 
#> Confidence level used: 0.95 
#> significance level used: alpha = 0.05
票数 1
EN

Stack Overflow用户

发布于 2018-04-07 01:08:24

我设法做到了以下几点:

代码语言:javascript
复制
Weight = c(15, 20, 25, 30, 35)
mean = c(9.8, 15.4, 17.6, 21.6, 10.8)
letters = c("a", "b", "b", "", "a")
LSDletterSummary <- data.frame(Weight, mean, letters)
LSDletterSummary

如果有人有更好的方法,请随时分享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49696569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档