Description
own: specifies an external function that provides a variance matrix, or its inverse, and the respective derivative matrices with respect to the parameters.
Usage
own(obj, fun, init=NULL, type=NULL, con=NULL)
Arguments
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. |
Details
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.
Examples
## Not run: ## An own ar1 function data(shf) ar1.asr <- asreml(yield ~ Variety, residual = ~ar1(Row):own(Column,"ar1",0.1,"R"), data=shf) ## 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)