# Variance Structure Qualifiers

## Constraining Variance parameters

This section explains how to make several variance parameters have the same value.

#### Parameter within a variance model

Equality of parameters in a variance model can be specified using the !=s qualifier where s is a string of letters and/or zeros. Positions in the string correspond to the parameters of the variance model:
• all parameters with the same letter in the structure are treated as the same parameter,
• 1-9 are different from a-z which are different from A-Z so that 61 equalities can be specified. 0 and . mean unconstrained. A colon generates a sequence viz. a:e is the same as abcde
• Putting % as the first character in s makes the interpretation of codes absolute (so that they apply across structures).
• Putting * as the first character in s indicates that numbers are repeat counts, A-Z are equality codes and only . is unconstrained. Thus !=*.3A2. is equivalent to !=0AAA00 or !=0aaa00)

#### Examples

``` 4 0 US  !=ABACBA0CBA
```
constrains all parameters corresponding to A to be equal, similarly for B and C. The 7th parameter would be left unconstrained. This sequence applied to an unstructured 4 x 4 matrix would make it banded, that is
A
B A
C B A
0 C B A

```
site.gen 2  # G header line
site  0  US  .3  !=0A0AA0 !GPUPUUP
.1  .4  .1  .1  .3
gen
```
defines a structure for the genotype by site interaction effects in a MET in which the genotypes are independent random effects within sites but are correlated across sites with equal covariance.
``` site  0  FA2 !G4PZ3P4P !=00000000VVVV
4*.9       # initial values for 1st factor
0 3*.1      # initial values for 2nd factor, first fixed at 0
4*.2        # initial values for site variances
```
defines a 2 factor Factor Analytic model for 4 sites with equal variance. The first loading in the second factor is constrained equal to 0 for identifiability. P places restrictions on the magnitude of the loadings and the variances to be positive.
``` xfa(site,2) 0 XFA2 !=VVVV0 !4P4PZ3P
4*.2        # initial specific variances
```
defines a 2 factor Factor analytic model in which the specific variances are all equal.

#### Parameters between and within variance models

More general relationships between variance parameters can be defined using the !VCC c qualifier placed on the data file definition line.
• !VCC c specifies that there are c constraint lines defining constraints to be applied,
• the constraint lines occur after the variance header line and any R and G structure lines, that is, there must be a variance header line,
• each constraint is specified in a separate line in the form
i[:j] k*Vk... m * Vm...
where
i, j, m, n is the number of a variance parameter and Vk is a scale coefficient relating parameter k to parameter i,
i is the primary parameter number,
* indicates that the scale coefficient is specified. If the scale coefficient is 1 you may omit the * 1, if the scale coefficient for parameter k is -1 you may write -k instead of k *-1,
the meaning of the scale coefficient is that k * Vk has the same value as parameter i.
a variance parameter may only be included in constraints once,
if the same relationship applies to blocks of parameters, define the primary block using i:j and this is taken to imply the secondary blocks begining at parameter k ... m.
• the i terms refer to positions in the full variance parameter vector. This may change if the model is changed. The full vector includes a term for each factor in the model and then a term for each parameter defined in the R and G structures. A list of i numbers and their initial values is returned in the .asl file to help you to check the numbers. Alternatively, examine the .asr file from an initial run with !VCC included but no arguments supplied. The job will terminate but ASReml will provide the Pi values associated with each variance component. Otherwise the numbers are given in the .res file.

#### Examples

5 7 * .1 parameter 7 is a tenth of parameter 5
5 -7 parameter 7 is the negative of parameter 5
32 34 35 37 38 39 for a 4 by 4 US matrix given by parameters 31...40, the covariances are forced to be equal.
21:28 29 equates 8 pairs of parameters (21 with 29, 22 with 30, ... 28 with 36) as shown in the next section.

## Equating variance structures

In some plant breeding applications, it is sometimes convenient to define a variance structure as the sum of two simpler terms. Then, it is necessary to give the same variance model to each term and use parameter constraints to equate the parameters. If there are few parameters, this can be done as follows:
``` xfa(dTrial,1).Family 2
5 0 XFA1 !GPFPFP !=%ABCDEFGH
0.72631 0.000 .242713 0.000 .882465 .846305 .04419 .743393
Family 0 GIV1

xfa(dTrial,1).Line 2
5 0 XFA1 !GPFPFP !=%ABCDEFGH
0.72631 0.000 .242713 0.000 .882465 .846305 .04419 .743393
Line 0 GIV2
```
However, for a larger term, there may not be enough letters in the alphabet and so !VCC is required as in:
``` !VCC 1
...
xfa(dTrial,1).Family 2
5 0 XFA1 !GPFPFP
0.72631 0.000 .242713 0.000 .882465 .846305 .04419 .743393
Family 0 GIV1

xfa(dTrial,1).Line 2
5 0 XFA1 !GPFPFP
0.72631 0.000 .242713 0.000 .882465 .846305 .04419 .743393
Line 0 GIV2
21:28 29
```
Better still, in this case we can use just one structure, twice:
``` xfa(dTrial,1).Family 2
5 0 XFA1 !GPFPFP !NAME 'FIVE'
0.72631 0.000 .242713 0.000 .882465 .846305 .04419 .743393
Family 0 GIV1

xfa(dTrial,1).Line 2
!USE 'FIVE'  #5 0 XFA1 !GPFPFP
# Initial parameters now omitted here
Line 0 GIV2
```
associates the model definition labeled FIVE with the second structure.