# Model terms

## Basic terms

The linear model is defined as a list of model terms. The basic terms are factors and covariates defined in the data and a few predefined special terms such as mu, mv, Trait and units.

#### Example

The linear model for a randomised block analysis with a few missing observations might read.
```  yield ~ mu variety mv !r blocks
```

## Operators

#### Interactions

• interactions are formed by joining two or more terms with a . or a :, for example, a.b is the interaction of factors a and b,
• interaction levels are arranged with the levels of the second factor nested within the levels of the first,
• labels of model terms, including interactions, are limited to 31 characters of which only the first 20 are ever displayed. Thus for interaction terms it is often necessary to shorten the components in a systematic way, for example, if Time and Treatment are defined in this order, the interaction between Time and Treatment could be specified in the model as Time.Treat; remember that the first match is taken so that if the label of each field begins with a different letter, the first letter is sufficient to identify the term,
• interactions can involve model functions,
• * indicates factorial expansion (up to 5 way)
a*b is expanded to a b a.b
a*b*c*d is expanded to
a b c d a.b a.c a.d b.c b.d c.d a.b.c a.b.d a.c.d b.c.d a.b.c.d
• / indicates nested expansion
a/b is expanded to a a.b
• a.(b c d) e is expanded to a.b a.c a.d e. syntax is detected by the string .( and the closing parenthesis must occur on the same line and before any comma indicating continuation. Any number of terms may be enclosed. Each may have ` -' prepended to suppress it from the model. Each enclosed term may have initial values and qualifiers following. For example,
yield ~ site site.(lin(row) !r variety), at(site,1).(row .3 col .2) expands to
yield ~ site site.lin(row) !r site.variety, at(site,1).row .3 at(site,1).col .2

#### Conditional factors

A conditional factor is a factor that is present only when another factor has a particular level.
• individual components can be specified using the at(f,n) function, for example, at(site,1).row will fit row as a factor only for site 1,
• a complete set of conditional terms are specified by omitting the level specification in the at(f) function provided the correct number of levels of f is specified in the field definitions. Otherwise, a list of levels may be specified.
at(f).b creates a series of model terms representing b nested within a for any model term b. A model term is created for each level of a; each has the size of b. For example, if site and geno are factors with 3 and 10 levels respectively, then for at(site).geno ASReml constructs 3 model terms
at(site,01).geno at(site,02).geno at(site,03).geno, each with 10 levels,
This is similar to forming an interaction except that a separate model term is created for each level of the first factor; this is useful for random terms when each component can have a different variance. The same effect is achieved by using an interaction (e.g. site.geno) and associating a DIAG variance structure with the first component.

But any at() term to be expanded MUST be the FIRST component of the interaction. geno.at(site) will not work.
at(site,1).at(year).geno will not work but
at(year).at(site,1).geno is OK
And the at() factor must be declared with the correct number of levels because the model line is expanded BEFORE the data is read. Thus if site is declared as site * or site !A in the data definitions, at(site).geno will expand to at(site,01).geno at(site,02).geno regardless of the actual number of sites.

## Model functions

is a list of model terms/functions. The arguments in model term functions represented by the following symbols
• f --- the label of a data variable defined as a model factor,
• k, n --- an integer number,
• r --- a real number,
• t --- a model term label (includes data variables),
• v, y --- the label of a data variable,

Parsing of model terms in ASReml is not very sophisticated. Where a model term takes another model term as an argument, the argument must be predefined. If necessary, include the argument in the model line with a leading '-' which will cause the term to be defined but not fitted. For example
Trait.male -Trait.female and(Trait.female)

The last column in the table indicates whether the term is typically used as a fixed term, a random term, or both. More information on the function is available behind this word.

 Reserved model terms mu constant term or intercept fixed mv a term to estimate missing values fixed Trait multivariate counterpart to mu fixed units forms a factor with a level for each experimental unit random Operators : placed between labels to specify an interaction both / forms nested expansion both * forms factorial expansion fixed - placed before model terms to exclude them from the model both , at the end of a line indicates the model specification continues on the next line both + treated as a space both !{ ... !} placed around some model terms when it is important the terms not be reordered random Common functions at(f,n) condition on level n of factor f. n may be a list of values both at(f) forms conditioning covariables for all levels of factor f both fac(v) forms a factor from v with a level for each unique value in v both fac(v,y) forms a factor with a level for each combination of values in v and y random lin(f) forms a variable from the factor f with values equal to 1... n corresponding to level(1) ... level( n) of the factor both spl(v) spl(v,k) forms the design matrix for the random component of a cubic spline for variable v random other functions and(t) and(t,r) adds r times the design matrix for model term t to the previous design matrix; r has a default value of 1. both c(f) con(f) factor f is fitted with sum to zero constraints fixed cos(v,r) forms cosine from v with period r fixed fam(f,c) is a factor derived using the !FAMILY qualifier by grouping levels of data factor f fixed ge(f,r) condition on factor/variable f gt= r fixed giv(f,n) associates the nth .giv G-inverse with the factor f random gt(f,r) condition on factor/variable f gt r fixed h(f) factor f is fitted with Helmert constraints fixed ide(f) fits pedigree factor f without relationship matrix random inv(v) inv(v,r) forms reciprocal of v + r fixed le(f,r) condition on factor/variable f lt= r fixed leg(v,[-]n) forms n+1 legendre polynomials of order 0 (intercept), 1 (linear) ... n from the values in v; the intercept polynomial is omitted if v is preceded by the negative sign. fixed lt(f,r) condition on factor/variable f lt r fixed log(v[,r]) forms natural logarithm of v + r fixed ma1(f) constructs MA1 design matrix for factor f random ma1 forms an MA1 design matrix from plot numbers random mbf(f,c) is a set of c covariates derived using the !MBF qualifier from data variable/factor f fixed out(n) condition on observation n fixed out(n,t) condition on record n, trait t fixed pol(v,[-]n) forms n+1 orthogonal polynomials of order 0 (intercept), 1 (linear) ... n from the values in v; the intercept polynomial is omitted if n is preceded by the negative sign. both pow(v,p[,r]) raises v + r to power p fixed qtl(f,r) impute a covariable from marker map information at position r fixed sin(v,r) forms sine from v with period r both sqrt(f[,r]) forms square root of v + r fixed uni(f) forms a factor with a level for each record where factor f is non-zero random uni(f,n) forms a factor with a level for each record where factor f has level n random vect(f) associates the ith column of !G factor f with the ith trait fixed xfa(f,k) is formally a copy of factor f with k extra levels. This is used when fitting extended factor analytic models ( XFA, of order k. random

## Examples

yield ~ mu variety
fits a model with a constant and fixed variety effects

yield ~ mu variety !r block
a model with a constant term, fixed variety effects and random block effects

yield ~ mu time variety time.variety
fits a saturated model with fixed time and variety main effects and time by variety interaction effects

livewt ~ mu breed sex breed.sex !r sire
fits a model with fixed breed, sex and breed by sex interaction effects and random sire effects

firmness ~ mu treat*time !r spl(time) fac(time) treat.spl(time)
fits separate spline curves for each treatment.