Data Analysis with selection.index

Zankrut Goyani

2021-09-25

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)
d<- seldata # Manually generated data for analysis which is included in package
w<- weight # Weights assigned to the traits also include in package

As we discussed that selection index based on discriminant function. So we have required genotypic & phenotypic variance-covariance matrix for further analysis.

gmat<- gen.varcov(data = d[,3:9], genotypes = d$treat, replication = d$rep)
print(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
pmat<- phen.varcov(data = d[,3:9], genotypes = d$treat, replication = d$rep)
print(pmat)
#>        sypp     dtf     rpp     ppr     ppp     spp      pw
#> sypp 2.1465  0.1546  0.2320  0.2761  1.0801  0.1460  0.0875
#> dtf  0.1546  3.8372  0.1314 -0.4282 -0.4703  0.0585 -0.0192
#> rpp  0.2320  0.1314  0.2275 -0.0405  0.4635  0.0096 -0.0006
#> ppr  0.2761 -0.4282 -0.0405  0.4678  0.3931 -0.0205  0.0064
#> ppp  1.0801 -0.4703  0.4635  0.3931  4.2638  0.0632 -0.0245
#> spp  0.1460  0.0585  0.0096 -0.0205  0.0632  0.0836  0.0259
#> pw   0.0875 -0.0192 -0.0006  0.0064 -0.0245  0.0259  0.0226

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

GAY<- gen.advance(phen_mat = pmat[1,1], gen_mat = gmat[1,1],
                  weight_mat = w[1,2])
print(GAY)
#>         [,1]
#> [1,] 1.76942

We use this GAY value for the construction, ranking of the other selection indices and stored them in a list “si”.

si<- list()
si[[1]]<- sel.index(ID = 1, phen_mat = pmat[1,1], gen_mat = gmat[1,1],
                    weight_mat = w[1,2], GAY = GAY)
si[[2]]<- sel.index(ID = 2, phen_mat = pmat[2,2], gen_mat = gmat[2,2],
                    weight_mat = w[2,2], GAY = GAY)
si[[3]]<- sel.index(ID = 3, phen_mat = pmat[3,3], gen_mat = gmat[3,3],
                    weight_mat = w[3,2], GAY = GAY)
si[[4]]<- sel.index(ID = 4, phen_mat = pmat[4,4], gen_mat = gmat[4,4],
                    weight_mat = w[4,2], GAY = GAY)
si[[5]]<- sel.index(ID = 5, phen_mat = pmat[5,5], gen_mat = gmat[5,5],
                    weight_mat = w[5,2], GAY = GAY)
si[[6]]<- sel.index(ID = 6, phen_mat = pmat[6,6], gen_mat = gmat[6,6],
                    weight_mat = w[6,2], GAY = GAY)
si[[7]]<- sel.index(ID = 7, phen_mat = pmat[7,7], gen_mat = gmat[7,7],
                    weight_mat = w[7,2], GAY = GAY)

Selection score and Ranking of genotypes

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.

b<- si[[2]][[2]]
sel.score.rank(data = d[,3], bmat = b, genotype = d$treat)
#>    Genotype Selection.score Rank
#> 1        G1        2.225010   19
#> 2        G2        2.719571   13
#> 3        G3        1.850952   23
#> 4        G4        2.849128    9
#> 5        G5        2.851852    8
#> 6        G6        2.495223   17
#> 7        G7        1.992814   22
#> 8        G8        2.247590   18
#> 9        G9        3.488099    1
#> 10      G10        1.565031   25
#> 11      G11        2.876627    7
#> 12      G12        2.686027   14
#> 13      G13        2.755460   11
#> 14      G14        3.319157    2
#> 15      G15        1.744992   24
#> 16      G16        2.680592   15
#> 17      G17        2.836496   10
#> 18      G18        2.542172   16
#> 19      G19        3.168593    4
#> 20      G20        3.108864    5
#> 21      G21        3.178894    3
#> 22      G22        3.105218    6
#> 23      G23        2.142524   21
#> 24      G24        2.223275   20
#> 25      G25        2.733247   12

New function - comb.indices

comb.indices(ncomb = 1, pmat = pmat, gmat = gmat, wmat = w[,-1], wcol = 1, GAY = GAY)
#>   ID      b     GA      PRE Rank
#> 1  1 0.5854 1.7694 100.0000    1
#> 2  2 0.4066 1.6431  92.8627    2
#> 3  3 0.5824 0.5731  32.3887    5
#> 4  4 0.5199 0.7336  41.4574    4
#> 5  5 0.2253 0.9599  54.2504    3
#> 6  6 0.2081 0.1241   7.0164    7
#> 7  7 0.4558 0.1413   7.9882    6

New function - remove trait from the construction of selection indices

rcomb.indices(ncomb = 1, i = 1, pmat = pmat, gmat = gmat, wmat = w[,-1], wcol = 1, GAY = GAY)
#>   ID      b     GA     PRE Rank
#> 1  2 0.4066 1.6431 92.8627    1
#> 2  3 0.5824 0.5731 32.3887    4
#> 3  4 0.5199 0.7336 41.4574    3
#> 4  5 0.2253 0.9599 54.2504    2
#> 5  6 0.2081 0.1241  7.0164    6
#> 6  7 0.4558 0.1413  7.9882    5

Tips to use this package effectively
+ Must use new functions
- comb.indices - without removing any characters or trait
- rcomb.indices - by removing desired character
+ 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.