1. Home
  2. ASReml-R 4 Commands
  3. own – User-defined variance models

own – User-defined variance models


own: specifies an external function that provides a variance matrix, or its inverse, and the respective derivative matrices with respect to the parameters.


own(obj, fun, init=NULL, type=NULL, con=NULL)

obj A factor in data.
fun The name (as a character string) of an R function to compute the variance matrix and its derivatives. This function must accept two input arguments:
order – A scalar giving the dimension of the structure being defined;
kappa – A numeric vector of 1, …, k parameter values;
and return a list of k+1 matrices: the variance matrix, or its inverse, followed by the k derivative matrices. This list may have an attribute INVERSE, a logical scalar identifying the structures as variance matrices or their inverses; if INVERSE is absent the default is FALSE.
init The k-vector of parameter values.
type A character vector defining the type of each parameter from the set “V“, “G“, “R“, “C“, “P” and “L“, identifying each parameter as type variance, variance-ratio, correlation, covariance, positive correlation or loading, respectively.
con A character vector from the set “F“, “P” or “U” setting the boundary constraint for each parameter to Fixed, Positive or Unconstrained, respectively. The default is “U” for all types except “P” for type positive correlation.

The own variance model allows users to specify external variance structure(s). This requires the user to provide an R function that accepts the current set of parameters, forms the variance matrix and a full set of derivative matrices, and return these in a list object. The R function may invoke compiled code if necessary. Before each iteration, asreml calls the nominated function with the current parameter estimates to update the variance matrix and derivatives.

## Not run: 
## An own ar1 function
ar1.asr <- asreml(yield ~ Variety,
       residual = ~ar1(Row):own(Column,"ar1",0.1,"R"),

## where the function 'ar1' is defined as:

## ar1 <- function(order, kappa) {
## t <- 1:order
## H <- abs(outer(t,t,"-"))
## V <- kappa^H
## ## derivative
## dV <- H*(kappa^(H-1))
## return(list(V, dV))
## }

## End(Not run)
Updated on August 8, 2018

Was this article helpful?

Related Articles