Specifying correlation structures
covStruct
is a formal argument of HLCor
, also handled by fitme
and corrHLfit
, that allows one to specify the correlation structure for different types of random effects, It is an alternative to other ad hoc formal arguments such as corrMatrix
or adjMatrix
. It replaces the deprecated function Predictor(...)
which has served as an interface for specifying the design matrices for random effects in early versions of spaMM
.
The main use of covStruct
is to specify the correlation matrix of levels of a given random effect term, or its inverse (a precision matrix). Assuming that the design matrix of each random effect term follows the structure ZAL described in random-effects
, it is thus an indirect way of specifying the “square root” L of the correlation matrix. The optional A factor can also be given by the optional "AMatrices"
attribute of covStruct
.
covStruct
is a list
of matrices with names specifying the type of matrix considered: covStruct=list(corrMatrix=<some matrix>)
or covStruct=list(adjMatrix=<some matrix>)
, where the “corrMatrix” or “adjMatrix” labels are used to specify the type of information provided (accordingly, the names can be repeated: covStruct=list(corrMatrix=<.>,corrMatrix=<.>)
).
NULL
list members may be necessary, e.g.covStruct=list(corrMatrix=<.>,"2"=NULL,corrMatrix=<.>)
)
when correlations matrices are required only for the first and third random effect.
The covariance structure of a corrMatrix(1|<grouping factor>)
formula term can be specified in two ways (see Examples): either by a correlation matrix factor (covStruct=list(corrMatrix=<some matrix>)
), or by a precision matrix factor Q such that the covariance factor is λQ^{-1}, using the type name "precision"
: covStruct=list(precision=<some matrix>)
.
The function as_precision
can be used to perform the conversion from correlation information to precision factor (using a crude solve() that may not always be efficient), but fitting functions may also perform such conversions automatically.
"AMatrices"
is a list of matrices. The names of elements of the list does not matter, but the ith A
matrix, and its row names, should match the ith Z matrix, and its column names. This implies that NULL
list members may be necessary, as for the covStruct
list.
as_precision(corrMatrix, condnum=1e12)
corrMatrix |
Correlation matrix, specified as |
condnum |
Numeric: when a standard Cholesky factorization fails, the matrix is regularized so that the regularized matrix has this condition number (in version 3.10.0 this correction has been implemented more exactly than in previous versions). |
covStruct
can also be specified as a list with an optional "types"
attribute, e.g.structure(list(<some matrix>,types="corrMatrix"))
.
as_precision
returns a list with additional class precision
and with single element a symmetric matrix of class dsCMatrix
.
## Not run: data("blackcap") # a 'dist' object can be used to specify a corrMatrix: MLdistMat <- MaternCorr(proxy::dist(blackcap[,c("latitude","longitude")]), nu=0.6285603,rho=0.0544659) # a 'dist' object! blackcap$name <- as.factor(rownames(blackcap)) fitme(migStatus ~ means + corrMatrix(1|name), data=blackcap, corrMatrix=MLdistMat) #### Same result by different input and algorithm: fitme(migStatus ~ means + corrMatrix(1|name), data=blackcap, covStruct=list(precision=as_precision(MLdistMat))) # Manual version of the same: as_mat <- proxy::as.matrix(MLdistMat, diag=1) prec_mat <- solve(as_mat) ## precision factor matrix fitme(migStatus ~ means + corrMatrix(1|name), data=blackcap, covStruct=list(precision=prec_mat)) # Since no correlation parameter is estimated, # HLcor(., method="ML") is here equivalent to fitme() ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.