---
title: "Selection Analysis"
author: Willyan Junior Adorian Bandeira
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{SelectionAnalysis}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```
#Procedures for genotype selection

The EstimateBreed package provides several useful functions for selecting superior genotypes.

##Heterosis and heterobeltiosis of hybrids

The calculation of heterosis and heterobeltiosis is crucial for hybrid selection, as it measures the hybrid's performance relative to its parents. Heterosis reflects the overall vigor, while heterobeltiosis compares the hybrid to the best parent. These metrics help identify superior hybrids with desirable traits like higher productivity and better disease resistance.

These parameters can be easily calculated with the `het()` function.
```{r}
library(EstimateBreed)

data("maize")
#Extract heterosis and heterobeltiosis
with(maize,het(GEN,GM,GP,PR,REP,param="all"))

#Only extract heterosis
with(maize,het(GEN,GM,GP,PR,REP,param = "het"))

#Extract only heterobeltiosis
with(maize,het(GEN,GM,GP,PR,REP,param = "hetb"))
```

##Industrial quality indicators

Industrial quality indicators are very important for the selection of genotypes with industrial aptitude. They are widely applied to cereals (oats, wheat, barley, rye and corn).

Some interesting functions offered by the package are: 

`rend_ind()`, to calculate the hulling index and industrial yield of white oats.
```{r}
library(EstimateBreed)

data("aveia")
# Calculate the industrial yield without extracting the average
with(aveia, rend_ind(GEN,NG2M,MG,MC,RG))

# Calculate the industrial yield by extracting the average per genotype
with(aveia, rend_ind(GEN,NG2M,MG,MC,RG,stat="mean"))
```

`indviab()`, to estimate viability parameters with traits measured in wheat crops.
```{r}
library(EstimateBreed)

data("trigo")
#Ear viability index
with(trigo,indviab(TEST,NGE,NEE))

#Ear harvest index
with(trigo,indviab(TEST,MGE,ME))

#Spikelet deposition index in the ear
with(trigo,indviab(TEST,NEE,CE))

```

`hw()`, which applies a linear model to obtain the hectoliter weight of wheat, oat, barley and rye crops.
```{r}
library(EstimateBreed)

GEN <- rep(paste("G", 1:5, sep=""), each = 3)
REP <- rep(1:3, times = 5)
MG <- c(78.5, 80.2, 79.1, 81.3, 82.0, 80.8, 76.9, 78.1, 77.5, 83.2,
84.1, 82.9, 77.4, 78.9, 79.3)

data <- data.frame(GEN, REP, MG)

with(data,hw(GEN,MG,crop="trit"))

#Extract the average PH per genotype
with(data,hw(GEN,MG,crop="trit",stat="mean"))
```

##ISGR

Obtain the genetic selection index for resilience (`isgr()`) for selecting genotypes for environmental stressors, as described by [Bandeira et al. (2024)](https://www.cropj.com/Carvalho_18_12_2024_825_830.pdf).

```{r}
library(EstimateBreed)

#Obtain environmental deviations
data("desvamb")
head(desvamb)

#Use DPclim for the ISGR function to identify deviations correctly
DPclim <- with(desvamb,desv_clim(ENV,TMED,PREC))

#Calculate the ISGR
data("genot")
head(genot)
isgr_index <- with(genot, isgr(GEN,ENV,NG,MG,CICLO))

#Define the water requirement per stage
isgr_index <- with(genot, isgr(GEN,ENV,NG,MG,CICLO,req=5,stage="rep"))
```

##Restriction of controls variability

It restricts the variability of witnesses for less biased genetic parameter estimates, as described by Carvalho et al. (2023). This can be accomplished with the `restr()` function.

```{r}
library(EstimateBreed)

TEST <- rep(paste("T", 1:5, sep=""), each=3)
REP <- rep(1:3, times=5)
Xi <- rnorm(15, mean=10, sd=2)

data <- data.frame(TEST,REP,Xi)

#Apply the witness variability constraint
Control <- with(data, restr(TEST,REP,Xi,scenario = "restr",zstat = FALSE))

#Apply witness variability restriction with normalization (Z statistic)
Control <- with(data, restr(TEST,REP,Xi,scenario = "restr",zstat = TRUE))
```

The inbreeding coefficient and genetic parameters are key for evaluating genetic diversity and optimizing breeding strategies. The inbreeding coefficient indicates genetic relatedness, while genetic parameters guide the selection of superior genotypes, improving traits and maintaining long-term sustainability.

The inbreeding coefficient can be obtained with the `COI()` function.
```{r}
library(EstimateBreed)

var <- c("A","B","C","D","E")
VF <- c(2.5, 3.0, 2.8, 3.2, 2.7)
VG <- c(1.2, 1.5, 1.3, 1.6, 1.4)
data <- data.frame(var,VG,VF)

#Calculating for just one generation
with(data,COI(var,VG,VF,generation = "F3"))
```

Genetic parameters for balanced experiments can be estimated from the `genpar()` function. The methodology was described by Yadav et al. (2024).
```{r}
library(EstimateBreed)
data("genot2")

#Geting parameters without cheking model assumptions
parameters <- genpar(genot2,Gen,Rep,var =c("VAR1", "VAR2"))
parameters$anova
parameters$gp

#Checking model assumptions
parameters <- genpar(genot2,Gen,Rep,var =c("VAR1", "VAR2"),check=TRUE)
parameters$anova
parameters$gp
```