Analyses of variance

Muhammad Yaseen

2026-11-05

1 Abstract

The analysis of each environment, the combined analysis and Eberhart and Russell’s analysis, with what each tells before the stability statistics.

2 Each environment

ia <-
  indiv_anova(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
ia$Summary
            Env     Mean       CV       MSE Df.error     F.Gen        p.Gen
1           FSD 4629.308 3.310148  23481.57       59 32.859696 9.777146e-30
2          FSDR 4063.192 7.219829  86057.45       59  2.761218 7.071620e-05
3         Okara 3634.433 9.816853 127296.96       59  3.568674 1.206599e-06
4      Sargodha 4605.117 7.929968 133359.54       59  4.878042 3.670660e-09
5    Gujranwala 4014.283 9.678154 150938.88       59  4.700962 7.608923e-09
6      KotNaina 3759.633 8.606654 104703.14       59  4.320895 3.845328e-08
7           KSK 3469.967 8.509432  87187.01       59  3.477938 1.870247e-06
8      Khanewal 4718.567 6.465435  93071.27       59  2.754444 7.328681e-05
9       Sahiwal 4477.833 7.381166 109241.03       59  4.051051 1.274773e-07
10      Bhakkar 3714.667 8.415070  97713.64       59  1.885585 8.069768e-03
11 Bahawalnagar 3581.325 7.787843  77789.65       59  2.117464 2.279749e-03
ia$Homogeneity
     Chisq Df     p.value    Ratio
1 53.65762 10 5.61929e-08 6.427973
plot(x = ia, which = "error")

The error mean squares differ more than three-fold; Bartlett’s test rejects equality. The combined analysis below still pools them, which is the usual practice, but the comparison of environments should keep this in mind.

stab_interpret(
    x             = ia
  , higher_better = TRUE
  , top           = 5
  )
Analysis of variance in each environment

Genotypes differ significantly in 11 of 11 environments; error variances are
too heterogeneous for pooling (largest/smallest ratio 6.43).

Findings:
- Environment means range from 3,470 (KSK) to 4,719 (Khanewal).
- Genotypes differ significantly in every environment.
- Coefficients of variation range from 3.3% to 9.8%.
- Bartlett's test of equal error variances: chi-square 53.66 on 10 df, p <
  0.001.

Recommendations:
- Pool the environments with care: weight environments by the inverse of
  their error variance or analyse groups of similar environments.

3 Combined analysis

aa <-
  add_anova(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
aa$anova
Analysis of Variance Table

Response: y

           Df    Sum Sq  Mean Sq F value    Pr(>F)    
Env        10 263940496 26394050 68.0551 1.995e-08 ***
Rep(Env)   11   4266167   387833                      
Gen        59  71662431  1214617 12.2482 < 2.2e-16 ***
Gen:Env   590 201336476   341248  3.4411 < 2.2e-16 ***
Residuals 649  64359568    99167                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
aa$Summary
      Mean       CV Genotypes Environments Replicates  Env.pct  Gen.pct
1 4060.757 7.754918        60           11          2 49.15648 13.34647
   GxE.pct
1 37.49706

The interaction is significant and larger than the genotype effect: genotype means alone would mislead.

4 Eberhart and Russell

er <-
  er_anova(
      .data = ge_data
    , .y    = Yield
    , .rep  = Rep
    , .gen  = Gen
    , .env  = Env
    )
er$er_anova[c(1:6, nrow(er$er_anova)), ]
                     Df    Sum Sq Mean Sq F value  Pr(>F)    
Total               659 268469701                            
Gen                  59  35831215  607309  3.7773 < 2e-16 ***
Env + (Gen x Env)   600 232638486                            
  Env (linear)        1 131970248                            
  Gen x Env(linear)  59  13847665  234706  1.4598 0.01781 *  
  Pooled deviation  540  86820573  160779                    
Pooled error        649  32179784   49584                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
head(x = er$Parameters[order(-Mean)], n = 8)
            Gen     Mean     Slope        SE       p.b1        S2d        p.S2d
         <char>    <num>     <num>     <num>      <num>      <num>        <num>
1:        DN126 4480.864 1.7107903 0.2411656 0.01629193  78341.346 6.340228e-03
2:       V14170 4463.818 1.2797954 0.3002920 0.37578673 148757.234 5.435608e-05
3:        PR115 4444.273 0.8154056 0.2401408 0.46176985  77256.484 6.793988e-03
4:     12B.2511 4414.409 1.6375025 0.2843871 0.05170192 128303.522 2.261371e-04
5:       V14154 4364.727 0.6902389 0.1384097 0.05201277  -7447.194 5.703363e-01
6: FAISALABAD08 4360.591 1.5736825 0.3009176 0.08896639 149584.475 5.128356e-05
7:       V14168 4342.045 0.9672779 0.2755105 0.90806723 117372.034 4.787298e-04
8:        NR491 4319.500 1.5680940 0.2641503 0.05997351 103887.622 1.190712e-03
stab_interpret(
    x             = er
  , higher_better = TRUE
  , top           = 5
  )
Eberhart and Russell's stability analysis

2 of 60 genotypes meet Eberhart and Russell's criteria (mean above average,
slope not different from 1, no significant deviations): V14154 and PR119.

Findings:
- Genotypes differ when tested against the pooled deviation (p < 0.001).
- The linear part of the interaction (differences between slopes) is
  significant (p = 0.018): genotypes respond differently to better
  environments.
- The deviations from regression are significant overall (p < 0.001); 55
  genotype(s) have significant deviations and so an unpredictable response.
- Slopes significantly above 1 (responsive to favourable environments): DN126
  and 122557.
- Slopes significantly below 1 (better suited to poor environments):
  BARDC1016.

Recommendations:
- For wide adaptation consider V14154 and PR119.
- Genotypes with slopes above 1 suit high-input, favourable environments.
- Genotypes with slopes below 1 suit low-input or stress-prone environments.

Cautions:
- Because deviations from regression are large, the slope explains only part
  of the interaction; use AMMI or the GGE biplot as well.
- The environment index is computed from the same genotypes; with few
  environments the slopes are imprecise.

5 Summary

indiv_anova() checks precision and the pooling of errors, add_anova() the size of the interaction, and er_anova() splits it into a linear part (different slopes) and deviations (unpredictable response).

6 References

Eberhart, S. A. and Russell, W. A. (1966). Stability parameters for comparing varieties. Crop Science, 6(1), 36–40.

Singh, R. K. and Chaudhary, B. D. (2004). Biometrical Methods in Quantitative Genetic Analysis. Kalyani Publishers, New Delhi.