1. Home
  2. Univariate analysis

Univariate analysis

Page contents:

Some basic models

Let’s start with the simplest design normally used in tree breeding programs: randomized complete blocks. You can run the different parts of the program using something like: > asreml partnumber (e.g. > asreml 2)

Complete block design
 tree !P
 rep     10      # replicates
 plot   500      # plot codes
 dbh
 bd
# Pedigree file
crctest1ped.txt
# Data file and option to run
# differentparts of the program
crctest1dat.txt !dopart $A

# Assuming fixed reps
!part 1 
dbh ~ mu rep !r plot tree

# Assuming random reps
!part 2 
dbh ~ mu !r rep plot tree

# Single tree plot
!part 3 
dbh ~ mu !r rep tree

In the case of incomplete block designs we treat replicates as fixed, and incomplete blocks (iblock) within each rep as random. Note that the nested effect is created defining rep as an effect in the model equation and then rep.iblock, without defining iblock by itself. If you wanted to have interaction rather than nesting you would use, for example: factor1 factor2 factor1.factor2 or, even shorter, factor1*factor2, which would be expanded to the previous notation.

Incomplete block design
 tree !P
 rep     5      # replicates
 iblock 25      # incomplete blocks
 plot           # plot codes
 dbh
 bd
crctest2ped.txt
crctest2dat.txt !dopart $A

# this part analyses dbh
!part 1 
dbh ~ mu rep !r rep.iblock plot tree

# while this part works on basic density (bd)
!part 2 
bd ~ mu rep !r rep.iblock plot tree

Equivalent models

In some situations, e.g. when you are only interested in predicting breeding values for the parents for backwards selection, you may prefer to use models that are equivalent and computationally less demanding (e.g. a family model). For example:

Incomplete block design using OP material
 tree !P
 motherID  200
 rep         5   # replicates
 iblock     20   # incomplete blocks
 plot     1000   # plot codes
 dbh
crctest3ped.txt
crctest3dat.txt !dopart $A

# Uses an individual tree model
# where var(tree) = additive variance
!part 1   
dbh ~ mu rep !r rep.iblock plot tree

# Uses a family model
# where var(motherID) = 1/4 additive variance
# (if there is no selfing, etc)
!part 2   
dbh ~ mu rep !r rep.iblock plot motherID

…or in the case of controlled pollinated material:

Incomplete block design using CP material
 tree !P
 motherID   20
 fatherID   20
 family    120
 rep         5     # replicates
 iblock     20     # incomplete blocks
 plot     1000     # plot codes
 dbh
crctest4ped.txt
crctest4dat.txt !dopart $A

# Uses an individual tree model
# where var(tree) = additive variance and
# var(family) = 1/4 dominance variance
!part 1   
dbh ~ mu rep !r rep.iblock plot tree family

# Uses a family model
!part 2   
dbh ~ mu rep !r rep.iblock plot motherID,
      and(fatherID) family

In the previous equation motherID and(fatherID) overlays the design matrices for males and females so you get only one prediction for each parent, in spite of some parents acting as both male and female (which is typical in crossing programs in trees). The variance of motherID will represent var(GCA).

If you face problems overlaying the matrices with and, please read Overlapping Design Matrices.

Diallels

The specifications of diallels is very straightforward in ASReml, and do not require the creation of many additional variables to hold extra factors.

Note: The specification of family code is in such a way that direction of cross does not matter (e.g., 55×96 = 96×55). In reciprocals code direction is important (e.g., 55×96 != 96×55).

Diallel in complete block design
 tree !P
 motherID   20
 fatherID   20
 family    120     # Family code
 recipro   200     # Reciprocals code
 rep        10     # replicates
 plot     1000     # plot codes
 dbh
crctest5ped.txt
crctest5dat.txt !dopart $A

# Uses an individual tree model
!part 1   
dbh ~ mu rep !r rep.iblock plot tree family,
      motherID recipro 

# Uses a family model
!part 2   
dbh ~ mu rep !r plot fatherID and(motherID),
      family motherID recipro

Clonal data

Clonal data can be seen as repeated observations of a genotype, thus their analysis is related to repeated measurements, although there is no ordering in time. The analysis of clonal data is straightforward in ASReml. In the data file all ramets of the same clone will have the same genotype ID, and each genotype will be only once in the pedigree file. If each genotype is repeated in the pedigree file, it will be necessary to include the !repeat keyword after the pedigree file name.

Brian Kennedy (in Animal Model BLUP. Erasmus Intensive Graduate Course. August 20–26 1989. University of Guelph. page 130) showed the mathematics behind using clonal data as repeated measurements, referring to the analysis of embryo splitting. I first ran code like this while working in longitudinal analysis in 1999–2000. However, João Costa e Silva provided me with a very good interpretation of the analyses at the end of 2003. For more details, check: Costa e Silva, J., Borralho, N.M.G. & Potts, B.M. 2004. Additive and non-additive genetic parameters from clonally replicated and seedling progenies of Eucalyptus globulus. Theoretical and Applied Genetics 108: 1113–1119.

Incomplete block design with clonal CP material
 genotypeID !P
 motherID   20
 fatherID   20
 family    120
 rep         5     # replicates
 iblock     20     # incomplete blocks
 dbh
crctest6ped.txt
crctest6dat.txt !dopart $A 

# Uses an individual tree model
# where var(genotypeID) = additive variance,
# var(family) = 0.25 dominance variance, and
# var(ide(genotypeID)) = 0.75 dominance + epistasis
!part 1
dbh ~ mu rep !r rep.iblock genotypeID fam ide(genotypeID)

The ide(genotypeID) part of the job, creates an additional matrix for genotypeID that ignores the pedigree relationships.

Multiple site, single trait

The traditional approach used in tree breeding to analyse progeny trials in multiple sites was to either assume a unique error variance (and then use the approach explained before) or to correct the data by the site-specific error variance and then use the typical approach using the corrected data. Using ASReml it is possible to use alternative methods, either explicitly fitting a site-specific error variance (but keeping a unique additive genetic variance) or fitting site-specific additive and residual variances, in fact using a Multivariate Analysis approach, where the expression of a trait in each site is considered a different variable. In any case, any of the alternative methods needs a specification of Covariance Structures.

Multiple site single trait analysis
 tree !P
 family    120     # family code
 site        2
 rep         5     # replicates
 iblock     20     # incomplete blocks
 dbh
crctest8ped.txt
crctest8dat.txt !dopart $A

# Uses an individual tree model for site 1
!part 1   
!filter site !select 1
dbh ~ mu rep !r rep.iblock nrmv(tree) family

# Uses an individual tree model for site 2
!part 2   
!filter site !select 2
dbh ~ mu rep !r rep.iblock nrmv(tree) family

# Both sites, as single trait but different
# error variances
!part 3   
dbh ~ mu site site.rep !r site.rep.iblock,
      site.n) site.family
residual at(site).idv(units) 
# there are two separate errors, specified 
# as the number of level of factor site
# (by using the 'at' statement).
# Then for each of these a structure of
# independent errors with a single
# variance (idv) is specified.

# Also note the use of nrmv(tree) and nrm(tree)
# both assign the numerator relationship matrix
# to the factor tree (read as !P before) but the 
# v in nrmv refers to nrm scaled by a 
# variance parameter.

Copyright (1997–2021) by Luis Apiolaza, some rights are reserved.

Updated on November 30, 2021

Was this article helpful?