The aim of most plant breeding program is simultaneous improvement of several characters. An objective method involving simultaneous selection for several attributes then becomes necessary. It has been recognized that most rapid improvements in the economic value is expected from selection applied simultaneously to all the characters which determine the economic value of a plant, and appropriate assigned weights to each character according to their economic importance, heritability and correlations between characters. So the selection for economic value is a complex matter. If the component characters are combined together into an index in such a way that when selection is applied to the index, as if index is the character to be improved, most rapid improvement of economic value is expcted. Such an index was first proposed by Smith (1937) based on the Fisher’s (1936) “discriminant function”. In this package selection index is calculated based on the Smith (1937) selection index method (Dabholkar, 1999). For more imformation refer Elements of Bio Metrical GENETICS by A. R. Dabholkar.
library(selection.index)
<- seldata # Manually generated data for analysis which is included in package d
<- weight # Weights assigned to the traits also include in package w
As we discussed that selection index based on discriminant function. So we have required genotypic & phenotypic variance-covariance matrix for further analysis.
<- gen.varcov(data = d[,3:9], genotypes = d$treat, replication = d$rep)
gmatprint(gmat)
#> sypp dtf rpp ppr ppp spp pw
#> sypp 1.2566 0.3294 0.1588 0.2430 0.7350 0.1276 0.0926
#> dtf 0.3294 1.5602 0.1734 -0.3129 -0.2331 0.1168 0.0330
#> rpp 0.1588 0.1734 0.1325 -0.0316 0.3201 -0.0086 -0.0124
#> ppr 0.2430 -0.3129 -0.0316 0.2432 0.3019 -0.0209 0.0074
#> ppp 0.7350 -0.2331 0.3201 0.3019 0.9608 -0.0692 -0.0582
#> spp 0.1276 0.1168 -0.0086 -0.0209 -0.0692 0.0174 0.0085
#> pw 0.0926 0.0330 -0.0124 0.0074 -0.0582 0.0085 0.0103
<- phen.varcov(data = d[,3:9], genotypes = d$treat, replication = d$rep)
pmatprint(pmat)
#> sypp dtf rpp ppr ppp spp pw
#> sypp 2.5132 0.6588 0.3176 0.4860 1.4700 0.2552 0.1852
#> dtf 0.6588 3.1204 0.3468 -0.6258 -0.4662 0.2336 0.0660
#> rpp 0.3176 0.3468 0.2650 -0.0632 0.6402 -0.0172 -0.0248
#> ppr 0.4860 -0.6258 -0.0632 0.4864 0.6038 -0.0418 0.0148
#> ppp 1.4700 -0.4662 0.6402 0.6038 1.9216 -0.1384 -0.1164
#> spp 0.2552 0.2336 -0.0172 -0.0418 -0.1384 0.0348 0.0170
#> pw 0.1852 0.0660 -0.0248 0.0148 -0.1164 0.0170 0.0206
Generally, Percent Relative Efficiency (PRE) of a selection index is calculated with reference to Genetic Advance (GA) yield of respective weight. So first we calculate the GA of yield for respective weights. + Genetic gain of Yield
<- sel.index(ID = 1, phen_mat = pmat[1,1], gen_mat = gmat[1,1],
GA1weight_mat = w[1,2])
print(GA1)
#> $ID
#> [1] "1"
#>
#> $b
#> [,1]
#> [1,] 0.5
#>
#> $GA
#> [,1]
#> [1,] 1.6352
#>
#> $PRE
#> [,1]
#> [1,] 100
In single character combination GA is stored in 3^^rd list element. So we can store this GA values in different variables for further use.
<- GA1[[3]] GAY
We use this GAY value for the construction, ranking of the other selection indices and stored them in a list “si”.
<- list()
si1]]<- sel.index(ID = 1, phen_mat = pmat[1,1], gen_mat = gmat[1,1],
si[[weight_mat = w[1,2], GAY = GAY)
2]]<- sel.index(ID = 2, phen_mat = pmat[2,2], gen_mat = gmat[2,2],
si[[weight_mat = w[2,2], GAY = GAY)
3]]<- sel.index(ID = 3, phen_mat = pmat[3,3], gen_mat = gmat[3,3],
si[[weight_mat = w[3,2], GAY = GAY)
4]]<- sel.index(ID = 4, phen_mat = pmat[4,4], gen_mat = gmat[4,4],
si[[weight_mat = w[4,2], GAY = GAY)
5]]<- sel.index(ID = 5, phen_mat = pmat[5,5], gen_mat = gmat[5,5],
si[[weight_mat = w[5,2], GAY = GAY)
6]]<- sel.index(ID = 6, phen_mat = pmat[6,6], gen_mat = gmat[6,6],
si[[weight_mat = w[6,2], GAY = GAY)
7]]<- sel.index(ID = 7, phen_mat = pmat[7,7], gen_mat = gmat[7,7],
si[[weight_mat = w[7,2], GAY = GAY)
Ex. For top three indices i = 3, Top ranked index, i = 1
<- rank.index(list = si, i = 3)
rankprint(rank)
#> ID b GA PRE Rank
#> 21 2 0.5 1.8221 111.4303 1
#> 2 1 0.5 1.6352 100.0027 2
#> 5 5 0.5 1.4299 87.4440 3
Generally selection score is calculate based on top ranked selection index. So first we store the discriminant coefficient value into a variable b, and later that value we used for calculation of selection score and ranking of the genotypes.
<- rank[[2]][1]
bsel.score.rank(data = d[,3], bmat = b, genotype = d$treat)
#> Genotype Selection.score Rank
#> 1 G1 2.736117 19
#> 2 G2 3.344283 13
#> 3 G3 2.276133 23
#> 4 G4 3.503600 9
#> 5 G5 3.506950 8
#> 6 G6 3.068400 17
#> 7 G7 2.450583 22
#> 8 G8 2.763883 18
#> 9 G9 4.289350 1
#> 10 G10 1.924533 25
#> 11 G11 3.537417 7
#> 12 G12 3.303033 14
#> 13 G13 3.388417 11
#> 14 G14 4.081600 2
#> 15 G15 2.145833 24
#> 16 G16 3.296350 15
#> 17 G17 3.488067 10
#> 18 G18 3.126133 16
#> 19 G19 3.896450 4
#> 20 G20 3.823000 5
#> 21 G21 3.909117 3
#> 22 G22 3.818517 6
#> 23 G23 2.634683 21
#> 24 G24 2.733983 20
#> 25 G25 3.361100 12
Tips to use this package effectively
+ Use for loop to make the selection indices construction + Do not forget the Index of the trait/character when you calculating the selction score and ranking of genotypes.