--- title: "Choosing a method" author: "Muhammad Yaseen" date: last-modified format: html: self-contained: true number-sections: true toc: true toc-depth: 3 highlight-style: pygments code-tools: true html-math-method: mathjax vignette: > %\VignetteIndexEntry{Choosing a method} %\VignetteEngine{quarto::html} %\VignetteEncoding{UTF-8} execute: echo: true warning: false message: false --- {{< include _stability-macros.txt >}} ```{r setup, include = FALSE} knitr::opts_chunk$set(collapse = FALSE, comment = "", fig.width = 7, fig.height = 4.6, dev = if (knitr::is_latex_output()) "cairo_pdf" else if (requireNamespace("svglite", quietly = TRUE)) "svglite" else "png") if (requireNamespace("stability", quietly = TRUE)) library(stability) else pkgload::load_all(export_all = FALSE, helpers = FALSE, quiet = TRUE) ``` # Abstract Stability has two meanings, and the methods of the package answer different questions. This vignette matches the question to the function. # Two concepts of stability **Static** (biological) stability: a genotype yields the same everywhere. Its measure is the variance over environments (`stab_measures()`, column `Var`). Static stability is usually bought with low yield. **Dynamic** (agronomic) stability: a genotype follows the average response of all genotypes, ranking the same in good and poor environments. Its measures are the ecovalence, the stability variance, the regression parameters and the AMMI statistics (Becker and Leon 1988). Breeders mostly want dynamic stability combined with high yield. # Decision table | Question | Function | |---|---| | Is the interaction significant, and how large? | `add_anova()` | | Can the environments be pooled? How precise is each? | `indiv_anova()` | | How does each genotype respond to better environments? | `stab_reg()`, `er_anova()` | | What share of the interaction does each genotype carry? | `stab_measures()` | | Which genotypes are unstable (tested)? Which to select for yield and stability? | `stab_par()` | | A simple ranking of yield and stability together | `stab_kang()`, `stab_fox()` | | Which genotype is safest when a poor yield must be avoided (risk set by alpha)? | `stab_eskridge()`, `stab_reliability()` | | Which genotype is closest to the best in every environment? | `stab_superiority()` | | Which genotypes keep their rank (nonparametric, with tests)? | `stab_huehn()` | | How many patterns of interaction are there, and which genotypes follow them? | `ammi()`, `ammi_biplot()` | | An AMMI-based stability ranking | `stab_asv()`, `stab_masv()`, `stab_dist()` | | Which genotype wins where? Which are the mega-environments? Which test environments are best? | `gge_biplot()` (vignette 7 shows which `.which` and `.svp` to use) | | What are the means and winners of each environment? | `ge_means()`, `ge_effects()` | | What does a result mean? | `stab_interpret()` | # Columns and data ```{r columns} d <- ge_data names(d)[names(d) == "Yield"] <- "GrainYield" k <- stab_kang( .data = d , .y = "GrainYield" , .rep = Rep , .gen = Gen , .env = Env ) head(x = k$Kang, n = 3) ``` Columns are given by name, as strings or as vectors. Every genotype must appear in every environment; a missing plot is allowed (cell means and the sequential analysis of variance are then used), a missing genotype-environment cell is reported: ```{r missing} d <- subset(x = ge_data, subset = !(Gen == "PR115" & Env == "FSD")) tryCatch( expr = add_anova( .data = d , .y = Yield , .rep = Rep , .gen = Gen , .env = Env ) , error = function(e) conditionMessage(e) ) ``` # Summary Decide first whether the interaction matters (`add_anova()`), then which kind of stability is wanted; combine one regression or variance method with one multivariate view (AMMI or GGE). # References Becker, H. C. and Leon, J. (1988). Stability analysis in plant breeding. *Plant Breeding*, 101(1), 1--23.