Skip to contents

stab_reg() regresses the mean of each genotype in each environment on the environment index (the mean of all genotypes in that environment minus the grand mean), as proposed by Finlay and Wilkinson (1963). The slope describes how a genotype responds to better environments; the deviations from the line describe how predictable that response is.

Usage

stab_reg(.data, .y, .rep, .gen, .env)

# Default S3 method
stab_reg(.data, .y, .rep, .gen, .env)

Arguments

.data

a data frame (or data.table) with one row per plot.

.y

response: a column of .data given by name (.y = Yield or .y = "Yield") or a numeric vector of length nrow(.data).

.rep

replicate: as for .y; optional (needed for Delta and its test).

.gen

genotype: a column of .data or a vector, as for .y.

.env

environment: a column of .data or a vector, as for .y.

Value

An object of class c("stab_reg", "stab_result", "list") with the components of earlier versions:

StabIndvReg

data.table, one row per genotype (in the order of the genotype levels): Gen, Mean, Slope, SE, LCI, UCI, t.b1, p.b1 (test of slope 1), R.Sqr, RMSE, SSE (deviation sum of squares), Delta (\(S^2_{d_i}\)) and p.Delta (its test).

MeanSlopePlot

ggplot of the mean against the slope.

Methods: print(), summary(), plot() (which = c("slope", "lines", "residuals", "qq"); "lines" draws the fitted line of every genotype), stab_interpret().

Details

With the environment index \(I_j = \bar{y}_{\cdot j} - \bar{y}\) the fitted line of genotype \(i\) is \(\bar{y}_{ij} = \mu_i + \beta_i I_j + \delta_{ij}\) with $$\hat{\beta}_i = \frac{\sum_j \bar{y}_{ij}I_j}{\sum_j I_j^2}, \qquad \mathrm{SE}(\hat{\beta}_i) = \sqrt{\frac{\sum_j\hat{\delta}_{ij}^2}{(E - 2)\sum_j I_j^2}}, \qquad t = \frac{\hat{\beta}_i - 1}{\mathrm{SE}(\hat{\beta}_i)},$$ the confidence limits \(\hat{\beta}_i \pm t_{0.975, E - 2}\,\mathrm{SE}(\hat{\beta}_i)\), the coefficient of determination \(R^2_i\) and, when replicates are given, Eberhart and Russell's deviation variance \(S^2_{d_i} = \sum_j\hat{\delta}_{ij}^2/(E - 2) - s^2/B\) with the test \(F = (\sum_j\hat{\delta}_{ij}^2/(E - 2))/(s^2/B)\) on \(E - 2\) and \(f_e\) degrees of freedom.

Finlay and Wilkinson read the slope against the mean: \(\beta_i \approx 1\) with a high mean indicates general adaptability; \(\beta_i > 1\) a genotype that profits from favourable environments; \(\beta_i < 1\) one that resists unfavourable environments.

Changes from the earlier version. The rows of the earlier table paired the genotype means (in the order of the data) with the slopes (in the order of the genotype levels), so that the slope shown for a genotype belonged to another one unless the data were sorted by genotype; the column Delta (deviation sum of squares divided by the number of replicates) is now \(S^2_{d_i}\); the confidence limits use the deviations of each genotype (not those pooled over genotypes). The regression is computed in closed form.

References

Finlay, K. W. and Wilkinson, G. N. (1963). The analysis of adaptation in a plant-breeding programme. Australian Journal of Agricultural Research, 14(6), 742–754. doi:10.1071/AR9630742

Eberhart, S. A. and Russell, W. A. (1966). Stability parameters for comparing varieties. Crop Science, 6(1), 36–40. doi:10.2135/cropsci1966.0011183X000600010011x

Author

Muhammad Yaseen (myaseen208@gmail.com), Kent M. Eskridge (keskridge1@unl.edu)

Examples

data(ge_data)
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
#>      <char>    <num>     <num>     <num>     <num>    <num>       <num>
#> 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
#>         <num>     <num>    <num>     <num>     <num>        <num>
#> 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
plot(x = fit, which = c("slope", "lines", "residuals", "qq")[1])

stab_interpret(
    x             = fit
  , higher_better = TRUE
  , top           = 5L
  )
#> 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.