Package 'augmentedRCBD'

Title: Analysis of Augmented Randomised Complete Block Designs
Description: Functions for analysis of data generated from experiments in augmented randomised complete block design according to Federer, W.T. (1961) <doi:10.2307/2527837>. Computes analysis of variance, adjusted means, descriptive statistics, genetic variability statistics etc. Further includes data visualization and report generation functions.
Authors: J. Aravind [aut, cre] (ORCID: <https://orcid.org/0000-0002-4791-442X>), S. Mukesh Sankar [aut] (ORCID: <https://orcid.org/0000-0001-5459-392X>), Dhammaprakash Pandhari Wankhede [aut] (ORCID: <https://orcid.org/0000-0001-6384-8664>), Vikender Kaur [aut] (ORCID: <https://orcid.org/0000-0001-9698-7329>), ICAR-NBGPR [cph] (ROR: <https://ror.org/00scbd467>, url: https://nbpgr.org.in/)
Maintainer: J. Aravind <[email protected]>
License: GPL-2 | GPL-3
Version: 0.1.7.9000
Built: 2026-05-28 06:39:39 UTC
Source: https://github.com/aravind-j/augmentedrcbd

Help Index


Analysis of Augmented Randomised Complete Block Design

Description

augmentedRCBD is a function for analysis of variance of an augmented randomised block design (Federer, 1956; Federer, 1961; Searle, 1965) and the generation as well as comparison of the adjusted means of the treatments/genotypes.

Usage

augmentedRCBD(
  block,
  treatment,
  y,
  checks = NULL,
  method.comp = c("lsd", "tukey", "none"),
  alpha = 0.05,
  group = TRUE,
  console = TRUE,
  simplify = FALSE,
  truncate.means = TRUE
)

Arguments

block

Vector of blocks (as a factor).

treatment

Vector of treatments/genotypes (as a factor).

y

Numeric vector of response variable (Trait).

checks

Character vector of the checks present in treatment levels. If not specified, checks are inferred from the data on the basis of number of replications of treatments/genotypes.

method.comp

Method for comparison of treatments ("lsd" for least significant difference or "tukey" for Tukey's honest significant difference). If "none", no comparisons will be made, the ANOVA output will be given as a data frame and the adjusted means will be computed directly from treatment and block effects instead of using emmeans.

alpha

Type I error probability (Significance level) to be used for multiple comparisons.

group

If TRUE, genotypes will be grouped according to "method.comp". Default is TRUE.

console

If TRUE, output will be printed to console. Default is TRUE. Default is TRUE.

simplify

If TRUE, ANOVA output will be given as a data frame instead of a summary.aov object. Default is TRUE.

truncate.means

If TRUE, the negative adjusted means will be truncated to zero. Default is TRUE.

Details

This function borrows code from DAU.test function of agricolae package (de Mendiburu et al., 2016) as well as from Appendix VIII of Mathur et al., (2008).

Value

A list of class augmentedRCBD containing the following components:

Details

Details of the augmented design used.

Means

A data frame with the "Means", "Block", "SE", "Mix", "Max" and "Adjusted Means" for each "Treatment".

ANOVA, Treatment Adjusted

An object of class summary.aov for ANOVA table with treatments adjusted.

ANOVA, Block Adjusted

An object of class summary.aov for ANOVA table with block adjusted.

Block effects

A vector of block effects.

Treatment effects

A vector of treatment effects.

Std. Errors

A data frame of standard error of difference between various combinations along with critical difference and tukey's honest significant difference (when method.comp = "tukey") at alpha.

Overall adjusted mean

Overall adjusted mean.

CV

Coefficient of variation.

Comparison method

The method for comparison of treatments.

Comparisons

A data frame of pairwise comparisons of treatments. This is computed only if argument group is TRUE

Groups

A data frame with compact letter display of pairwise comparisons of treatments. Means with at least one letter common are not significantly different statistically. This is computed only if argument group is TRUE

warning

A vector of warning messages (if any) captured during model fitting.

Note

  • Data should preferably be balanced i.e. all the check genotypes should be present in all the blocks. If not, a warning is issued.

  • There should not be any missing values.

  • The number of test genotypes can vary within a block.

In case the large number of treatments or genotypes, it is advisable to avoid comparisons with the group = FALSE argument as it will be memory and processor intensive. Further it is advised to simplify output with simplify = TRUE in order to reduce output object size.

References

Federer WT (1956). “Augmented (or Hoonuiaku) designs.” The Hawaiian Planters' Record, LV(2), 191–208.

Federer WT (1956). “Augmented (or Hoonuiaku) Designs.” Technical Report BU-74-M, Cornell University, New York.

Federer WT (1961). “Augmented designs with one-way elimination of heterogeneity.” Biometrics, 17(3), 447–473.

Searle SR (1965). “Computing Formulae for Analyzing Augmented Randomized Complete Block Designs.” Technical Report BU-207-M, Cornell University, New York.

Mathur PN, Muralidharan K, Parthasarathy VA, Batugal P, Bonnot F (2008). Data Analysis Manual for Coconut Researchers-Bioversity Technical Bulletin No. 14. Bioversity International. ISBN 978-92-9043-736-9.

de Mendiburu F (2015). agricolae: Statistical Procedures for Agricultural Research. R package version 1.2-8.

See Also

DAU.test, ea1, emmeans, cld.emmGrid, aug.rcb

Examples

# Example data
blk <- c(rep(1,7),rep(2,6),rep(3,7))
trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
        70, 75, 74)
y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311,
        250, 240, 268, 287, 226, 395, 450)
data <- data.frame(blk, trt, y1, y2)

# Convert block and treatment to factors
data$blk <- as.factor(data$blk)
data$trt <- as.factor(data$trt)

# Results for variable y1 (checks inferred)
out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE)
# Results for variable y2 (checks inferred)
out2 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y2,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE)

# Results for variable y1 (checks specified)
out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE, checks = c("1", "2", "3", "4"))
# Results for variable y2 (checks specified)
out2 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y2,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE, checks = c("1", "2", "3", "4"))

## Not run: 
  # Error in case checks not replicated across all blocks
  # Check 1 and 4 not replicated in all 3 blocks
  trt <- c(1, 2, 3, 14, 7, 11, 12, 1, 2, 3, 4, 5, 9, 13, 2, 3, 4, 8, 6, 10)
  data$trt <- as.factor(trt)
  table(data$trt, data$blk)
  # Results for variable y1 (checks specified)
  out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                        method.comp = "lsd", alpha = 0.05, group = TRUE,
                        console = TRUE, checks = c("1", "2", "3", "4"))

## End(Not run)

# Warning in case test treatments are replicated
out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE)
out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                      method.comp = "lsd", alpha = 0.05, group = TRUE,
                      console = TRUE, checks = c("2", "3"))

Analysis of Augmented Randomised Complete Block Design for Multiple Traits/Characters

Description

augmentedRCBD.bulk is a wrapper around the functions augmentedRCBD, describe.augmentedRCBD, freqdist.augmentedRCBD and gva.augmentedRCBD. It will carry out these analyses for multiple traits/characters from the input data as a data frame object.

Usage

augmentedRCBD.bulk(
  data,
  block,
  treatment,
  traits,
  checks = NULL,
  check.inference = c("overall", "traitwise"),
  alpha = 0.05,
  describe = TRUE,
  freqdist = TRUE,
  gva = TRUE,
  k = 2.063,
  check.col = "red",
  console = TRUE
)

Arguments

data

The data as a data frame object. The data frame should possess columns specifying the block, treatment and multiple traits/characters.

block

Name of column specifying the blocks in the design as a character string.

treatment

Name of column specifying the treatments as a character string.

traits

Name of columns specifying the multiple traits/characters as a character vector.

checks

Character vector of the checks present in treatment levels. It can also be a named list with the character vector of checks for each trait in traits column. The list names should be same as trait names. If not specified, checks are inferred from the data on the basis of number of replications of treatments/genotypes.

check.inference

The method for inference of checks if checks is not specified. Either "overall" to infer checks on the basis of all the trait data or "traitwise" to infer checks on the basis of each trait separately.

alpha

Type I error probability (Significance level) to be used for multiple comparisons.

describe

If TRUE, descriptive statistics will be computed. Default is TRUE.

freqdist

If TRUE, frequency distributions be plotted. Default is TRUE.

gva

If TRUE, genetic variability analysis will be done. Default is TRUE.

k

The standardized selection differential or selection intensity required for computation of Genetic advance. Default is 2.063 for 5% selection proportion (see Details in gva.augmentedRCBD). Ignored if gva = FALSE.

check.col

The colour(s) to be used to highlight check values in the plot as a character vector. Must be valid colour values in R (named colours, hexadecimal representation, index of colours [1:8] in default R palette() etc.).

console

If TRUE, output will be printed to console. Default is TRUE.

Value

A list of class augmentedRCBD.bulk containing the following components:

Details

Details of the augmented design used and the traits/characters.

ANOVA, Treatment Adjusted

A data frame of mean sum of squares, p value and stastical significance of the specified traits from treatment adjusted ANOVA.

ANOVA, Block Adjusted

A data frame of mean sum of squares, p value and stastical significance of the specified traits from block adjusted ANOVA

Means

A data frame of the adjusted means of the treatments for the specified traits.

Check statistics

A list of data frames with check statistics such as number of replications, standard error, minimum and maximum value

alpha

Type I error probability (Significance level) used.

Std. Errors

A data frame of standard error of difference between various combinations for the specified traits.

CD

A data frame of critical difference (at the specified alpha) between various combinations for the specified traits.

Overall adjusted mean

A data frame of the overall adjusted mean for the specified traits.

CV

A data frame of the coefficient of variance for the specified traits.

Descriptive statistics

A data frame of descriptive statistics for the specified traits.

Frequency distribution

A list of ggplot2 plot grobs of the frequency distribution plots.

k

The standardized selection differential or selection intensity used for computaton of Genetic advance.

Genetic variability analysis

A data frame of genetic variability statistics for the specified traits.

GVA plots

A list of three ggplot2 objects with the plots for (a) Phenotypic and Genotypic CV, (b) Broad sense heritability and (c) Genetic advance over mean

warnings

A list of warning messages (if any) captured during model fitting, frequency distribution plotting and genetic variability analysis.

Note

In this case treatment comparisons/grouping by least significant difference or Tukey's honest significant difference method is not computed. Also the output object size is reduced using the simplify = TRUE argument in the augmentedRCBD function.

See Also

augmentedRCBD, describe.augmentedRCBD, freqdist.augmentedRCBD, gva.augmentedRCBD

Examples

# Example data
blk <- c(rep(1,7),rep(2,6),rep(3,7))
trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)

y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
        70, 75, 74)
y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311, 250,
        240, 268, 287, 226, 395, 450)
dataf <- data.frame(blk, trt, y1, y2)

bout <- augmentedRCBD.bulk(data = dataf, block = "blk",
                           treatment = "trt", traits = c("y1", "y2"),
                           checks = NULL, alpha = 0.05, describe = TRUE,
                           freqdist = TRUE, gva = TRUE,
                           check.col = c("brown", "darkcyan",
                                         "forestgreen", "purple"),
                           console = TRUE)

# Frequency distribution plots
lapply(bout$`Frequency distribution`, plot)

# GVA plots
bout$`GVA plots`

Combined Analysis of Augmented Randomised Complete Block Design in Multiple Environments

Description

augmentedRCBD.menv is an extension of augmentedRCBD designed for the combined/pooled analysis of data from augmented randomised complete block design across multiple environments such as locations and/or seasons. This function performs analysis under the following two scenarios.

Scenario 1:

Replicated test treatments across environments.

Scenario 2:

Non-replicated test treatments across environments.

Usage

augmentedRCBD.menv(
  block,
  treatment,
  env,
  y,
  checks = NULL,
  method.comp = c("lsd", "tukey", "none"),
  scenario = c(1, 2),
  alpha = 0.05,
  group = TRUE,
  console = TRUE,
  simplify = FALSE,
  truncate.means = TRUE
)

Arguments

block

Vector of blocks (as a factor).

treatment

Vector of treatments/genotypes (as a factor).

env

Vector of environments (as a factor).

y

Numeric vector of response variable (Trait).

checks

Character vector of the checks present in treatment levels.

method.comp

Method for comparison of treatments ("lsd" for least significant difference or "tukey" for Tukey's honest significant difference). If "none", no comparisons will be made, the ANOVA output will be given as a data frame and the adjusted means will be computed directly from treatment and block effects instead of using emmeans.

scenario

Either 1 or 2 (see Details).

alpha

Type I error probability (Significance level) to be used for multiple comparisons.

group

If TRUE, genotypes will be grouped according to "method.comp". Default is TRUE.

console

If TRUE, output will be printed to console. Default is TRUE. Default is TRUE.

simplify

If TRUE, ANOVA output will be given as a data frame instead of a summary.aov object. Default is TRUE.

truncate.means

If TRUE, the negative adjusted means will be truncated to zero. Default is TRUE.

Details

The method of analysis is determined by whether the test treatments are replicated across different environments as indicated by the scenario argument. The design is balanced in terms of the checks being replicated across all the blocks and environments.

Scenario 1:

The test treatments are replicated across all environments. Here the Treatment \u00D7 Environment interaction is fully estimable as it is balanced.

Scenario 2:

The test treatments are replicated across all environments. Here the Treatment \u00D7 Environment interaction is only partially estimable as it is unbalanced..

Value

A list of class augmentedRCBD.menv containing the following components:

Details

Details of the augmented design used.

Means

A data frame with the "Means", "Block", "SE", "Mix", "Max" and "Adjusted Means" for each "Treatment".

ANOVA, Treatment Adjusted

An object of class summary.aov for ANOVA table with treatments adjusted.

ANOVA, Block Adjusted

An object of class summary.aov for ANOVA table with block adjusted.

Block effects

A vector of block effects.

Treatment effects

A vector of treatment effects.

Std. Errors

A data frame of standard error of difference between various combinations along with critical difference and tukey's honest significant difference (when method.comp = "tukey") at alpha.

Overall adjusted mean

Overall adjusted mean.

CV

Coefficient of variation.

Comparison method

The method for comparison of treatments.

Comparisons

A data frame of pairwise comparisons of treatments. This is computed only if argument group is TRUE

Groups

A data frame with compact letter display of pairwise comparisons of treatments. Means with at least one letter common are not significantly different statistically. This is computed only if argument group is TRUE

warning

A vector of warning messages (if any) captured during model fitting.

Note

  • Data should preferably be balanced i.e. all the check genotypes should be present in all the blocks. If not, a warning is issued.

  • There should not be any missing values.

  • The number of test genotypes can vary within a block.

  • When a large number of treatments or genotypes are involved, the analysis becomes memory intensive because calculating adjusted means necessitates the creation of a reference grid matrix by emmeans, which can grow exponentially in size

See Also

augmentedRCBD

Examples

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Scenario 1: Test treatments are replicated across all environments
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Example data
blk1 <- c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
          4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
          7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9)
trt1 <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10,
          1, 2, 3, 4, 8, 11, 5, 1, 2, 3, 4, 12, 9, 1, 2, 3, 4, 7, 6, 10,
          1, 2, 3, 4, 7, 9, 12, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 8, 11, 10)
y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77,
        78, 78, 70, 75, 74, 90, 80, 85, 78, 95, 86, 81, 78, 78, 76, 88,
        76, 79, 80, 76, 75, 74, 77, 75, 72, 91, 81, 86, 80, 94, 87, 83,
        78, 79, 77, 90, 74, 76, 82, 83, 86, 76, 73, 74, 69)
env1 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
          2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
          3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
data1 <- data.frame(env1, blk1, trt1, y1)
chks1 <- c(1, 2, 3, 4)

# Convert block, treatment and environment to factors
data1$blk1 <- as.factor(data1$blk1)
data1$trt1 <- as.factor(data1$trt1)
data1$env1 <- as.factor(data1$env1)

# Contingency tables of factors
table(data1$env1, data1$trt1)
table(data1$env1, data1$blk1)
table(data1$blk1, data1$trt1)

# Results
out1 <- augmentedRCBD.menv(block = data1$blk1, treatment = data1$trt1,
                           env = data1$env1, y = data1$y1, checks = chks1,
                           scenario = 1, method.comp = "lsd", alpha = 0.05,
                           group = TRUE, console = TRUE)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Test treatments are not replicated across all environments
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Example data
blk2 <- c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
          4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
          7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9)
trt2 <- c(1, 2, 3, 4, 7, 10, 11, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 12,
          1, 2, 3, 4, 16, 19, 13, 1, 2, 3, 4, 20, 17, 1, 2, 3, 4, 15, 14, 18,
          1, 2, 3, 4, 22, 25, 27, 1, 2, 3, 4, 21, 23, 1, 2, 3, 4, 24, 26, 28)
y2 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77,
        78, 78, 70, 75, 74, 90, 80, 85, 78, 95, 86, 81, 78, 78, 76, 88,
        76, 79, 80, 76, 75, 74, 77, 75, 72, 91, 81, 86, 80, 94, 87, 83,
        78, 79, 77, 90, 74, 76, 82, 83, 86, 76, 73, 74, 69)
env2 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
          2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
          3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
data2 <- data.frame(env2, blk2, trt2, y2)
chks2 <- c(1, 2, 3, 4)

# Convert block, treatment and environment to factors
data2$blk2 <- as.factor(data2$blk2)
data2$trt2 <- as.factor(data2$trt2)
data2$env2 <- as.factor(data2$env2)

# Contingency tables of factors
table(data2$env2, data2$trt2)
table(data2$env2, data2$blk2)
table(data2$blk2, data2$trt2)

# Results
out2 <- augmentedRCBD.menv(block = data2$blk2, treatment = data2$trt2,
                           env = data2$env2, y = data2$y2, checks = chks2,
                           scenario = 2, method.comp = "lsd", alpha = 0.05,
                           group = TRUE, console = TRUE)

Analysis of Augmented Randomised Complete Block Design in Single and Multiple Environments Using Mixed Models

Description

The function augmentedRCBD.mix implements analysis of variance of an augmented randomised block design (Federer, 1956; Federer, 1961) and the generation as well as comparison of the adjusted means of the treatments/genotypes using mixed-effect models. The analysis can be performed for cases where the design is in a single environment or is across multiple environments such as locations and/or seasons with either 1) test treatments are replicated across environments (scenario = "I") or 2) test treatments are not replicated across environments (scenario = "II").

Usage

augmentedRCBD.mix(
  block,
  treatment,
  env = NULL,
  y,
  checks = NULL,
  env.random = FALSE,
  check.random = FALSE,
  test.random = TRUE,
  drop.nonsig.interaction = TRUE,
  scenario = c("I", "II"),
  scenario.violation.threshold = 0.1,
  df_method = c("kenward-roger", "satterthwaite"),
  console = TRUE
)

Arguments

block

Vector of blocks (as a factor).

treatment

Vector of treatments/genotypes (as a factor).

env

Vector of environments (as a factor).

y

Numeric vector of response variable (Trait).

checks

Character vector of the checks present in treatment levels.

env.random

logical. If TRUE, env is considered as a random effect. Default is FALSE.

check.random

logical. If TRUE, check treatments are considered as random effects. Default is FALSE.

test.random

logical. If TRUE, test treatments are considered as random effects. Default is TRUE.

drop.nonsig.interaction

logical. If TRUE, "test treatment \(\times\) environment" interaction effect is dropped from the model if found to be non-significant.

scenario

Either 1 or 2 (see Details).

scenario.violation.threshold

Threshold proportion of number of accessions violating scenario requirements to trigger an error. Default of 0.1.

df_method

Degrees-of-freedom method for estimation of BLUE means.

console

If TRUE, output will be printed to console. Default is TRUE. Default is TRUE.

Details

The model to be fitted as well as the method for estimation of treatment means is determined by the arguments scenario, env.random, check.random, test.random, drop.nonsig.interaction.

1. Single Environment: Random Effects - check, test
Model:

y ~ (1|block) + (1|treatment)

Mean Estimate:

Check and Test treatments (BLUP)

2. Single Environment: Fixed Effects - check; Random Effects - test
Model:

y ~ check + (1|block) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP)

3. Single Environment: Fixed Effects - check, test
Model:

y ~ treatment + (1|block)

Mean Estimate:

Check and Test treatments (BLUE)

4. Multiple Environments - Scenario I: Random Effects - env, check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ (1|env) + (1|treatment) + (1|env:block) + (1|env:treatment:check)

Mean Estimate:

Check and Test treatments (BLUP)

5. Multiple Environments - Scenario I: Random Effects - env, check, test; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ (1|env) + (1|treatment) + (1|env:block) + (1|env:treatment)

Mean Estimate:

Check and Test treatments (BLUP)

6. Multiple Environments - Scenario I: Fixed Effects - check; Random Effects - env, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ check + (1|env) + (1|env:block) + (1|env:check) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP)

7. Multiple Environments - Scenario I: Fixed Effects - check; Random Effects - env, test; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ check + (1|env) + (1|env:block) + (1|env:treatment) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP)

8. Multiple Environments - Scenario I: Fixed Effects - check, test; Random Effects - env; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ treatment + (1|env) + (1|env:block2) + (1|env:check)

Mean Estimate:

Check and Test treatments (BLUE)

9. Multiple Environments - Scenario I: Fixed Effects - check, test; Random Effects - env; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ treatment + (1|env) + (1|env:block2) + (1|env:treatment)

Mean Estimate:

Check and Test treatments (BLUE)

10. Multiple Environments - Scenario I: Fixed Effects - env; Random Effects - check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + (1|treatment) + (1|env:block) + (1|env:treatment:check)

Mean Estimate:

Check and Test treatments (BLUP)

11. Multiple Environments - Scenario I: Fixed Effects - env; Random Effects - check, test; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ env + (1|treatment) + (1|env:block) + (1|env:treatment)

Mean Estimate:

Check and Test treatments (BLUP)

12. Multiple Environments - Scenario I: Fixed Effects - env, check; Random Effects - test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + check + env:check + (1|env:block) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP)

13. Multiple Environments - Scenario I: Fixed Effects - env, check; Random Effects - test; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ env + check + env:check + (1|env:block) + (1|treatment:test) + (1|env:treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP)

14. Multiple Environments - Scenario I: Fixed Effects - env, check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + treatment + env:check + (1|env:block)

Mean Estimate:

Check and Test treatments (BLUE)

15. Multiple Environments - Scenario I: Fixed Effects - env, check, test; Test treatment \(\times\) Environment Interaction - TRUE
Model:

y ~ env + treatment + env:treatment + (1|env:block)

Mean Estimate:

Check and Test treatments (BLUE)

16. Multiple Environments - Scenario II: Random Effects - env, check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ (1|env) + (1|treatment) + (1|env:block) + (1|env:treatment:check)

Mean Estimate:

Check treatment (BLUP) and Test treatment (BLUP within Environment)

17. Multiple Environments - Scenario II: Fixed Effects - check; Random Effects - env, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ check + (1|env) + (1|env:block) + (1|env:check) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP within Environment)

18. Multiple Environments - Scenario II: Fixed Effects - check, test; Random Effects - env; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ treatment + (1|env) + (1|env:block2) + (1|env:check)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUE within Environment)

19. Multiple Environments - Scenario II: Fixed Effects - env; Random Effects - check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + (1|treatment) + (1|env:block) + (1|env:treatment:check)

Mean Estimate:

Check treatment (BLUP) and Test treatment (BLUP within Environment)

20. Multiple Environments - Scenario II: Fixed Effects - env, check; Random Effects - test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + check + env:check + (1|env:block) + (1|treatment:test)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUP within Environment)

21. Multiple Environments - Scenario II: Fixed Effects - env, check, test; Test treatment \(\times\) Environment Interaction - FALSE
Model:

y ~ env + treatment + env:check + (1|env:block)

Mean Estimate:

Check treatment (BLUE) and Test treatment (BLUE within Environment)

Value

A list of class augmentedRCBD.mix containing the following components:

Note

  • Making checks random but tests fixed breaks the nesting/partition logic and creates a non-identifiable treatment variance decomposition. So this combination is not implemented in this function.

See Also

augmentedRCBD, augmentedRCBD.menv

Examples

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Single Environment: Random Effects - check, test
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Example data
blk <- c(rep(1,7),rep(2,6),rep(3,7))
trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
        70, 75, 74)
y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311,
        250, 240, 268, 287, 226, 395, 450)
data <- data.frame(blk, trt, y1, y2)

# Convert block and treatment to factors
data$blk <- as.factor(data$blk)
data$trt <- as.factor(data$trt)

# 01. Random Effects - check, test
out1 <- augmentedRCBD.mix(block = data$blk, treatment = data$trt,
                          y = y1, checks =  c("1", "2", "3", "4"),
                          check.random = TRUE, test.random = TRUE,
                          console = TRUE)

# 02. Fixed Effects - check; Random Effects - test
out2 <- augmentedRCBD.mix(block = data$blk, treatment = data$trt,
                          y = y1, checks =  c("1", "2", "3", "4"),
                          check.random = FALSE, test.random = TRUE,
                          console = TRUE)

# 03. Random Effects - Fixed Effects - check, test
out3 <- augmentedRCBD.mix(block = data$blk, treatment = data$trt,
                          y = y1, checks =  c("1", "2", "3", "4"),
                          check.random = FALSE, test.random = FALSE,
                          console = TRUE)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Multiple Environments - Scenario 1:
# Test treatments are replicated across all environments
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Example data
blk1 <- c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
          4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
          7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9)
trt1 <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10,
          1, 2, 3, 4, 8, 11, 5, 1, 2, 3, 4, 12, 9, 1, 2, 3, 4, 7, 6, 10,
          1, 2, 3, 4, 7, 9, 12, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 8, 11, 10)
y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77,
        78, 78, 70, 75, 74, 90, 80, 85, 78, 95, 86, 81, 78, 78, 76, 88,
        76, 79, 80, 76, 75, 74, 77, 75, 72, 91, 81, 86, 80, 94, 87, 83,
        78, 79, 77, 90, 74, 76, 82, 83, 86, 76, 73, 74, 69)
env1 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
          2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
          3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
data1 <- data.frame(env1, blk1, trt1, y1)
chks1 <- c(1, 2, 3, 4)

# Convert block, treatment and environment to factors
data1$blk1 <- as.factor(data1$blk1)
data1$trt1 <- as.factor(data1$trt1)
data1$env1 <- as.factor(data1$env1)

# Contingency tables of factors
table(data1$env1, data1$trt1)
table(data1$env1, data1$blk1)
table(data1$blk1, data1$trt1)


# 04. Random Effects - env, check, test;
# With dropping of non-significant env:test interaction
out4 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = TRUE, test.random = TRUE,
                          drop.nonsig.interaction = TRUE,
                          scenario = "I", console = TRUE)

# 05. Random Effects - env, check, test;
# Without dropping of non-significant env:test interaction
out5 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = TRUE, test.random = TRUE,
                          drop.nonsig.interaction = FALSE,
                          scenario = "I", console = TRUE)

# 06. Fixed Effects - check; Random Effects - env, test;
# With dropping of non-significant env:test interaction
out6 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = FALSE, test.random = TRUE,
                          drop.nonsig.interaction = TRUE,
                          scenario = "I", console = TRUE)

# 07. Fixed Effects - check; Random Effects - env, test;
# Without dropping of non-significant env:test interaction
out7 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = FALSE, test.random = TRUE,
                          drop.nonsig.interaction = FALSE,
                          scenario = "I", console = TRUE)

# 08. Fixed Effects - check, test; Random Effects - env;
# With dropping of non-significant env:test interaction
out8 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = FALSE, test.random = FALSE,
                          drop.nonsig.interaction = TRUE,
                          scenario = "I", console = TRUE)

# 09.Fixed Effects - check, test; Random Effects - env;
# Without dropping of non-significant env:test interaction
out9 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                          treatment = data1$trt1,
                          y = data1$y1, checks =  c("1", "2", "3", "4"),
                          env.random = TRUE,
                          check.random = FALSE, test.random = FALSE,
                          drop.nonsig.interaction = FALSE,
                          scenario = "I", console = TRUE)

# 10. Fixed Effects - env; Random Effects - check, test;
# With dropping of non-significant env:test interaction
out10 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = TRUE, test.random = TRUE,
                           drop.nonsig.interaction = TRUE,
                           scenario = "I", console = TRUE)

# 11. Fixed Effects - env; Random Effects - check, test;
# Without dropping of non-significant env:test interaction
out11 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = TRUE, test.random = TRUE,
                           drop.nonsig.interaction = FALSE,
                           scenario = "I", console = TRUE)

# 12. Fixed Effects - env, check; Random Effects - test;
# With dropping of non-significant env:test interaction
out12 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = TRUE,
                           drop.nonsig.interaction = TRUE,
                           scenario = "I", console = TRUE)

# 13. Fixed Effects - env, check; Random Effects - test;
# Without dropping of non-significant env:test interaction
out13 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = TRUE,
                           drop.nonsig.interaction = FALSE,
                           scenario = "I", console = TRUE)

# 14. Fixed Effects - env, check, test;
# With dropping of non-significant env:test interaction
out14 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = FALSE,
                           drop.nonsig.interaction = TRUE,
                           scenario = "I", console = TRUE)

# 15. Fixed Effects - env, check, test;
# Without dropping of non-significant env:test interaction
out15 <- augmentedRCBD.mix(env = data1$env1, block = data1$blk1,
                           treatment = data1$trt1,
                           y = data1$y1, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = FALSE,
                           drop.nonsig.interaction = FALSE,
                           scenario = "I", console = TRUE)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Multiple Environments - Scenario 2:
# Test treatments are replicated across all environments
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Example data
blk2 <- c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
          4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,
          7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9)
trt2 <- c(1, 2, 3, 4, 7, 10, 11, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 12,
          1, 2, 3, 4, 16, 19, 13, 1, 2, 3, 4, 20, 17, 1, 2, 3, 4, 15, 14, 18,
          1, 2, 3, 4, 22, 25, 27, 1, 2, 3, 4, 21, 23, 1, 2, 3, 4, 24, 26, 28)
y2 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77,
        78, 78, 70, 75, 74, 90, 80, 85, 78, 95, 86, 81, 78, 78, 76, 88,
        76, 79, 80, 76, 75, 74, 77, 75, 72, 91, 81, 86, 80, 94, 87, 83,
        78, 79, 77, 90, 74, 76, 82, 83, 86, 76, 73, 74, 69)
env2 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
          1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
          2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
          3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
data2 <- data.frame(env2, blk2, trt2, y2)
chks2 <- c(1, 2, 3, 4)

# Convert block, treatment and environment to factors
data2$blk2 <- as.factor(data2$blk2)
data2$trt2 <- as.factor(data2$trt2)
data2$env2 <- as.factor(data2$env2)

# Contingency tables of factors
table(data2$env2, data2$trt2)
table(data2$env2, data2$blk2)
table(data2$blk2, data2$trt2)

# 16. Random Effects - env, check, test
out16 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = TRUE,
                           check.random = TRUE, test.random = TRUE,
                           scenario = "II", console = TRUE)

# 17. Fixed Effects - check; Random Effects - env, test
out17 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = TRUE,
                           check.random = FALSE, test.random = TRUE,
                           scenario = "II", console = TRUE)

# 18. Fixed Effects - check, test; Random Effects - env
out18 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = TRUE,
                           check.random = FALSE, test.random = FALSE,
                           scenario = "II", console = TRUE)

# 19. Fixed Effects - env; Random Effects - check, test
out19 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = TRUE, test.random = TRUE,
                           scenario = "II", console = TRUE)

# 20. Fixed Effects - env, check; Random Effects - test
out20 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = TRUE,
                           scenario = "II", console = TRUE)

# 21. Fixed Effects - env, check, test
out21 <- augmentedRCBD.mix(env = data2$env2, block = data2$blk2,
                           treatment = data2$trt2,
                           y = data2$y2, checks =  c("1", "2", "3", "4"),
                           env.random = FALSE,
                           check.random = FALSE, test.random = FALSE,
                           scenario = "II", console = TRUE)

Compute Descriptive Statistics from augmentedRCBD Output

Description

describe.augmentedRCBD computes descriptive statistics from the adjusted means in an object of class augmentedRCBD.

Usage

describe.augmentedRCBD(aug)

Arguments

aug

An object of class augmentedRCBD.

Details

describe.augmentedRCBD computes the following descriptive statistics from the adjusted means in an object of class augmentedRCBD.

  • Count

  • Mean

  • Standard deviation

  • Standard error

  • Minimum

  • Maximum

  • Skewness statistic along with p-value from D'Agostino test of skewness (D'Agostino, 1970).

  • Kurtosis statistic along with p-value from Anscombe-Glynn test of kurtosis (Anscombe and Glynn, 1983).

Value

A list with the following descriptive statistics:

Count

The number of treatments/genotypes.

Mean

The mean value.

Std.Error

The standard error.

Std.Deviation

The standard deviation.

Min

The minimum value

Max

The maximum value

Skewness(statistic)

The skewness estimator.

Skewness(p.value)

The p-value from D'Agostino test of skewness.

Kurtosis(statistic)

The kurtosis estimator.

Kurtosis(p.value)

The p-value from Anscombe-Glynn test of kurtosis.

References

D'Agostino RB (1970). “Transformation to normality of the null distribution of g1.” Biometrika, 57(3), 679–681.

Anscombe FJ, Glynn WJ (1983). “Distribution of the kurtosis statistic b2 for normal samples.” Biometrika, 70(1), 227–234.

See Also

augmentedRCBD

Examples

# Example data
 blk <- c(rep(1,7),rep(2,6),rep(3,7))
 trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
 y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
         70, 75, 74)
 y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311,
         250, 240, 268, 287, 226, 395, 450)
 data <- data.frame(blk, trt, y1, y2)

 # Convert block and treatment to factors
 data$blk <- as.factor(data$blk)
 data$trt <- as.factor(data$trt)

 # Results for variable y1
 out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)
 # Results for variable y2
 out2 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y2,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)

# Descriptive statistics
describe.augmentedRCBD(out1)
describe.augmentedRCBD(out2)

Plot Frequency Distribution from augmentedRCBD Output

Description

freqdist.augmentedRCBD plots frequency distribution from an object of class augmentedRCBD along with the corresponding normal curve and check means with standard errors (if specified by argument highlight.check).

Usage

freqdist.augmentedRCBD(aug, xlab, highlight.check = TRUE, check.col = "red")

Arguments

aug

An object of class augmentedRCBD.

xlab

The text for x axis label as a character string.

highlight.check

If TRUE, the check means and standard errors are also plotted. Default is TRUE.

check.col

The colour(s) to be used to highlight check values in the plot as a character vector. Must be valid colour values in R (named colours, hexadecimal representation, index of colours [1:8] in default R palette() etc.).

Value

The frequency distribution plot as a ggplot2 plot grob.

See Also

augmentedRCBD

Examples

# Example data
 blk <- c(rep(1,7),rep(2,6),rep(3,7))
 trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
 y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
         70, 75, 74)
 y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311,
         250, 240, 268, 287, 226, 395, 450)
 data <- data.frame(blk, trt, y1, y2)

 # Convert block and treatment to factors
 data$blk <- as.factor(data$blk)
 data$trt <- as.factor(data$trt)

 # Results for variable y1
 out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)
 # Results for variable y2
 out2 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y2,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)

 # Frequency distribution plots
 freq1 <- freqdist.augmentedRCBD(out1, xlab = "Trait 1")
 class(freq1)
 plot(freq1)
 freq2 <- freqdist.augmentedRCBD(out2, xlab = "Trait 2")
 plot(freq2)

 # Change check colours
 colset <- c("red3", "green4", "purple3", "darkorange3")
 freq1 <- freqdist.augmentedRCBD(out1, xlab = "Trait 1", check.col = colset)
 plot(freq1)
 freq2 <- freqdist.augmentedRCBD(out2, xlab = "Trait 2", check.col = colset)
 plot(freq2)

 # Without checks highlighted
 freq1 <- freqdist.augmentedRCBD(out1, xlab = "Trait 1",
                                 highlight.check = FALSE)
 plot(freq1)
 freq2 <- freqdist.augmentedRCBD(out2, xlab = "Trait 2",
                                 highlight.check = FALSE)
 plot(freq2)

Perform Genetic Variability Analysis on augmentedRCBD Output

Description

gva.augmentedRCBD performs genetic variability analysis on an object of class augmentedRCBD.

Usage

gva.augmentedRCBD(aug, k = 2.063)

Arguments

aug

An object of class augmentedRCBD.

k

The standardized selection differential or selection intensity. Default is 2.063 for 5% selection proportion (see Details).

Details

gva.augmentedRCBD performs genetic variability analysis from the ANOVA results in an object of class augmentedRCBD and computes several variability estimates.

The phenotypic, genotypic and environmental variance (\(\sigma^{2}_{p}\), \(\sigma^{2}_{g}\) and \(\sigma^{2}_{e}\) ) are obtained from the ANOVA tables according to the expected value of mean square described by Federer and Searle (1976) as follows:

\[\sigma^{2}_{g} = \sigma^{2}_{p} - \sigma^{2}_{e}\]

Phenotypic and genotypic coefficients of variation (\(PCV\) and \(GCV\)) are estimated according to Burton (1951, 1952) as follows:

\[GCV = \frac{\sigma^{2}_{g}}{\sqrt{\overline{x}}} \times 100\]

Where \(\overline{x}\) is the mean.

The estimates of \(PCV\) and \(GCV\) are categorised according to Sivasubramanian and Madhavamenon (1978) as follows:

CV (%) Category
x \( < \) 10 Low
10 \(\le\) x \( < \) 20 Medium
\(\ge\) 20 High

The broad-sense heritability (\(H^{2}\)) is calculated according to method of Lush (1940) as follows:

\[H^{2} = \frac{\sigma^{2}_{g}}{\sigma^{2}_{p}}\]

The estimates of broad-sense heritability (\(H^{2}\)) are categorised according to Robinson (1966) as follows:

\(H^{2}\) Category
x \( < \) 30 Low
30 \(\le\) x \( < \) 60 Medium
\(\ge\) 60 High

Genetic advance (\(GA\)) is estimated and categorised according to Johnson et al., (1955) as follows:

\[GA = k \times \sigma_{g} \times \frac{H^{2}}{100}\]

Where the constant \(k\) is the standardized selection differential or selection intensity. The value of \(k\) at 5% proportion selected is 2.063. Values of \(k\) at other selected proportions are available in Appendix Table A of Falconer and Mackay (1996).

Selection intensity (\(k\)) can also be computed in R as below:

If p is the proportion of selected individuals, then deviation of truncation point from mean (x) and selection intensity (k) are as follows:

x = qnorm(1-p)

k = dnorm(qnorm(1 - p))/p

Using the same the Appendix Table A of Falconer and Mackay (1996) can be recreated as follows.

TableA <- data.frame(p = c(seq(0.01, 0.10, 0.01), NA,
                            seq(0.10, 0.50, 0.02), NA,
                            seq(1, 5, 0.2), NA,
                            seq(5, 10, 0.5), NA,
                            seq(10, 50, 1)))
TableA$x <- qnorm(1-(TableA$p/100))
TableA$i <- dnorm(qnorm(1 - (TableA$p/100)))/(TableA$p/100)

Appendix Table A (Falconer and Mackay, 1996)

p% x i
0.01 3.71901649 3.9584797
0.02 3.54008380 3.7892117
0.03 3.43161440 3.6869547
0.04 3.35279478 3.6128288
0.05 3.29052673 3.5543807
0.06 3.23888012 3.5059803
0.07 3.19465105 3.4645890
0.08 3.15590676 3.4283756
0.09 3.12138915 3.3961490
0.10 3.09023231 3.3670901
<> <> <>
0.10 3.09023231 3.3670901
0.12 3.03567237 3.3162739
0.14 2.98888227 3.2727673
0.16 2.94784255 3.2346647
0.18 2.91123773 3.2007256
0.20 2.87816174 3.1700966
0.22 2.84796329 3.1421647
0.24 2.82015806 3.1164741
0.26 2.79437587 3.0926770
0.28 2.77032723 3.0705013
0.30 2.74778139 3.0497304
0.32 2.72655132 3.0301887
0.34 2.70648331 3.0117321
0.36 2.68744945 2.9942406
0.38 2.66934209 2.9776133
0.40 2.65206981 2.9617646
0.42 2.63555424 2.9466212
0.44 2.61972771 2.9321196
0.46 2.60453136 2.9182048
0.48 2.58991368 2.9048286
0.50 2.57582930 2.8919486
<> <> <>
1.00 2.32634787 2.6652142
1.20 2.25712924 2.6028159
1.40 2.19728638 2.5490627
1.60 2.14441062 2.5017227
1.80 2.09692743 2.4593391
2.00 2.05374891 2.4209068
2.20 2.01409081 2.3857019
2.40 1.97736843 2.3531856
2.60 1.94313375 2.3229451
2.80 1.91103565 2.2946575
3.00 1.88079361 2.2680650
3.20 1.85217986 2.2429584
3.40 1.82500682 2.2191656
3.60 1.79911811 2.1965431
3.80 1.77438191 2.1749703
4.00 1.75068607 2.1543444
4.20 1.72793432 2.1345772
4.40 1.70604340 2.1155928
4.60 1.68494077 2.0973249
4.80 1.66456286 2.0797152
5.00 1.64485363 2.0627128
<> <> <>
5.00 1.64485363 2.0627128
5.50 1.59819314 2.0225779
6.00 1.55477359 1.9853828
6.50 1.51410189 1.9506784
7.00 1.47579103 1.9181131
7.50 1.43953147 1.8874056
8.00 1.40507156 1.8583278
8.50 1.37220381 1.8306916
9.00 1.34075503 1.8043403
9.50 1.31057911 1.7791417
10.00 1.28155157 1.7549833
<> <> <>
10.00 1.28155157 1.7549833
11.00 1.22652812 1.7094142
12.00 1.17498679 1.6670040
13.00 1.12639113 1.6272701
14.00 1.08031934 1.5898336
15.00 1.03643339 1.5543918
16.00 0.99445788 1.5206984
17.00 0.95416525 1.4885502
18.00 0.91536509 1.4577779
19.00 0.87789630 1.4282383
20.00 0.84162123 1.3998096
21.00 0.80642125 1.3723871
22.00 0.77219321 1.3458799
23.00 0.73884685 1.3202091
24.00 0.70630256 1.2953050
25.00 0.67448975 1.2711063
26.00 0.64334541 1.2475585
27.00 0.61281299 1.2246130
28.00 0.58284151 1.2022262
29.00 0.55338472 1.1803588
30.00 0.52440051 1.1589754
31.00 0.49585035 1.1380436
32.00 0.46769880 1.1175342
33.00 0.43991317 1.0974204
34.00 0.41246313 1.0776774
35.00 0.38532047 1.0582829
36.00 0.35845879 1.0392158
37.00 0.33185335 1.0204568
38.00 0.30548079 1.0019882
39.00 0.27931903 0.9837932
40.00 0.25334710 0.9658563
41.00 0.22754498 0.9481631
42.00 0.20189348 0.9306998
43.00 0.17637416 0.9134539
44.00 0.15096922 0.8964132
45.00 0.12566135 0.8795664
46.00 0.10043372 0.8629028
47.00 0.07526986 0.8464123
48.00 0.05015358 0.8300851
49.00 0.02506891 0.8139121
50.00 0.00000000 0.7978846

Where p% is the selected percentage of individuals from a population, x is the deviation of the point of truncation of selected individuals from population mean and i is the selection intensity.

Genetic advance as per cent of mean (\(GAM\)) are estimated and categorised according to Johnson et al., (1955) as follows:

\[GAM = \frac{GA}{\overline{x}} \times 100\]
GAM Category
x \( < \) 10 Low
10 \(\le\) x \( < \) 20 Medium
\(\ge\) 20 High

Value

A list with the following descriptive statistics:

Mean

The mean value.

PV

Phenotyic variance.

GV

Genotyipc variance.

EV

Environmental variance.

GCV

Genotypic coefficient of variation

GCV category

The \(GCV\) category according to Sivasubramaniam and Madhavamenon (1973).

PCV

Phenotypic coefficient of variation

PCV category

The \(PCV\) category according to Sivasubramaniam and Madhavamenon (1973).

ECV

Environmental coefficient of variation

hBS

The broad-sense heritability (\(H^{2}\)) (Lush 1940).

hBS category

The \(H^{2}\) category according to Robinson (1966).

GA

Genetic advance (Johnson et al. 1955).

GAM

Genetic advance as per cent of mean (Johnson et al. 1955).

GAM category

The \(GAM\) category according to Johnson et al. (1955).

Note

Genetic variability analysis needs to be performed only if the sum of squares of "Treatment: Test" are significant.

Negative estimates of variance components if computed are not abnormal. For information on how to deal with these, refer Robinson (1955) and Dudley and Moll (1969).

References

Lush JL (1940). “Intra-sire correlations or regressions of offspring on dam as a method of estimating heritability of characteristics.” Proceedings of the American Society of Animal Nutrition, 1940(1), 293–301.

Burton GW (1951). “Quantitative inheritance in pearl millet (Pennisetum glaucum).” Agronomy Journal, 43(9), 409–417.

Burton GW (1952). “Qualitative inheritance in grasses. Vol. 1.” In Proceedings of the 6th International Grassland Congress, Pennsylvania State College, 17–23.

Johnson HW, Robinson HF, Comstock RE (1955). “Estimates of genetic and environmental variability in soybeans.” Agronomy journal, 47(7), 314–318.

Robinson HF, Comstock RE, Harvey PH (1955). “Genetic variances in open pollinated varieties of corn.” Genetics, 40(1), 45–60.

Robinson HF (1966). “Quantitative genetics in relation to breeding on centennial of Mendelism.” Indian Journal of Genetics and Plant Breeding, 171.

Dudley JW, Moll RH (1969). “Interpretation and use of estimates of heritability and genetic variances in plant breeding.” Crop Science, 9(3), 257–262.

Sivasubramaniam S, Madhavamenon P (1973). “Genotypic and phenotypic variability in rice.” The Madras Agricultural Journal, 60(9-13), 1093–1096.

Federer WT, Searle SR (1976). “Model Considerations and Variance Component Estimation in Augmented Completely Randomized and Randomized Complete Blocks Designs-Preliminary Version.” Technical Report BU-592-M, Cornell University, New York.

Falconer DS, Mackay TFC (1996). Introduction to Quantitative Genetics. Pearson/Prenctice Hall, New York, NY.

See Also

augmentedRCBD

Examples

# Example data
 blk <- c(rep(1,7),rep(2,6),rep(3,7))
 trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
 y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
         70, 75, 74)
 y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311,
         250, 240, 268, 287, 226, 395, 450)
 data <- data.frame(blk, trt, y1, y2)

 # Convert block and treatment to factors
 data$blk <- as.factor(data$blk)
 data$trt <- as.factor(data$trt)

 # Results for variable y1
 out1 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)
 # Results for variable y2
 out2 <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y2,
                       method.comp = "lsd", alpha = 0.05, group = TRUE,
                       console = TRUE)

 # Genetic variability analysis
 gva.augmentedRCBD(out1)
 gva.augmentedRCBD(out2)

Prints summary of augmentedRCBD object

Description

print.augmentedRCBD prints to console the summary of an object of class augmentedRCBD including the augmented design details, ANOVA (Treatment adjusted), ANOVA (Block adjusted), treatment means, coefficient of variation, overall adjusted mean, critical differences and standard errors. The treatment/genotype groups along with the grouping method are also printed if they were computed.

Usage

## S3 method for class 'augmentedRCBD'
print(x, ...)

Arguments

x

An object of class augmentedRCBD.

...

Unused

See Also

augmentedRCBD


Prints summary of augmentedRCBD.bulk object

Description

print.augmentedRCBD.bulk prints to console the summary of an object of class augmentedRCBD.bulk including the augmented design details, trait-wise mean sum of squares from ANOVA (Treatment adjusted) and ANOVA (Block adjusted), adjusted means, coefficient of variation, overall adjusted means critical differences, standard errors, descriptive statistics, frequency distribution plots, genetic variability statistics and plots of genetic variability parameters.

Usage

## S3 method for class 'augmentedRCBD.bulk'
print(x, ...)

Arguments

x

An object of class augmentedRCBD.bulk.

...

Unused

See Also

augmentedRCBD.bulk


Prints summary of augmentedRCBD.menv object

Description

print.augmentedRCBD.menv prints to console the summary of an object of class augmentedRCBD.menv including the augmented design details, ANOVA (Treatment adjusted), ANOVA (Block adjusted), treatment means, coefficient of variation, overall adjusted mean, critical differences and standard errors. The treatment/genotype groups along with the grouping method are also printed if they were computed.

Usage

## S3 method for class 'augmentedRCBD.menv'
print(x, ...)

Arguments

x

An object of class augmentedRCBD.menv.

...

Unused

See Also

augmentedRCBD.menv


Prints summary of augmentedRCBD.mix object

Description

print.augmentedRCBD.mix prints to console the summary of an object of class augmentedRCBD.mix including the augmented design details, ANOVA (Treatment adjusted), ANOVA (Block adjusted), treatment means, coefficient of variation, overall adjusted mean, critical differences and standard errors. The treatment/genotype groups along with the grouping method are also printed if they were computed.

Usage

## S3 method for class 'augmentedRCBD.mix'
print(x, ...)

Arguments

x

An object of class augmentedRCBD.mix.

...

Unused

See Also

augmentedRCBD.mix


Generate MS Word or Excel Report from augmentedRCBD Output

Description

report.augmentedRCBD generates a tidy report from an object of class augmentedRCBD as docx MS word file using the officer package or xlsx MS excel file using the openxlsx package.

Usage

report.augmentedRCBD(
  aug,
  target,
  file.type = c("word", "excel"),
  k = 2.063,
  check.col = "red"
)

Arguments

aug

An object of class augmentedRCBD.

target

The path to the report file to be created.

file.type

The file type of the report. Either "word" for MS Word report file or "excel" for MS Excel report file.

k

The standardized selection differential or selection intensity required for computation of Genetic advance. Default is 2.063 for 5% selection proportion (see Details in gva.augmentedRCBD). Ignored if gva = FALSE.

check.col

The colour(s) to be used to highlight check values in the plot as a character vector. Must be valid colour values in R (named colours, hexadecimal representation, index of colours [1:8] in default R palette() etc.).

Note

The raw values in the augmentedRCBD object are rounded off to 2 digits in the word and excel reports. However, in case of excel report, the raw values are present in the cell and are formatted to display only 2 digits.

So, if values such as adjusted means are being used of downstream analysis, export the raw values from within R or use the excel report.

This default rounding can be changed by setting the global options augmentedRCBD.round.digits. For example setOption(augmentedRCBD.round.digits = 3) sets the number of decimal places for rounding to 3.

Values will not be rounded to zero, instead will be rounded to the nearest decimal place. F value, t ratio and p values are not rounded to less than 3 decimal places.

See Also

officer, flextable

Examples

# Example data
blk <- c(rep(1,7),rep(2,6),rep(3,7))
trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)
y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
        70, 75, 74)
data <- data.frame(blk, trt, y1)

# Convert block and treatment to factors
data$blk <- as.factor(data$blk)
data$trt <- as.factor(data$trt)

# Results for variable y1 (checks inferred)
out <- augmentedRCBD(block = data$blk, treatment = data$trt, y = data$y1,
                     method.comp = "lsd", alpha = 0.05, group = TRUE,
                     console = TRUE)

# Generate reports

report.augmentedRCBD(aug = out,
                     target = file.path(tempdir(),
                                        "augmentedRCBD output.docx"),
                     file.type = "word",
                     check.col = c("brown", "darkcyan",
                                   "forestgreen", "purple"))
report.augmentedRCBD(aug = out,
                     target = file.path(tempdir(),
                                        "augmentedRCBD output.xlsx"),
                     file.type = "excel",
                     check.col = c("brown", "darkcyan",
                                   "forestgreen", "purple"))

Generate MS Word or Excel Report from augmentedRCBD.bulk Output

Description

report.augmentedRCBD.bulk generates a tidy report from an object of class augmentedRCBD.bulk as docx MS word file using the officer package or xlsx MS excel file using the openxlsx package.

Usage

report.augmentedRCBD.bulk(aug.bulk, target, file.type = c("word", "excel"))

Arguments

aug.bulk

An object of class augmentedRCBD.bulk.

target

The path to the docx file to be created.

file.type

The file type of the report. Either "word" for MS Word report file or "excel" for MS Excel report file.

Note

The raw values in the augmentedRCBD object are rounded off to 2 digits in the word and excel reports. However, in case of excel report, the raw values are present in the cell and are formatted to display only 2 digits.

So, if values such as adjusted means are being used of downstream analysis, export the raw values from within R or use the excel report.

This default rounding can be changed by setting the global options augmentedRCBD.round.digits. For example setOption(augmentedRCBD.round.digits = 3) sets the number of decimal places for rounding to 3.

Values will not be rounded to zero, instead will be rounded to the nearest decimal place.

See Also

officer, flextable

augmentedRCBD.bulk

Examples

# Example data
blk <- c(rep(1,7),rep(2,6),rep(3,7))
trt <- c(1, 2, 3, 4, 7, 11, 12, 1, 2, 3, 4, 5, 9, 1, 2, 3, 4, 8, 6, 10)

y1 <- c(92, 79, 87, 81, 96, 89, 82, 79, 81, 81, 91, 79, 78, 83, 77, 78, 78,
        70, 75, 74)
y2 <- c(258, 224, 238, 278, 347, 300, 289, 260, 220, 237, 227, 281, 311, 250,
        240, 268, 287, 226, 395, 450)
dataf <- data.frame(blk, trt, y1, y2)

bout <- augmentedRCBD.bulk(data = dataf, block = "blk",
                           treatment = "trt", traits = c("y1", "y2"),
                           checks = NULL, alpha = 0.05, describe = TRUE,
                           freqdist = TRUE, gva = TRUE,
                           check.col = c("brown", "darkcyan",
                                         "forestgreen", "purple"),
                           console = FALSE)


report.augmentedRCBD.bulk(
  aug.bulk = bout,
  target = file.path(tempdir(),
                     "augmentedRCBD bulk output.docx"),
  file.type = "word")
report.augmentedRCBD.bulk(
  aug.bulk = bout,
  target = file.path(tempdir(),
                     "augmentedRCBD bulk output.xlsx"),
  file.type = "excel")