如何为R中的这些最小重要差异(LSD)结果创建一个字母摘要?

时间:2018-04-06 15:48:13

标签: r statistics

我试图比较材料中不同材料重量的拉伸强度。

拉伸数据如下:

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)

变量&#34;重量&#34;应被视为本分析目的的一个因素(解释/自变量):

tensile$Weight <- factor(tensile$Weight)

我首先在我的数据中安装了单向ANOVA模型:

tensile.aov <- aov(Strength ~ Weight, data = tensile)

根据ANOVA,相对于响应(强度)的不同权重似乎存在差异。所以我决定使用LSD(最低有效差异)进行成对比较:

LSD.aov(tensile.aov)

但是,这个LSD功能是通过一个单独的文件提供的,所以我很遗憾无法在这里共享代码。

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

enter image description here

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

enter image description here

如何在R中创建这样的表?

如果有人愿意花时间协助我,我将不胜感激。

编辑:我也完全愿意接受&#34;手册&#34;解。我的意思是使用向量等手动创建表。我是r的新手,所以即使是最基本的方面,我也不会很好地掌握。

2 个答案:

答案 0 :(得分:1)

multcompView包可以将p值转换为字母,但是在这种情况下,emmeans包可以同时进行比较和字母。

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 :(得分:0)

我设法如下:

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

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