Title: | Tool for Stability Indices Calculation |
---|---|
Description: | Tools to calculate stability indices with parametric, non-parametric and probabilistic approaches. The basic data format requirement for 'toolStability' is a data frame with 3 columns including numeric trait values, genotype,and environmental labels. Output format of each function is the dataframe with chosen stability index for each genotype. Function "table_stability" offers the summary table of all stability indices in this package. This R package toolStability is part of the main publication: Wang, Casadebaig and Chen (2023) <doi:10.1007/s00122-023-04264-7>. Analysis pipeline for main publication can be found on github: <https://github.com/Illustratien/Wang_2023_TAAG/tree/V1.0.0>. Sample dataset in this package is derived from another publication: Casadebaig P, Zheng B, Chapman S et al. (2016) <doi:10.1371/journal.pone.0146385>. For detailed documentation of dataset, please see on Zenodo <doi:10.5281/zenodo.4729636>. Indices used in this package are from: Döring TF, Reckling M (2018) <doi:10.1016/j.eja.2018.06.007>. Eberhart SA, Russell WA (1966) <doi:10.2135/cropsci1966.0011183X000600010011x>. Eskridge KM (1990) <doi:10.2135/cropsci1990.0011183X003000020025x>. Finlay KW, Wilkinson GN (1963) <doi:10.1071/AR9630742>. Hanson WD (1970) Genotypic stability. <doi:10.1007/BF00285245>. Lin CS, Binns MR (1988) <https://cdnsciencepub.com/doi/abs/10.4141/cjps88-018>. Nassar R, Hühn M (1987). Pinthus MJ (1973) <doi:10.1007/BF00021563>. Römer T (1917). Shukla GK (1972). Wricke G (1962). |
Authors: | Tien-Cheng Wang [aut, cre], Tsu-Wei Chen [com] |
Maintainer: | Tien-Cheng Wang <[email protected]> |
License: | GPL (>= 3) |
Version: | 0.1.2 |
Built: | 2025-03-08 04:01:25 UTC |
Source: | https://github.com/illustratien/toolstability |
adjusted_coefficient_of_variation
calculate variance of a genotype across environments.
adjusted_coefficient_of_variation(data, trait, genotype, environment)
adjusted_coefficient_of_variation(data, trait, genotype, environment)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analyzed. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
Adjusted coefficient of variaiton (Doering and Reckling, 2018) is calculatd based on regression function. Variety with low adjusted coefficient of variation is considered as stable. Equation of adjusted coefficient of variation can be found in vignette file.
a data table with adjusted coefficient of variation
Tien-Cheng Wang
Döring TF, Reckling M (2018). “Detecting global trends of cereal yield stability by adjusting the coefficient of variation.” European Journal of Agronomy, 99, 30–36. ISSN 1161-0301, doi:10.1016/j.eja.2018.06.007.
data(Data) res <- adjusted_coefficient_of_variation( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
data(Data) res <- adjusted_coefficient_of_variation( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
coefficient_of_determination
calculate variance of a genotype across environments.
coefficient_of_determination(data, trait, genotype, environment)
coefficient_of_determination(data, trait, genotype, environment)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
Coefficient of determination (Pinthus, 1976) is calculatd based on regression function. Variety with low coefficient of determination is considered as stable. Equation of coefficient of determination can be found in vignette file.
a data table with coefficient of determination
Tien-Cheng Wang
Pinthus MJ (1973). “Estimate of genotypic value: A proposed method.” Euphytica, 22(1), 121–123. ISSN 1573-5060, doi:10.1007/BF00021563.
data(Data) coef.of.determination <- coefficient_of_determination( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
data(Data) coef.of.determination <- coefficient_of_determination( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
coefficient_of_regression
calculate variance of a genotype across environments.
coefficient_of_regression(data, trait, genotype, environment)
coefficient_of_regression(data, trait, genotype, environment)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
Coefficient of regression (Finlay and Wilkinson, 1963) is calculatd based on regression function. Variety with low coefficient of regression is considered as stable. Under the linear model
where Y is the predicted phenotypic values, ,
and
denoting
genotypic, environmental and overall population mean,respectively.
The effect of GE-interaction may be expressed as:
where is the coefficient of regression and
a deviation.
Coefficient of regression may be expressed as:
where is the observed phenotypic mean value of genotype i(i=1,..., G)
in environment j(j=1,...,E), with
and
denoting marginal means of genotype i and environment j,respectively. denote the overall mean of X.
a data table with coefficient of regression
Tien Cheng Wang
Finlay KW, Wilkinson GN (1963). “The analysis of adaptation in a plant-breeding programme.” Australian Journal of Agricultural Research, 14(6), 742–754. doi:10.1071/AR9630742.
data(Data) coefficient.of.regression <- coefficient_of_regression( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
data(Data) coefficient.of.regression <- coefficient_of_regression( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
Multi-environment trail evaluating 5 genotypes in 4 locations for 4 years, with 2 nitrogen application rates, 2 sowing dates, and 2 CO2 levels of treatments (Casadebaig et al., 2016).
data(Data)
data(Data)
A dataframe with 640 observations on the following 8 variables.
Yield
unit: kg*ha^-1.
Genotype
genotypes, 5 varieties.
Environment
128 unique combination of environments for each genotype.
Year
4 years.
Sites
4 locations.
Nitrogen
2 nitrogen application levels.
CO2
2 CO2 concentration levels.
Sowing
2 sowing dates.
Casadebaig P, Zheng B, Chapman S, Huth N, Faivre R, Chenu K (2016). “Assessment of the Potential Impacts of Wheat Plant Traits across Environments by Combining Crop Modeling and Global Sensitivity Analysis.” PLOS ONE, 11(1), e0146385. doi:10.1371/journal.pone.0146385.
data(Data) ggplot2::ggplot(Data,ggplot2::aes(x=Sites,y=Yield,col=Genotype))+ ggplot2::geom_boxplot()+ ggplot2::facet_grid(Sowing~Nitrogen,labeller =ggplot2::label_both)+ ggplot2::ylab(bquote('Wheat yield (ton' %.%'ha'^'-1'*')'))
data(Data) ggplot2::ggplot(Data,ggplot2::aes(x=Sites,y=Yield,col=Genotype))+ ggplot2::geom_boxplot()+ ggplot2::facet_grid(Sowing~Nitrogen,labeller =ggplot2::label_both)+ ggplot2::ylab(bquote('Wheat yield (ton' %.%'ha'^'-1'*')'))
deviation_mean_squares
calculate variance of a genotype across environments.
deviation_mean_squares( data, trait, genotype, environment, unit.correct = FALSE )
deviation_mean_squares( data, trait, genotype, environment, unit.correct = FALSE )
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
unit.correct |
logical, default is |
Deviation mean squares (Eberhart and Russell, 1966) is calculatd based on regression function. Variety with low stability variance is considered as stable. Equation of deviation mean squares can be found in vignette file.
a data table with deviation mean squares
Tien Cheng Wang
Eberhart SA, Russell WA (1966). “Stability parameters for comparing varieties.” Crop Science, 6(1), 36–40. ISSN 0011-183X, doi:10.2135/cropsci1966.0011183X000600010011x.
data(Data) deviation.mean.squares <- deviation_mean_squares( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
data(Data) deviation.mean.squares <- deviation_mean_squares( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
ecovalence
calculate genetic and environmental interaction.
ecovalence( data, trait, genotype, environment, unit.correct = FALSE, modify = FALSE )
ecovalence( data, trait, genotype, environment, unit.correct = FALSE, modify = FALSE )
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
unit.correct |
logical, default is |
modify |
logical, default is |
Ecovalence (Wricke, 1962) is calcualted based on square and sum up the genotype–environment interaction all over the environment. Variety with low ecovalence is considered as stable. Equation of ecovalence can be found in vignette file.
a data table with ecovalence
Tien-Cheng Wang
Wricke G (1962). “Über eine Methode zur Erfassung der Ökologischen Streubreite in Feldversuchen.” Zeitschrift für Pflanzenzüchtung, 47, 92–96.
data(Data) eco.valence <- ecovalence( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE, modify=FALSE)
data(Data) eco.valence <- ecovalence( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE, modify=FALSE)
environmental_variance
is used to calculate variance of a genotype across environments.
environmental_variance(data, trait, genotype, unit.correct = FALSE)
environmental_variance(data, trait, genotype, unit.correct = FALSE)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
unit.correct |
logical, default is |
Environmental variance (Roemer, 1917) is calculated by squared and suming up all deviation from genotypic mean for each genotype. The larger the environmental variance of one genotype is, the lower the stability. Equation of environmental variance can be found in vignette file.
a data table with environmental variance
Tien-Cheng Wang
Römer T (1917). “Sind die ertragdreichen Sorten ertagissicherer?” Mitteilungen der Deutschen Landwirtschaftlichen Gesellschaft, 32(1), 87–89.
data(Data) environmental.variance <- environmental_variance( data = Data, trait = "Yield", genotype = "Genotype", unit.correct = FALSE)
data(Data) environmental.variance <- environmental_variance( data = Data, trait = "Yield", genotype = "Genotype", unit.correct = FALSE)
genotypic_stability
calculate variance of a genotype across environments.
genotypic_stability(data, trait, genotype, environment, unit.correct = FALSE)
genotypic_stability(data, trait, genotype, environment, unit.correct = FALSE)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
unit.correct |
logical, default is |
Genotypic stability (Hanson, 1970) is calculatd based on regression function. Variety with low stability variance is considered as stable. Equation of genotypic stability can be found in vignette file.
a data table with genotypic stability
Tien-Cheng Wang
Hanson WD (1970). “Genotypic stability.” Theoretical and Applied Genetics, 40(5), 226–231. ISSN 1432-2242, doi:10.1007/BF00285245.
data(Data) genotypic.stability <- genotypic_stability( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
data(Data) genotypic.stability <- genotypic_stability( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
genotypic_superiority_measure
calculate variance of a genotype across environments.
genotypic_superiority_measure( data, trait, genotype, environment, unit.correct = FALSE )
genotypic_superiority_measure( data, trait, genotype, environment, unit.correct = FALSE )
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
unit.correct |
logical, default is |
Genotypic superiority measure (Lin and Binns, 1988) is calculatd based on means square distance between maximum value of environment j and genotype i. Variety with low genotypic superiority measure is considered as stable. Equation of genotypic superiority measure can be found in vignette file.
a data table with genotypic superiority measure
Tien-Cheng Wang
Lin CS, Binns MR (1988).
“A superiority measure of cultivar performance for cultivar location data.”
Canadian Journal of Plant Science, 68(1), 193–198.
ISSN 0008-4220, https://cdnsciencepub.com/doi/10.4141/cjps88-018.
data(Data) res <- genotypic_superiority_measure( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
data(Data) res <- genotypic_superiority_measure( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
safety_first_index
calculate variance of a genotype across environments.
safety_first_index(data, trait, genotype, environment, lambda)
safety_first_index(data, trait, genotype, environment, lambda)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analyzed. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties. |
environment |
colname of a column containing a character or factor vector labeling different environments. |
lambda |
the minimal acceptable value of trait that the user expected from crop across environments. Lambda should between the ranges of trait vlaue. |
Safety-first index (Eskridge, 1990) is calculated based on the assumption of
that the trait from each genotype follows normal distribution over enviornments.
Among different environments, trait below a given cirtical level
is defined as failure of trait. The probability of trait failure can be obtained
by entering mean and variance of trait and
into the cumulated density function of normal distribution.
Variety with low safety first index is considered as stable.
Equation of adjusted coefficient of variation can be found in vignette file.
a data table with coefficient of determination
Tien-Cheng Wang
Eskridge KM (1990). “Selection of Stable Cultivars Using a Safety-First Rule.” Crop Science, 30(2), 369. ISSN 0011-183X, doi:10.2135/cropsci1990.0011183X003000020025x.
data(Data) safety.first.index <- safety_first_index( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", lambda = median(Data$Yield))
data(Data) safety.first.index <- safety_first_index( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", lambda = median(Data$Yield))
stability_variance
calculate variance of a genotype across environments.
stability_variance(data, trait, genotype, environment, unit.correct = FALSE)
stability_variance(data, trait, genotype, environment, unit.correct = FALSE)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analyzed. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties. |
environment |
colname of a column containing a character or factor vector labeling different environments. |
unit.correct |
logical, default is |
Stability variance (Shukla, 1972) is calculatd based on lindear combination of ecovalence and mean square of genotype-environment interaction. Variety with low stability variance is considered as stable. Negative values of stability variance is replaced with 0. Equation of stability variance can be found in vignette file.
a data table with stability variance
Tien-Cheng Wang
Shukla GK (1972). “Some statistical aspects of partitioning genotype environmental components of variability.” Heredity, 29(2), 237–245.
data(Data) stability.variance <- stability_variance( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
data(Data) stability.variance <- stability_variance( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment")
table_stability
export all the stability indices in the package.
table_stability( data, trait, genotype, environment, lambda, normalize = FALSE, unit.correct = FALSE )
table_stability( data, trait, genotype, environment, lambda, normalize = FALSE, unit.correct = FALSE )
data |
a data frame containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analyzed. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties. |
environment |
colname(s) of a column containing a character or factor vector labeling different environments, if input is a vector containing multiple column names, then it will be merged into single environment column in the function. |
lambda |
the minimal acceptable value of trait that the user expected from crop across environments. Lambda should between the ranges of trait vlaue. |
normalize |
logical, default is |
unit.correct |
logical, default is |
Combine all stability indices in this package and export as a table, including mean trait, normality of the trait across environment.
a data table with multiple stability indices
Tien-Cheng Wang
Döring TF, Reckling M (2018).
“Detecting global trends of cereal yield stability by adjusting the coefficient of variation.”
European Journal of Agronomy, 99, 30–36.
ISSN 1161-0301, doi:10.1016/j.eja.2018.06.007.
Pinthus MJ (1973).
“Estimate of genotypic value: A proposed method.”
Euphytica, 22(1), 121–123.
ISSN 1573-5060, doi:10.1007/BF00021563.
Finlay KW, Wilkinson GN (1963).
“The analysis of adaptation in a plant-breeding programme.”
Australian Journal of Agricultural Research, 14(6), 742–754.
doi:10.1071/AR9630742.
Eberhart SA, Russell WA (1966).
“Stability parameters for comparing varieties.”
Crop Science, 6(1), 36–40.
ISSN 0011-183X, doi:10.2135/cropsci1966.0011183X000600010011x.
Wricke G (1962).
“Über eine Methode zur Erfassung der Ökologischen Streubreite in Feldversuchen.”
Zeitschrift für Pflanzenzüchtung, 47, 92–96.
Römer T (1917).
“Sind die ertragdreichen Sorten ertagissicherer?”
Mitteilungen der Deutschen Landwirtschaftlichen Gesellschaft, 32(1), 87–89.
Hanson WD (1970).
“Genotypic stability.”
Theoretical and Applied Genetics, 40(5), 226–231.
ISSN 1432-2242, doi:10.1007/BF00285245.
Lin CS, Binns MR (1988).
“A superiority measure of cultivar performance for cultivar location data.”
Canadian Journal of Plant Science, 68(1), 193–198.
ISSN 0008-4220, https://cdnsciencepub.com/doi/10.4141/cjps88-018.
Shukla GK (1972).
“Some statistical aspects of partitioning genotype environmental components of variability.”
Heredity, 29(2), 237–245.
Nassar R, Hühn M (1987).
“Studies on estimation of phenotypic stability: Tests of significance for nonparametric measures of phenotypic stability.”
Biometrics, 43(1), 45–53.
ISSN 0006-341X.
Eskridge KM (1990).
“Selection of Stable Cultivars Using a Safety-First Rule.”
Crop Science, 30(2), 369.
ISSN 0011-183X, doi:10.2135/cropsci1990.0011183X003000020025x.
adjusted_coefficient_of_variation
data(Data) tb <- table_stability( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", lambda = median(Data$Yield), normalize = TRUE, unit.correct=TRUE)
data(Data) tb <- table_stability( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", lambda = median(Data$Yield), normalize = TRUE, unit.correct=TRUE)
variance_of_rank
calculate variance of a genotype across environments.
variance_of_rank(data, trait, genotype, environment, unit.correct = FALSE)
variance_of_rank(data, trait, genotype, environment, unit.correct = FALSE)
data |
a dataframe containing trait, genotype and environment. |
trait |
colname of a column containing a numeric vector of interested trait to be analysized. |
genotype |
colname of a column containing a character or factor vector labeling different genotypic varieties |
environment |
colname of a column containing a character or factor vector labeling different environments |
unit.correct |
logical, default is |
Variance of rank (Nassar and Huehn, 1987) is calculatd based on regression function. Variety with low variance of rank is considered as stable. Equation of variance of rank can be found in vignette file.
a data table with variance of rank
Tien-Cheng Wang
Nassar R, Hühn M (1987). “Studies on estimation of phenotypic stability: Tests of significance for nonparametric measures of phenotypic stability.” Biometrics, 43(1), 45–53. ISSN 0006-341X.
data(Data) variance.of.rank <- variance_of_rank( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)
data(Data) variance.of.rank <- variance_of_rank( data = Data, trait = "Yield", genotype = "Genotype", environment = "Environment", unit.correct = FALSE)