簡體   English   中英

如何為 R 中的這些最小顯着差異 (LSD) 結果創建字母摘要?

[英]How can I create a letter summary for these Least Significant Difference (LSD) results in R?

我試圖比較R中不同材料重量的材料的拉伸強度。拉伸數據如下:

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應被視為一個因素(解釋性/自變量):

tensile$Weight <- factor(tensile$Weight)

我首先為我的數據擬合了一個單向方差分析模型:

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

根據方差分析,不同權重在響應(強度)方面似乎存在差異。 因此,我決定使用 LSD(最小顯着差異)進行成對比較:

LSD.aov(tensile.aov)

然而,這個 LSD 函數是通過一個單獨的文件提供的,所以很遺憾我無法在這里分享代碼。

我計算了我的數據的 LSD 並得到下表:

在此處輸入圖片說明

請注意,根據原始 p 值,35 和 15 以及 25 和 20 權重之間的成對比較是唯一在 alpha = 0.05 顯着性水平上彼此沒有顯着差異的比較; 其他成對比較有顯着差異。 我想創建一個字母摘要來說明這一點,如果組之間沒有顯着差異,則組只有相同的字母,沒有相同字母的組彼此之間有顯着差異:

在此處輸入圖片說明

我怎樣才能在 R 中創建這樣的表?

我也完全接受“手動”解決方案。 我的意思是使用向量等手動創建表格。 我是 R 的新手,所以即使是最基本的方面我也沒有很好的掌握。

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

我設法做到了如下:

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

如果有人有更好的方法來解決它,請隨時分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM