StabilityApp(
launch.browser = TRUE
)2026-11-09
\[ \newcommand{\vy}{\mathbf{y}} \newcommand{\vx}{\mathbf{x}} \newcommand{\vb}{\mathbf{b}} \newcommand{\ve}{\mathbf{e}} \newcommand{\vone}{\mathbf{1}} \newcommand{\vbeta}{\boldsymbol{\beta}} \newcommand{\vmu}{\boldsymbol{\mu}} \newcommand{\mX}{\mathbf{X}} \newcommand{\mZ}{\mathbf{Z}} \newcommand{\mV}{\mathbf{V}} \newcommand{\mI}{\mathbf{I}} \newcommand{\mJ}{\mathbf{J}} \newcommand{\mSigma}{\boldsymbol{\Sigma}} \newcommand{\E}{\mathrm{E}} \newcommand{\Var}{\mathrm{Var}} \newcommand{\Cov}{\mathrm{Cov}} \newcommand{\tr}{\operatorname{tr}} \]
StabilityApp runs the stability analyses of the package stability in a web browser, without writing code. This vignette walks through one session: the data, an analysis, its interpretation, tables, plots and the R code that repeats it.
StabilityApp(
launch.browser = TRUE
)The example trial ge_data of stability (60 wheat genotypes, 11 environments, 2 replicates) is loaded at the start. A CSV file with one row per plot can be uploaded instead; the columns of response, genotype, environment and replicate are chosen on the Data page, with the name of the trait and whether higher values are better (yield) or worse (days to maturity, disease score).
The menus group the twenty analyses: tables of means and effects; analyses of variance; regression and variance-based stability; safety-first and nonparametric stability; AMMI and the GGE biplot. Each page has its options on the left and five tabs:
stability::stab_interpret(): a headline, findings, recommendations and cautions;The interpretation, the output and the R code each have a Copy button that puts their plain text on the clipboard, ready to paste into a report, an e-mail or an R script. Text is set in IBM Plex Sans and output in IBM Plex Mono; without access to Google Fonts the app uses the system fonts.
The interpretation differs by method: for the GGE biplot it names the winning genotype of each environment, the groups of environments, the most stable of the best genotypes and the best test environments.
Every page shows its R code; the analysis and its interpretation in a script:
fit <-
stability::stab_reg(
.data = stability::ge_data
, .y = Yield
, .rep = Rep
, .gen = Gen
, .env = Env
)
stability::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.
Load the data, run the combined analysis of variance first, then the stability analyses; read the interpretation of each, check it against the tables and plots, and keep the R code for the report.