Numerical examples from Mrode and Pocrnic (2023)

Yutaka Masuda

August 2026

Back to index.html.

Reduced animal model

Model

The reduced animal model is an animal model that includes only parents (that is, animals with progeny). Breeding values for animals without progeny are calculated indirectly using their parents’ breeding values. This model is simpler and saves computational resources, particularly when phenotypes are available only for terminal individuals (such as beef steers) that will not have progeny; therefore, their breeding values are not used in selection decisions. We omit the description of the model and its theory here. See the textbook or Quaas and Pollak (1980) for details.

BLUPF90+ does not directly support the reduced animal model, but it can still be implemented in BLUPF90+ using (very) tricky methods. Some techniques used here will also be used in random-regression and social-interaction models. Although there are several ways to implement a reduced animal model in BLUPF90+, we introduce here an educational example that is redundant but easier to understand.

Files

We can use the same pedigree file (mr43a.ped) as in the previous animal model after removing animals without progeny (animals 7 and 8 in this case).

1 0 0
2 0 0
3 0 0
4 1 0
5 3 2
6 1 2

The data file is extended with 5 additional columns. Here, we show a few lines of the data file.

4 1 1 0 4.5  4 0.0 0.0 1.0  1.0
5 2 3 2 2.9  5 0.0 0.0 1.0  1.0
6 2 1 2 3.9  6 0.0 0.0 1.0  1.0
7 1 4 5 3.5  0 0.5 0.5 0.0  0.8
8 1 3 6 5.0  0 0.5 0.5 0.0  0.8

The 6th column (the first additional column) contains the animal ID, but is 0 if the animal has no progeny. Columns 7, 8, and 9 contain values to be added to the incidence matrix \(\mathbf{W}\) (see the textbook). This idea is similar to the method used to support random regressions. Columns 7 and 8 are 0.0 if the animal is a parent and 0.5 otherwise. Column 9 is 1.0 if the animal is a parent and 0 otherwise.

The 10th column (the last column) contains a weight used to adjust the residual variance. For parent animals, the residual variance is \(\sigma_e^2 = 40\), and its inverse is \(1/\sigma_e^2 = 0.025\). For non-parent animals in this case, the residual variance should be \(\sigma_e^{2*}=\sigma_e^2+0.5\sigma_a^2= 40 + 0.5 \times 20 = 50\), and its inverse is \(1/\sigma_e^{2*} = 0.020\). If a non-parent animal has a missing parent, you should use a different weight for \(\sigma_a^2\) (see the textbook). We use WEIGHT(S) to alter the residual variances. The program reads the weight from the data file and multiplies it by the inverse of the residual variance. In our example, the weight is 1.0 for parent animals and 0.8 for non-parent animals because \(0.8 \times (1/\sigma_e^2) = 0.8 \times 0.025 = 0.020\), which is the correct value for non-parent animals.

One issue is how to add these constants to \(\mathbf{W}\). For a cross-classified effect, BLUPF90 can usually add only values equal to 1 to the incidence matrix for each record. To overcome this limitation, we use a special specification in the EFFECTS: block of the parameter file.

DATAFILE
mr43a.dat
NUMBER_OF_TRAITS
1
NUMBER_OF_EFFECTS
4
OBSERVATION(S)
5
WEIGHT(S)
10
EFFECTS:
2 2 cross
7 0 cov 3
8 0 cov 4
9 6 cov 6
RANDOM_RESIDUAL VALUES
40.0
RANDOM_GROUP
4
RANDOM_TYPE
add_animal
FILE
mr43a.ped
(CO)VARIANCES
20.0
OPTION solv_method FSPAK

In the EFFECTS: block, the last three statements pass values from the data file through the incidence matrix. These three effects are in one block, and only the last statement, 9 6 cov 6, specifies the number of levels (that is, the number of animals). For each statement, the program reads the value from the data file (the position is the first number on that line), recognizes it as a covariate because of the cov keyword, and places it in the location in the design matrix corresponding to an animal ID (the location is defined by the number after cov).

Let’s see what happens when the program processes these three statements for each record. We consider the first line of the data file.

4 1 1 0 4.5       4 0.0 0.0 1.0        1.0

After this processing, the first row in \(\mathbf{W}\) should be as follows. \[ \left[ \begin{array}{cccccc} 0.0&0.0&0.0&1.0&0.0&0.0 \end{array} \right] \]

Then we see the 4th line of the data file.

7 1 4 5 3.5       0 0.5 0.5 0.0        0.8

After this processing, the 4th row in \(\mathbf{W}\) should be as follows. \[ \left[ \begin{array}{cccccc} 0.0& 0.0& 0.0& 0.5& 0.5& 0.0 \end{array} \right] \]

A similar technique will be used in a competitive model (social-interaction model), which needs an incidence matrix with two or more nonzero elements in one row.

Solutions

The solutions are identical to those in the textbook (p. 81).

You can find other ways to implement the reduced animal model using the same technique described above. BLUPF90+ supports heterogeneous residual variances, which may simplify the implementation of the reduced animal model. Curious readers can try this method.

Back to index.html.