<- asreml(
asr012 fixed = amoebic_load ~ 1,
random = ~vm(indiv, ainv),
residual = ~units,
data = d008
)
ASR012. LMM with pedigree information - Atlantic salmon
The complete script for this example can be downloaded here:
Dataset
In this example, we will use the D008 and the D008ped datasets, which include the phenotypic data and pedigree file, respectively. A few lines of each of these data frames are shown below:
indiv | mean_gill_score | amoebic_load |
---|---|---|
Fish_00001 | 3.00 | 28.72 |
Fish_00002 | 3.50 | 26.47 |
Fish_00003 | 2.00 | 32.78 |
Fish_00004 | 3.25 | 26.90 |
Fish_00005 | 3.00 | 30.34 |
Fish_00007 | 2.50 | 31.36 |
indiv | sire | dam |
---|---|---|
Sire1 | 0 | 0 |
Sire2 | 0 | 0 |
Sire3 | 0 | 0 |
Sire4 | 0 | 0 |
Sire5 | 0 | 0 |
Sire6 | 0 | 0 |
Model
In this example, we will fit a LMM with pedigree information (i.e., Animal Model) based on the following equation: \[ y = \mu + gen+ e\ \]
where,\(y\) is the amoebic load,
\(\mu\) is the overall mean,
\(gen\) is the random effect of genotype, with \(gen \sim \mathcal{N}(0,\,\sigma^{2}_{g})\),
\(e\) is the random residual effect, with \(e \sim \mathcal{N}(0,\,\sigma^{2}_{e})\).The factor \(gen\) is associated with the numerator relationship matrix (NRM) \(\mathbf{A}\).
Now, let’s take a look at how to write the model with ASReml-R. Note that before fitting the model, the inverse of the NRM needs to be created using the pedigree information (see ASR013 for more details), and the column indiv
from the phenotypic dataset needs to be set as factor.
Note that the above model is including the inverse of the numerator relationship matrix by the use of the expression vm()
that indicates variance model and that links a factor to the inverse matrix.
Exploring output
The residuals diagnostic plots are:
plot(asr012)
The variance components are:
summary(asr012)$varcomp
component std.error z.ratio bound %ch
vm(indiv, ainv) 3.805643 0.8391101 4.535333 P 0
units!R 6.721801 0.5879412 11.432776 P 0
The heritability is calculated as follow:
vpredict(asr012, h2 ~ V1/(V1+V2))
Estimate SE
h2 0.3614974 0.06850024
This result reports a heritability estimate of 0.36, which indicates that the studied trait is under important additive genetic control.
The overall mean, which is the only BLUE effect we have can be requested with:
summary(asr012, coef = TRUE)$coef.fixed
solution std error z.ratio
(Intercept) 31.61313 0.1635798 193.2582
The additive genetic effects (BLUP/breeding values) are:
<- as.data.frame(summary(asr012, coef = TRUE)$coef.random)
BLUP head(BLUP)
solution std.error z.ratio
vm(indiv, ainv)_Sire1 0.1768296 0.8396683 0.2105945
vm(indiv, ainv)_Sire2 -1.1805100 1.2934350 -0.9126937
vm(indiv, ainv)_Sire3 -2.3679553 0.9298205 -2.5466801
vm(indiv, ainv)_Sire4 1.1015471 0.8689376 1.2676942
vm(indiv, ainv)_Sire5 0.7081991 0.8875566 0.7979200
vm(indiv, ainv)_Sire6 -2.9925001 1.2173379 -2.4582328
We can also get the predictions (adjusted means) as follow:
<- predict(asr012, classify = 'vm(indiv,ainv)')$pvals
preds head(preds)
indiv predicted.value std.error status
1 Sire1 31.78999 0.8121392 Estimable
2 Sire2 30.43264 1.2852457 Estimable
3 Sire3 29.24521 0.9072839 Estimable
4 Sire4 32.71468 0.8463674 Estimable
5 Sire5 32.32133 0.8664946 Estimable
6 Sire6 28.62068 1.2051464 Estimable
In this case, the predictions are simply corresponding to the sum of the overall mean and the breeding value, and they can be used to rank and select future parents.