Skip to contents

Intended as a replacement of the agricolae::orderPvalue() function, but with (maybe) a better algorithm.

Usage

lsd_group(treatments, means, alpha, pvalues)

Arguments

treatments

character vector Character vector of the treatment names

means

numeric Vector of the treatment means/fitted values

alpha

numeric Significant difference threshold

pvalues

matrix of numeric Matrix of pvalues calculated via pairwise t-tests

Value

data.frame Dataframe of each treatment and their associated LSD group

Examples

library(asreml)
model <- asreml(
    fixed = yield ~ Variety + Nitrogen + Variety:Nitrogen,
    random = ~idv(Blocks) + idv(Blocks):idv(Wplots),
    residual = ~idv(units),
    data = oats
)

pred <- asremlPlus::predictPlus.asreml(
    model,
    classify = "Variety",
    wald.tab = as.data.frame(asreml::wald(model, denDF = "algebraic")$Wald)
)
#> 
#> 
#> #### Predictions for yield from Variety
#> 
#> 
#> Notes:
#> - The predictions are obtained by averaging across the hypertable
#>   calculated from model terms constructed solely from factors in
#>   the averaging and classify sets.
#> - Use 'average' to move ignored factors into the averaging set.
#> - The simple averaging set: Nitrogen
#> - The ignored set: Blocks,Wplots
#> 
#>       Variety predicted.value standard.error upper.Confidence.limit
#> 1 Golden_rain        104.5000       7.797539               121.8740
#> 2  Marvellous        109.7917       7.797539               127.1657
#> 3     Victory         97.6250       7.797539               114.9990
#>   lower.Confidence.limit est.status
#> 1               87.12600  Estimable
#> 2               92.41767  Estimable
#> 3               80.25100  Estimable
#> 
#> 
#> LSD values 
#> 
#> minimum LSD =  15.77278 
#> 
#> mean LSD =  15.77278 
#> 
#> maximum LSD =  15.77278 
#> 
#> (sed range / mean sed =  1.26e-14 )
#> 
#> 
#> 
#> Variance matrix of the predicted values 
#> 
#> NULL
#> 
#> 
#> All pairwise differences between predicted values 
#> 
#>             Golden_rain Marvellous Victory
#> Golden_rain       0.000     -5.292   6.875
#> Marvellous        5.292      0.000  12.167
#> Victory          -6.875    -12.167   0.000
#> 
#> 
#> p values for all pairwise differences between predicted values 
#> 
#>             Golden_rain Marvellous Victory
#> Golden_rain                  0.472   0.354
#> Marvellous        0.472              0.116
#> Victory           0.354      0.116        
#> 
#> 
#> Standard errors of differences between predicted values 
#> 
#>             Golden_rain Marvellous Victory
#> Golden_rain                  7.079   7.079
#> Marvellous        7.079              7.079
#> Victory           7.079      7.079        

prob.matrix <- ifelse(is.na(pred$p.differences), 1, pred$p.differences)
treatments <- colnames(prob.matrix)
means <- pred$predictions$predicted.value
alpha <- 0.05

lsd_group(
    treatments,
    means,
    alpha,
    prob.matrix
)
#>     treatment group
#> 1  Marvellous     a
#> 2 Golden_rain     a
#> 3     Victory     a