Covariance | R Documentation |
R6 Class representing a covariance function and data
R6 Class representing a covariance function and data
For the generalised linear mixed model
Y \sim F(\mu,\sigma)
\mu = h^-1(X\beta + Z\gamma)
\gamma \sim MVN(0,D)
where h is the link function, this class defines Z and D. The covariance is defined by a covariance function, data, and parameters. A new instance can be generated with $new(). The class will generate the relevant matrices Z and D automatically. See glmmrBase for a detailed guide on model specification.
**Intitialisation**
A covariance function is specified as an additive formula made up of
components with structure (1|f(j))
. The left side of the vertical bar
specifies the covariates in the model that have a random effects structure.
The right side of the vertical bar specify the covariance function 'f' for
that term using variable named in the data 'j'.
Covariance functions on the right side of the vertical bar are multiplied
together, i.e. (1|f(j)*g(t))
.
There are several common functions included for a named variable in data x
.
A non-exhaustive list (see glmmrBase for a full list):
* gr(x)
: Indicator function (1 parameter)
* fexp(x)
: Exponential function (2 parameters)
* ar(x)
: AR function (2 parameters)
* sqexp(x)
: Squared exponential (1 parameter)
* matern(x)
: Matern function (2 parameters)
* bessel(x)
: Modified Bessel function of the 2nd kind (1 parameter)
For many 2 parameter functions, such as 'ar' and 'fexp', alternative one parameter
versions are also available as 'ar0' and 'fexp0'. These function omit the variance
parameter and so can be used in combination with 'gr' functions such as 'gr(j)*ar0(t)'.
Parameters are provided to the covariance function as a vector. The parameters in the vector for each function should be provided in the order the covariance functions are written are written. For example, * Formula: '~(1|gr(j))+(1|gr(j*t))'; parameters: 'c(0.05,0.01)' * Formula: '~(1|gr(j)*fexp0(t))'; parameters: 'c(0.05,0.5)'
Updating of parameters is automatic if using the 'update_parameters()' member function.
Using 'update_parameters()' is the preferred way of updating the parameters of the mean or covariance objects as opposed to direct assignment, e.g. 'self$parameters <- c(...)'. The function calls check functions to automatically update linked matrices with the new parameters.
data
Data frame with data required to build covariance
formula
Covariance function formula.
parameters
Model parameters specified in order of the functions in the formula.
Z
Design matrix
D
Covariance matrix of the random effects
n()
Return the size of the design
Covariance$n()
Scalar
new()
Create a new Covariance object
Covariance$new(formula, data = NULL, parameters = NULL)
formula
Formula describing the covariance function. See Details
data
(Optional) Data frame with data required for constructing the covariance.
parameters
(Optional) Vector with parameter values for the functions in the model formula. See Details.
A Covariance object
\dontshow{ setParallel(FALSE) # for the CRAN check } df <- nelder(~(cl(5)*t(5)) > ind(5)) cov <- Covariance$new(formula = ~(1|gr(cl)*ar0(t)), parameters = c(0.05,0.7), data= df)
update_parameters()
Updates the covariance parameters
Covariance$update_parameters(parameters)
parameters
A vector of parameters for the covariance function(s). See Details.
print()
Show details of Covariance object
Covariance$print()
...
ignored
\dontshow{ setParallel(FALSE) # for the CRAN check } df <- nelder(~(cl(5)*t(5)) > ind(5)) Covariance$new(formula = ~(1|gr(cl)*ar0(t)), parameters = c(0.05,0.8), data= df)
subset()
Keep specified indices and removes the rest
Covariance$subset(index)
index
vector of indices to keep
\dontshow{ setParallel(FALSE) # for the CRAN check } df <- nelder(~(cl(10)*t(5)) > ind(10)) cov <- Covariance$new(formula = ~(1|gr(cl)*ar0(t)), parameters = c(0.05,0.8), data= df) cov$subset(1:100)
chol_D()
Returns the Cholesky decomposition of the covariance matrix D
Covariance$chol_D()
A matrix
log_likelihood()
The function returns the values of the multivariate Gaussian log likelihood with mean zero and covariance D for a given vector of random effect terms.
Covariance$log_likelihood(u)
u
Vector of random effects
Value of the log likelihood
simulate_re()
Simulates a set of random effects from the multivariate Gaussian distribution with mean zero and covariance D.
Covariance$simulate_re()
A vector of random effect values
sparse()
If this function is called then sparse matrix methods will be used for calculations involving D
Covariance$sparse(sparse = TRUE, amd = TRUE)
sparse
Logical. Whether to use sparse methods (TRUE) or not (FALSE)
amd
Logical indicating whether to use and Approximate Minimum Degree algorithm to calculate an efficient permutation matrix so that the Cholesky decomposition of PAP^T is calculated rather than A.
None. Called for effects.
parameter_table()
Returns a table showing which parameters are members of which covariance function term.
Covariance$parameter_table()
A data frame
nngp()
Reports or sets the parameters for the nearest neighbour Gaussian process
Covariance$nngp(nn = NULL)
nn
Integer. Number of nearest neighbours. Optional - leave as NULL to return details of the NNGP instead.
If 'nn' is NULL then the function will either return FALSE if not using a Nearest neighbour approximation, or TRUE and the number of nearest neighbours, otherwise it will return nothing.
hsgp()
Reports or sets the parameters for the Hilbert Space Gaussian process
Covariance$hsgp(m = NULL, L = NULL)
m
Integer or vector of integers. Number of basis functions per dimension. If only a single number is provided and there is more than one dimension the same number will be applied to all dimensions.
L
Decimal. The boundary extension.
If 'm' and 'L' are NULL then the function will either return FALSE if not using a Hilbert space approximation, or TRUE and the number of bases functions and boundary value, otherwise it will return nothing.
clone()
The objects of this class are cloneable with this method.
Covariance$clone(deep = FALSE)
deep
Whether to make a deep clone.
## ------------------------------------------------
## Method `Covariance$new`
## ------------------------------------------------
df <- nelder(~(cl(5)*t(5)) > ind(5))
cov <- Covariance$new(formula = ~(1|gr(cl)*ar0(t)),
parameters = c(0.05,0.7),
data= df)
## ------------------------------------------------
## Method `Covariance$print`
## ------------------------------------------------
df <- nelder(~(cl(5)*t(5)) > ind(5))
Covariance$new(formula = ~(1|gr(cl)*ar0(t)),
parameters = c(0.05,0.8),
data= df)
## ------------------------------------------------
## Method `Covariance$subset`
## ------------------------------------------------
df <- nelder(~(cl(10)*t(5)) > ind(10))
cov <- Covariance$new(formula = ~(1|gr(cl)*ar0(t)),
parameters = c(0.05,0.8),
data= df)
cov$subset(1:100)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.