WOMBAT – A program for Mixed Model Analyses by Restricted Maximum Likelihood

## What is: Pruning and pedigree reduction

• Q: What exactly does WOMBAT do to the pedigree information I supply?
• A: WOMBAT tries to condense' the pedigrees supplied as far as possible without loosing any information – this makes computations more efficient. There are two separate processes:

1. Pedigree reduction: In this step WOMBAT simply scans the data and pedigree files and eliminates any records from the pedigree file for individuals which are not in any way connected to an individual in the data. These do not supply any information – if they were left in the analysis, their estimated breeding values would be zero. The pedigree file for the remaining individuals is written out the file ''ReducedPed.dat''.
There is no run time option to switch this step off.
2. Pruning: There may be other individuals which do not contribute information (for variance component estimation) – these are individuals without records and a pedigree link to only one other individual. However, through the pedigree link, there is some information on their genetic value, i.e. if left in the analysis, their breeding value estimates would be non-zero. If one of these occurs as a sire or dam, WOMBAT replaces them with an 'unknown' code and eliminates them from the list of pedigree records. This pruning' is done recursively, until all such individuals are eliminated, and is done both from the top of the pedigree down (oldest to youngest) and from the bottom up (youngest to oldest).
Pruning can be switched off using the −−noprune run time option.

## Strange Behaviour: Almost linear convergence

• Q: I am running an analysis using the average information algorithm. I thought this was supposed to converge quadratically once it got sufficiently close to the maximum of the likelihood. However, my analysis is taking many, many iterates, each yielding only a small improvement – an almost linear convergence pattern as one might expect from the EM-algorithm. Any idea what is going on or how to improve on this?
• A: There are a number of typical reasons for such behaviour:
1. Your starting values for variances are very far off the mark.
2. You could have a numerical' problem. For instance, you might have a trait with very large or very small variance. If so, some scaling might be helpful (see manual).
3. You could have a data set which does not support estimation of the model you are trying to fit, i.e. a small data set or many parameters to be estimated. If you have a multivariate analysis with many traits, you might want to try a reduced rank analysis. For a random regression model, you might be able to reduce the order of fit or, again, reduce the rank of the covariance matrices to be estimated.
4. Your analysis might suffer from an ill-conditioned average information (AI) matrix, i.e. an AI matrix with an eigenvalue close to zero (which often indicates an over-parameterized model!) or a matrix where the largest eigenvalue is very much larger than the smallest. If so, WOMBAT attempts some damage control by modifying the AI matrix. The default is to add a small constant to the diagonal elements. Sometimes the guess for this constant is too large, slowing down convergence. This occurs especially if there is one very large eigenvalue, e.g. in a multi-trait analysis with many traits, whether you are estimating covariance matrices at reduced rank or not.
Things to look at and do:
• Check the norm of the gradient vector and the Newton decrement (columns 5 and 7 in the Iterates file). Are they reasonably small, i.e. is your analysis indeed at a point where you would normally expect quadratic convergence?
• Use the -v option to get WOMBAT to print out the values of the extreme eigenvalues. Is the smallest eigenvalue safely non-zero but less than unity and the largest eigenvalue more than ten thousand times larger? If so, WOMBAT may treat the AI matrix as ill-conditioned.
• Check column 8 in the Iterates file. This gives the step size multiplier. I would expect this to be consistently 1.000.
• Check the second last column in the Iterates file – this gives the constant which is added automatically.
• If this constant is non-zero, you could try making it smaller. For instance, the command line option −−modaim2,0.5 halves it, −−modaim2,0.1 reduces it to one tenth of the default value. NB: If you decrease this too much, you are likely to get strange jumps in parameter estimates and log likelihood values or the algorithm might fail altogether.
• Alternatively, try one of the other mechanisms available to deal with such an AI matrix which is not well-conditioned (see manual).

## Mac version

• Q: I am looking for a Mac version - why isn't there one?
• A: To compile a Mac version, I would need access to a Mac computer - which I don't have. I am told that either the Windows or Linux versions run o.k. in something like a Virtualbox guest environment. I am cross-compiling the Windows version under Linux, but have not found the equivalent for Mac - if you come across a simple way to compile under Linux for a Mac target, let me know.

UPDATE: A kind visitor compiled WOMBAT on his MAC - this is available for download now from http://didgeridoo.une.edu.au/km/wmbdownload1.php. NB: This is a “one-off” (July 2017) and will not be updated, nor are bug fixes possible.

## Running WOMBAT from within R

• Q: I want to run WOMBAT from within R - is that possible and how do I do it?
• A: Yes. Provided you have set up the relevant paths (so that R can find the WOMBAT executables) you can run WOMBAT like any other system command, e.g. system2(“wombat”,args=c(“-v”,“wombat.par”))`.

Of course all the usual input files must exist and you need to make sure that R is looking for them in the correct place.

## Who uses it?

• Q: Is anybody actually using WOMBAT? I have not seen any publications citing it - so it can't be any good.
• A: A number of people use it. Bear in mind that is was only reased in mid-2006. A small, but growing list of publications is here.
This list has last been updated sometime in early 2012.