[英]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.