This function order the letters in the compact letter display to the highest estimate receive the letter a. This is a convetion in most software for analysis of experiments.

ordered_cld(let, means = let)

Arguments

let

Character vector with the letters returned by cld() or cld2().

means

Numeric vector with the corresponding estimates in which the highest value will have the letter a.

Value

A character vector with the letters rearranged.

See also

cld2().

Examples

# Toy data. set.seed(4321) td <- data.frame(trt = rep(sample(1:8), each = 5)) td$y <- rnorm(nrow(td), mean = sort(td$trt), sd = 2) plot(y ~ trt, data = td)
# Fit the model. td$trt <- factor(td$trt) m0 <- lm(y ~ trt, data = td) anova(m0)
#> Analysis of Variance Table #> #> Response: y #> Df Sum Sq Mean Sq F value Pr(>F) #> trt 7 241.670 34.524 11.679 2.846e-07 *** #> Residuals 32 94.597 2.956 #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> #> Call: #> lm(formula = y ~ trt, data = td) #> #> Residuals: #> Min 1Q Median 3Q Max #> -2.7817 -1.3129 0.0741 1.0963 4.0820 #> #> Coefficients: #> Estimate Std. Error t value Pr(>|t|) #> (Intercept) 4.6693 0.7689 6.073 8.8e-07 *** #> trt2 -0.5423 1.0874 -0.499 0.621408 #> trt3 -2.6046 1.0874 -2.395 0.022632 * #> trt4 1.3644 1.0874 1.255 0.218652 #> trt5 -2.6211 1.0874 -2.410 0.021857 * #> trt6 -2.8945 1.0874 -2.662 0.012054 * #> trt7 4.1115 1.0874 3.781 0.000645 *** #> trt8 2.6965 1.0874 2.480 0.018603 * #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #> #> Residual standard error: 1.719 on 32 degrees of freedom #> Multiple R-squared: 0.7187, Adjusted R-squared: 0.6571 #> F-statistic: 11.68 on 7 and 32 DF, p-value: 2.846e-07 #>
library(multcomp) library(doBy) X <- LE_matrix(m0, effect = "trt") rownames(X) <- levels(td$trt) Xc <- apc(X) g <- summary(glht(m0, linfct = Xc), test = adjusted(type = "fdr")) res <- data.frame(trt = levels(td$trt), mean = X %*% coef(m0)) let <- cld2(g) res$cld2 <- let$mcletters$Letters res[order(res$mean, decreasing = TRUE), ]
#> trt mean cld2 #> 7 7 8.780843 a #> 8 8 7.365762 ab #> 4 4 6.033745 bd #> 1 1 4.669300 d #> 2 2 4.127017 cd #> 3 3 2.064654 c #> 5 5 2.048229 c #> 6 6 1.774765 c
res$let2 <- ordered_cld(res$cld2, res$mean) res[order(res$mean, decreasing = TRUE), ]
#> trt mean cld2 let2 #> 7 7 8.780843 a a #> 8 8 7.365762 ab ab #> 4 4 6.033745 bd bc #> 1 1 4.669300 d c #> 2 2 4.127017 cd cd #> 3 3 2.064654 c d #> 5 5 2.048229 c d #> 6 6 1.774765 c d
# NOT RUN { library(latticeExtra) library(grid) ci <- as.data.frame( confint(glht(m0, linfct = X), calpha = univariate_calpha())$confint) ci <- cbind(res, ci) segplot(reorder(trt, Estimate) ~ lwr + upr, centers = Estimate, data = ci, draw = FALSE, cld = ci$let2, par.settings = list(layout.widths = list(right.padding = 7))) + layer(panel.text(x = centers, y = z, labels = sprintf("%0.2f %s", centers, cld), pos = 3)) ocld <- with(ci[order(ci$Estimate), ], ordered_cld(cld2, Estimate)) x <- attr(ocld, "ind") index <- which(x, arr.ind = TRUE) trellis.focus("panel", column = 1, row = 1, clip.off = TRUE) xcor <- 1.03 + (index[, 2] - 1)/50 grid.segments(x0 = unit(xcor, "npc"), x1 = unit(xcor, "npc"), y0 = unit(index[, 1] + 0.5, units = "native"), y1 = unit(index[, 1] - 0.5, units = "native"), gp = gpar(lwd = 2, col = "blue")) trellis.unfocus() # }