Skip to contents

CRAN release CRAN checks Downloads Monthly downloads r-universe R-CMD-check Development version Minimal R version Dependencies License Project Status: Active Last commit

Overview

stability analyses multi-environment trials of plant breeding (the same genotypes in several environments, in randomized complete blocks) to find genotypes that are high-yielding and stable:

The package has been on CRAN since 2018. Version 1.0.0 keeps every function name, argument and result component, corrects several results of the earlier versions (see NEWS), adds plots, methods and the interpretation to every result, adds safety-first, superiority and nonparametric methods, and comes with ten vignettes in HTML and PDF. The companion package StabilityApp runs every analysis in a web browser.

Installation

install.packages("stability")
# development version
# install.packages("remotes")
remotes::install_github("myaseen208/stability")

Quick start

library(stability)
fit <-
  stab_reg(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
head(fit$StabIndvReg)
        Gen     Mean     Slope        SE       LCI      UCI        t.b1
1: 013BT034 4247.500 0.9539767 0.2181489 0.4604897 1.447464 -0.21097187
2:   122557 4062.364 1.5159430 0.1702936 1.1307122 1.901174  3.02972727
3:   122559 4258.591 0.9834026 0.3015181 0.3013213 1.665484 -0.05504595
4: 12B.2511 4414.409 1.6375025 0.2843871 0.9941741 2.280831  2.24167144
5:   12FJ26 4057.227 0.7025845 0.2633342 0.1068811 1.298288 -1.12942201
6: 14B.1030 3995.409 0.9951608 0.2598803 0.4072708 1.583051 -0.01862075
         p.b1     R.Sqr     RMSE       SSE     Delta      p.Delta
1: 0.83760871 0.6799841 323.5306  942048.3  55088.39 2.670478e-02
2: 0.01425298 0.8980107 252.5577  574068.5  14201.74 2.406599e-01
3: 0.95730445 0.5416911 447.1733 1799675.3 150380.28 4.849012e-05
4: 0.05170192 0.7865003 421.7667 1600984.5 128303.52 2.261371e-04
5: 0.28792236 0.4416320 390.5438 1372720.0 102940.80 1.268556e-03
6: 0.98554993 0.6196686 385.4213 1336946.3  98965.95 1.653205e-03
stab_interpret(
    x             = fit
  , higher_better = TRUE
  , top           = 5
  )
Finlay and Wilkinson's regression on the environment index

Slopes range from 0.09 to 1.71; 2 genotype(s) combine a mean above average
with a slope close to 1 (V14154 and PR119).

Findings:
- Widely adapted (mean above average, slope not different from 1, no
  significant deviations): V14154 and PR119.
- Responsive to favourable environments (slope significantly above 1): DN126
  and 122557.
- Better in poor environments (slope significantly below 1): BARDC1016.
- The regression explains on average 59% of the variation of a genotype over
  environments; below 50% for 17 genotype(s), whose response is poorly
  described by a line.
- Significant deviations from regression (unpredictable response): DN126,
  V14170, PR115, 12B.2511, FAISALABAD08 and 50 more.

Recommendations:
- Read the slope together with the mean: a slope of 1 is desirable only for a
  high-yielding genotype.
- Recommend responsive genotypes for favourable, high-input conditions.
- Recommend genotypes with low slopes where conditions are often poor.

Cautions:
- With few environments the confidence intervals of the slopes are wide.
gge_biplot(
    .data  = ge_data
  , .y     = Yield
  , .rep   = Rep
  , .gen   = Gen
  , .env   = Env
  , .which = "which-won-where"
  , .svp   = "symmetric"
  )
Warning: ggrepel: 1 unlabeled data points (too many overlaps). Consider
increasing max.overlaps

Learn more

Citation

Yaseen M, Eskridge K (2026). _stability: Genotype-by-Environment
Interaction and Yield Stability Analysis_. R package version 1.0.0
(first released 2018), <https://CRAN.R-project.org/package=stability>.

BibTeX:

@Manual{stability,
  title = {{stability}: Genotype-by-Environment Interaction and Yield Stability Analysis},
  author = {Muhammad Yaseen and Kent Eskridge},
  year = {2026},
  note = {R package version 1.0.0 (first released 2018)},
  url = {https://CRAN.R-project.org/package=stability},
}