Calculates the adjusted coefficient of determination (R2) that measures the contributions to the total variance exhibited by the observations of a specified combination of fixed and random terms in a fitted linear mixed model.
Note that the adjusted R2 can be negative, which indicates that the contribution of the terms to the total variance is very small relative to the sum of the degrees of freedom of the terms.
Piepho's (2023) method for GLMMs has not been implemented. This function is not available for ASReml-R version 3.
# S3 method for asreml
R2adj(asreml.obj,
include.which.fixed = ~ ., orthogonalize = "hybrid",
include.which.random = NULL,
bound.exclusions = c("F","B","S","C"), ...)
A numeric
that is the adjusted R2, expressed as a percentage. It has attributes
include.which.fixed
, include.which.random
and missing.termmatrix
(use attr(x, which = "name")
to access the attribute name
).
The missing.termmatrix
attribute will be NULL
, unless the design matrix
could not be obtained for one or more model terms. If is is not NULL
, it will be
a list of terms whose design matices could not be produced and so are not included in
the variance matrix estimate. An NA
will be returned for the adjusted R2 if
missing.termmatrix
is not NULL
or a generalized inverse could
not be computed for the variance matrix estimate.
An asreml
object returned from a call to asreml
.
A formula
specifying the fixed terms whose joint contribution
to the total variance is to be measured. If it is NULL
, no fixed term
is to be included in the terms whose joint contribution is to be assessed. The
formula
~ .
indicates that the joint contribution of all fixed
terms are to be measured. Otherwise, the joint contribution of the set of terms
specified by the formula
will be assessed. The formula
can
include a ".
", which means all fixed terms currently fitted, and is most likely
followed by a "-
" with a bracketed set of terms to be removed that can be
specified using formula
operators. The names of the resulting
terms must be the same as those in either the terms
attribute of the
fixed
component of the coefficient
component of the supplied
asreml.obj
, or the Wald table produced by wald.asreml
.
Note that the contribution of a subset of the fixed terms is only unique if the effects for the fixed terms are orthogonal; if the effects are not orthogonal then the contributions will depend on the order of the terms in the formula. Also, determining the joint contribution of a subset of the fixed terms in the model may be computationally demanding because the projection matrices have to be formed for all fixed terms and these projections matrices have to be orthogonalized. A heavy computational burden is most likely when the effects for the fixed terms are not orthogonal, for example, when numeric covariates are included amongst the terms.
A character
vector indicating the method for orthogonalizing a
projector to those for terms that occurred previously in the
formula
for include.which.fixed
. Orthogonalizing the
projectors of fixed terms is not performed for the default setting of
. ~
. WHen required, two options are available for orthogonalizing:
hybrid
and eigenmethods
. The hybrid
option is the most
general and uses the relationships between the projection operators for the
terms in the formula
to decide which projector
s to
subtract and which to orthogonalize using eigenmethods. The eigenmethods
option recursively orthogonalizes the projector
s
using an eigenanalysis of each projector
with previously orthogonalized projector
s.
See the documentation for porthogonalize.list
from the R package
dae
for more information.
A formula
specifying the random terms whose joint
contribution to the total variance is to be measured. If it is NULL
, no
random term is to be included in the terms whose joint contribution is to be assessed.
The formula ~ .
indicates that the joint contribution of all random terms is
to be measured. Otherwise, the joint contribution of the set of terms specified by
the formula
will be assessed. The formula
can
include a ".
", which means all random terms currently fitted, and is most likely
followed by a "-
" with a bracketed set of terms to be removed that can be
specified using formula
operators. The resulting terms must be one of
those occurring in either the vparameters
component of the supplied
asreml.obj
, or in the terms
attribute of the random
component of
the coefficient
component of the supplied asreml.obj
.
A character
specifying one or more bound codes that
will result in a variance parameter in the random
model being excluded
from contributing to the variance. If set to NULL
then none will
be excluded.
Provision for passing arguments to functions called internally - not used at present.
Chris Brien
The method used to compute the adjusted R2 under a linear mixes model (LMM) is that
described by Piepho (2023). Here, the method has been extended to allow computation
of the adjusted R2 for a subset of the fixed terms. A set of orthogonalized
projectors for all of the fixed terms in the model (a set of
\(\mathbf{Q}_i\mathrm{s}\)) is obtained and the combined contribution of the
fixed terms nominated in include.which.fixed
is obtained by computing the
average semisquared bias, ASSB, for the nominated fixed terms as:
$$\Sigma_i \{(\mathbf{Q}_i \mathbf{X}\boldsymbol{\beta})^\mathrm{T}\mathbf{Q}_i \mathbf{X}\boldsymbol{\beta} + \textnormal{trace}(\mathbf{X}^\mathrm{T} \mathbf{Q}_i \mathbf{X} \mathrm{var}(\boldsymbol{\beta})) \} / (n - 1)$$
Of the two methods, eigenmethods
is least likely to fail, but it does
not establish the marginality between the terms. It is often needed when
there is nonorthogonality between terms, such as when there are several linear
covariates. It can also be more efficient in these circumstances.
The process can be computationally expensive, particularly for a large data set (500 or more observations) and/or when many terms are to be orthogonalized, particularly if they are not orthogonal.
If the error "Matrix is not idempotent
" should occur then, especially if
there are many terms, one might try using set.daeTolerance
from the
dae
package to reduce the tolerance used in determining if values are
either the same or are zero; it may be necessary to lower the tolerance to as
low as 0.001. Also, setting orthogonalize
to eigenmethods
is
worth a try.
In doing the computations, no changes are made to the fitted model, nor is the
formula
stored in asreml.obj
referred to. Instead, the
names of the terms referred to are those stored in the coefficients
component of the asreml.obj
. Use
attr(asreml.obj$coefficients$fixed, which = "terms")
to access the attribute
for fixed terms; substitute random
for fixed
to see the names of the
random terms. For fixed terms. the term names are the same as those in the
Wald table produced by wald.asreml
, and, for random terms, the same as those
in the vparameters
component of the asreml.obj
. Two asreml
formula
functions whose terms can differ from their formulation in a
model formula
are at
and str
.)
The function estimateV.asreml
is used to calculate the variance matrices
required in calculating the adjusted R2.
Piepho, H.-P. (2023). An adjusted coefficient of determination (R2) for generalized linear mixed models in one go. Biometrical Journal, 65(7), 2200290. tools:::Rd_expr_doi("10.1002/bimj.202200290").
asreml
, estimateV.asreml
.
if (FALSE) {
data(Oats.dat)
current.asr <- asreml(Yield ~ Nitrogen*Variety,
random=~Blocks/Wplots,
data=Oats.dat)
R2.adj.fix <- R2adj.asreml(current.asr)
R2.adj.ran <- R2adj.asreml(current.asr,
include.which.fixed = NULL, include.which.random = ~ .)
R2.adj.tot <- R2adj.asreml(current.asr, include.which.random = ~ .)
R2.adj.tot <- R2adj.asreml(current.asr, include.which.random = ~ Blocks)
R2.adj.add <- R2adj.asreml(current.asr, include.which.fixed = ~ Nitrogen + Variety)
R2.adj.int <- R2adj.asreml(current.asr,
include.which.fixed = ~ . - (Nitrogen + Variety))
R2.adj.int <- R2adj.asreml(current.asr, include.which.fixed = ~ Nitrogen:Variety)
}
Run the code above in your browser using DataLab