Compute the Weighted Average of Absolute Scores (Olivoto et al., 2019) based on means for genotype-environment data as follows: \[WAAS_i = \sum_{k = 1}^{p} |IPCA_{ik} \times EP_k|/ \sum_{k = 1}^{p}EP_k\]
where \(WAAS_i\) is the weighted average of absolute scores of the
ith genotype; \(PCA_{ik}\) is the score of the ith genotype
in the kth IPCA; and \(EP_k\) is the explained variance of the kth
IPCA for k = 1,2,..,p, where p is the number of IPCAs that
explain at least an amount of the genotype-interaction variance declared in
the argument min_expl_var
.
Usage
waas_means(
.data,
env,
gen,
resp,
mresp = NULL,
wresp = NULL,
min_expl_var = 85,
verbose = TRUE,
...
)
Arguments
- .data
The dataset containing the columns related to Environments, Genotypes, replication/block and response variable(s).
- env
The name of the column that contains the levels of the environments.
- gen
The name of the column that contains the levels of the genotypes.
- resp
The response variable(s). To analyze multiple variables in a single procedure a vector of variables may be used. For example
resp = c(var1, var2, var3)
. Select helpers are also allowed.- mresp
The new maximum value after rescaling the response variable. By default, all variables in
resp
are rescaled so that de maximum value is 100 and the minimum value is 0 (i.e.,mresp = NULL
). It must be a character vector of the same length ofresp
if rescaling is assumed to be different across variables, e.g., if for the first variable smaller values are better and for the second one, higher values are better, thenmresp = c("l, h")
must be used. Character value of length 1 will be recycled with a warning message.- wresp
The weight for the response variable(s) for computing the WAASBY index. Must be a numeric vector of the same length of
resp
. Defaults to 50, i.e., equal weights for stability and mean performance.- min_expl_var
The minimum explained variance. Defaults to 85. Interaction Principal Compoment Axis are iteractively retained up to the explained variance (eigenvalues in the singular value decomposition of the matrix with the interaction effects) be greather than or equal to
min_expl_var
. For example, if the explained variance (in percentage) in seven possible IPCAs are56, 21, 9, 6, 4, 3, 1
, resulting in a cumulative proportion of56, 77, 86, 92, 96, 99, 100
, thenp = 3
, i.e., three IPCAs will be used to compute the index WAAS.- verbose
Logical argument. If
verbose = FALSE
the code is run silently.- ...
Arguments passed to the function
impute_missing_val()
for imputation of missing values in case of unbalanced data.
Value
An object of class waas_means
with the following items for each
variable:
model A data frame with the response variable, the scores of all Principal Components, the estimates of Weighted Average of Absolute Scores, and WAASY (the index that consider the weights for stability and productivity in the genotype ranking.
ge_means A tbl_df containing the genotype-environment means.
ge_eff A gxe matrix containing the genotype-environment effects.
eigenvalues The eigenvalues from the singular value decomposition of the matrix withe the genotype-environment interaction effects.
proportion The proportion of the variance explained by each IPCA.
cum_proportion The cumulative proportion of the variance explained.
References
Olivoto, T., A.D.C. L\'ucio, J.A.G. da silva, V.S. Marchioro, V.Q. de Souza, and E. Jost. 2019a. Mean performance and stability in multi-environment trials I: Combining features of AMMI and BLUP techniques. Agron. J. 111:2949-2960. doi:10.2134/agronj2019.03.0220
Author
Tiago Olivoto tiagoolivoto@gmail.com
Examples
# \donttest{
library(metan)
# Data with replicates
model <- waas(data_ge,
env = ENV,
gen = GEN,
rep = REP,
resp = everything())
#> variable GY
#> ---------------------------------------------------------------------------
#> AMMI analysis table
#> ---------------------------------------------------------------------------
#> Source Df Sum Sq Mean Sq F value Pr(>F) Proportion Accumulated
#> ENV 13 279.574 21.5057 62.33 0.00e+00 NA NA
#> REP(ENV) 28 9.662 0.3451 3.57 3.59e-08 NA NA
#> GEN 9 12.995 1.4439 14.93 2.19e-19 NA NA
#> GEN:ENV 117 31.220 0.2668 2.76 1.01e-11 NA NA
#> PC1 21 10.749 0.5119 5.29 0.00e+00 34.4 34.4
#> PC2 19 9.924 0.5223 5.40 0.00e+00 31.8 66.2
#> PC3 17 4.039 0.2376 2.46 1.40e-03 12.9 79.2
#> PC4 15 3.074 0.2049 2.12 9.60e-03 9.8 89.0
#> PC5 13 1.446 0.1113 1.15 3.18e-01 4.6 93.6
#> PC6 11 0.932 0.0848 0.88 5.61e-01 3.0 96.6
#> PC7 9 0.567 0.0630 0.65 7.53e-01 1.8 98.4
#> PC8 7 0.362 0.0518 0.54 8.04e-01 1.2 99.6
#> PC9 5 0.126 0.0252 0.26 9.34e-01 0.4 100.0
#> Residuals 252 24.367 0.0967 NA NA NA NA
#> Total 536 389.036 0.7258 NA NA NA NA
#> ---------------------------------------------------------------------------
#>
#> variable HM
#> ---------------------------------------------------------------------------
#> AMMI analysis table
#> ---------------------------------------------------------------------------
#> Source Df Sum Sq Mean Sq F value Pr(>F) Proportion Accumulated
#> ENV 13 5710.32 439.255 57.22 1.11e-16 NA NA
#> REP(ENV) 28 214.93 7.676 2.70 2.20e-05 NA NA
#> GEN 9 269.81 29.979 10.56 7.41e-14 NA NA
#> GEN:ENV 117 1100.73 9.408 3.31 1.06e-15 NA NA
#> PC1 21 381.13 18.149 6.39 0.00e+00 34.6 34.6
#> PC2 19 319.43 16.812 5.92 0.00e+00 29.0 63.6
#> PC3 17 114.26 6.721 2.37 2.10e-03 10.4 74.0
#> PC4 15 81.96 5.464 1.92 2.18e-02 7.4 81.5
#> PC5 13 68.11 5.240 1.84 3.77e-02 6.2 87.7
#> PC6 11 59.07 5.370 1.89 4.10e-02 5.4 93.0
#> PC7 9 46.69 5.188 1.83 6.33e-02 4.2 97.3
#> PC8 7 26.65 3.808 1.34 2.32e-01 2.4 99.7
#> PC9 5 3.41 0.682 0.24 9.45e-01 0.3 100.0
#> Residuals 252 715.69 2.840 NA NA NA NA
#> Total 536 9112.21 17.000 NA NA NA NA
#> ---------------------------------------------------------------------------
#>
#> All variables with significant (p < 0.05) genotype-vs-environment interaction
#> Done!
# Based on means of genotype-environment data
data_means <- mean_by(data_ge, ENV, GEN)
model2 <- waas_means(data_ge,
env = ENV,
gen = GEN,
resp = everything())
#> Evaluating trait GY |====================== | 50% 00:00:01
Evaluating trait HM |============================================| 100% 00:00:02
# The index WAAS
get_model_data(model, what = "OrWAAS")
#> Class of the model: waas
#> Variable extracted: OrWAAS
#> # A tibble: 10 × 3
#> GEN GY HM
#> <chr> <dbl> <dbl>
#> 1 G1 2 2
#> 2 G10 10 10
#> 3 G2 5 8
#> 4 G3 1 1
#> 5 G4 6 6
#> 6 G5 4 9
#> 7 G6 3 3
#> 8 G7 8 7
#> 9 G8 7 4
#> 10 G9 9 5
get_model_data(model2, what = "OrWAAS")
#> Class of the model: waas_means
#> Variable extracted: OrWAAS
#> # A tibble: 10 × 3
#> GEN GY HM
#> <chr> <dbl> <dbl>
#> 1 G1 2 3
#> 2 G10 10 10
#> 3 G2 5 8
#> 4 G3 1 1
#> 5 G4 6 6
#> 6 G5 4 9
#> 7 G6 3 2
#> 8 G7 8 7
#> 9 G8 7 4
#> 10 G9 9 5
# }