Examples
The examples provided in this section are meant to provide a practical examples about the lmt facilities and the parameter file syntax. It is assumed that the reader is familiar with section
Solving linear mixed model equations
Estimating a mean
Estimating a mean is equivalent to obtaining the generalized least square solution $$b=(X'R^{-1}X)^{-1}X'R^{-1}y$$ for model $$y=Xb+e$$, where $$y$$ is a vector of $$n$$ observations, $$X$$ is as single column matrix of $$1$$, $$b$$ is a fixed factor (mean), $$e$$ is the residual and $$y\sim N(Xb,R)$$ where $$R$$ is a $$n \times n$$ co-variance matrix.
From the above it follows that for task of solving for $$b$$ lmt needs following information:
the data the residual variance $$R$$ the model the solver
Assume we have a data file "data.csv" with content:
#y,mu 25.0,1 33.1,1 36.0,1 28.3,1
where the columns are comma-separated, the first row is commented out with “#” but contains the header, and all other rows contain data records. A valid lmt xml parameter file would look like:
<root>
<jobs>
jobs: solve
<solve>
solver: my_solver
</solve>
</jobs>
<models>
<eqn attributes="strings">
y=mu*b
</eqn>
</models>
<data>
datafile: data.csv
missingthreshold: -50.0
</data>
<vars>
<res>
<sigma>
<matrix attributes="matrix">
5.0
</matrix>
</sigma>
</res>
</vars>
<solvers>
solvers: my_solver
<my_solver>
</my_solver>
</solvers>
</root>
Following the introduced parameterfile terminology tags , <vars> , <model> , <jobs> are automatic-compulsory. <solvers> is an automatic-optional tag because not every lmt job requires a solver.
The most important aspect is the model definition in tag <eqn> , nested inside tag <model> $$y=mu*b$$. The variable names used here are either defined by the data file header, or by the user. That is, $$y$$ and $$mu$$ are defined in the data file header, whereas $$b$$ is a user-defined factor name. Translated this means that the content of the data column named $$y$$ should be regressed on the content of the data column named $$mu$$ with the regression coefficient named $$b$$.
Since there are no further specifications supplied about $$y$$, $$mu$$ and $$b$$, it is assumed that $$y$$ is a continuous variable, $$mu$$ is a classification variable, and $$b$$ is fixed factor. The necessary variances are defined by the content of the automatic-compulsory tag <vars> . lmt requires one compulsory variance, the residual variance, which must be specified via tag <res> . Therefore tag res is automatic-compulsory.
The default lmt variance structure is $$\Gamma\otimes\Sigma$$, where $$\Gamma$$ and $$\Sigma$$ are specified inside tags <gamma> and <sigma> , respectively. However, only tag <sigma> is automatic-compulsory, whereas tag <gamma> is automatic-optional. A missing <gamma> tag implies that $$\Gamma = I$$.
For the above example, the variance specification inside <res> implies $$R=I\sigma_e^2$$.
Note tag <matrix> nested in tag <sigma> . The content of tag <matrix> does not comply with the formatting rules as pointed o ut above. That is 5.0 is not a valid key string. To let lmt know that the content of tag <matrix> should not be evaluated as a key string, with a subsequent error message, the tag must have attributes. In this example <matrix attributes="matrix"> .
Further, tag <matrix> is automatic-optional. This might be confusing because, as pointed out above, $$\Sigma$$ forms an indispensable part of $$\Gamma\otimes \Sigma$$. However, tag <matrix> belongs to a group of mutually exclusive information sources of which members are tag <matrix> and key string file: yourfilename . That is, $$\Sigma$$ maybe either embedded in the parameter file or supplied via an external file.
Note that the spelling of all tags used in the above parameter file is determined by lmt and must be abide by. However, for the sake of contrast, all words starting with my_ are user defined. For example the tag solvers contains key sting solvers: my_solver which nominates a nominated-compulsory tag <my_solver> to be invoked by lmt. Since tag <my_solver> contains no further tags or key strings the used solver will be the default solver running on default parameters. Subsequently the name "my_solver" is used in job solve to provide the job with a solver to fulfil the task.
Estimating a mean and genetic effects
Consider the linear model $$y=Xb+Zu+e$$ where all variables are those declared in #Estimating a mean, $$u$$ is vector of length $$m$$ of random direct genetic effects and $$Z$$ is a design matrix of dimension $$n \times m$$ linking genetic effects to their respective observations. Note that $$u\sim N(0,A\sigma_a^2)$$ where $$A$$ is the pedigree-derived relationship matrix. A possible data file for such mode may look like:
#y,mu,id 25.0,1,5 33.1,1,6 36.0,1,7 28.3,1,8
where the columns are comma-separated, the first row is commented out with “#” but contains the header, and all other rows contain data records. Further assume a pedigree in a file called "ped.csv" with content:
1,0,0 2,0,0 3,1,0 4,0,2 5,3,4 6,0,4 7,5,4 8,5,7
and a valid lmt parameter file:
<root>
<data>
file: data.csv
</data>
<pedigrees>
pedigrees: myped
<myped>
file: ped.csv
</myped>
</pedigrees>
<vars>
<res>
<sigma>
<matrix>
5.0
</matrix>
</sigma>
</res>
vars: myvar
<myvar>
<sigma>
file: mysigma.csv
</sigma>
<gamma>
<A>
pedigree: myped
</A>
</gamma>
</myvar>
</vars>
<model>
<eqn attributes="strings">
y = mu*b + id*u(v(myvar(1)))
</eqn>
</model>
<jobs>
jobs: solve
<solve>
solver: mysolver
</solve>
</jobs>
<solvers>
solvers: mysolver
<mysolver>
type: pcgiod
<pcgiod>
rounds: 10000
</pcgiod>
</mysolver>
</solvers>
</root>
Compared with the parameter file in example #Estimating a mean the one above contains only a few extra elements. One this the <pedigrees> tag spanning from line 5 to 10 and nested inside tag <root> . This tag contains a keystring pedigrees: myped , where the user-defined variables behind pedigrees: are a comma-separated list of tags nested inside <pedigrees>. The provision of that list triggers lmt to search and evaluate those tags. This concept allows to supply several pedigrees to lmt (e.g. a normal pedigree and a genetic group pedigree). In our example we have only one pedigree named myped, with tag <myped> containing the information about this pedigree. Another additional element is the keystring vars: myvar in line 19. Similar to tag <pedigrees> , tags nested inside tag <vars> are only evaluated if nominated behind vars: as a comma-separated list (e.g. vars: a,b,c), except for tag <res> , which is compulsory and evaluated automatically. Tag <myvar> consist of two structural components: <sigma> and <gamma> . We know <sigma> already from tag <res> . To understand the requirement for tag <gamma> we need to acknowledged that the variance for a random factor can be generalized as a Kronecker product.
Contrarily to the residual variance $$I\sigma_e^2$$, where $$I$$ can be safely omitted, $$A\sigma_a^2$$ has two components $$A$$ and $$\sigma_a^2$$ which both need to be declared. The section in the parameter file where the variances are declared spans from line 11 to line 30. It contains two variances, <res> and <myvar> . Since <res> is the residual variance it is compulsory and if missing lmt will stop. All other variances are only evaluated if the appear in in keystring vars: var1,var2,...,varN which in the above example is vars: myvar. Variance "myvar" contains two components: <sigma> and <gamma>