Title: | Spatio-Temporal Finite Mixture Model using 'TMB' |
---|---|
Description: | Fits a spatio-temporal finite mixture model using 'TMB'. Covariate, spatial and temporal random effects can be incorporated into the gating formula using multinomial logistic regression, the expert formula using a generalized linear mixed model framework, or both. |
Authors: | Andrea M. Havron [aut, cre, cph] |
Maintainer: | Andrea M. Havron <[email protected]> |
License: | GPL-3 |
Version: | 0.1.0 |
Built: | 2024-11-14 05:03:07 UTC |
Source: | https://github.com/andrea-havron/clusttmb |
Fit a finite mixture model using TMB
clustTMB( response = NULL, expertformula = ~1, gatingformula = ~1, expertdata = NULL, gatingdata = NULL, family = gaussian(link = "identity"), Offset = NULL, G = 2, rr = list(spatial = NULL, temporal = NULL, random = NULL), covariance.structure = NULL, Start = list(), Map = list(), initialization.args = list(control = init.options()), spatial.list = list(loc = NULL, mesh = NULL, init.range = list(gating.range = NULL, expert.range = NULL)), projection.dat = NULL, control = run.options() )
clustTMB( response = NULL, expertformula = ~1, gatingformula = ~1, expertdata = NULL, gatingdata = NULL, family = gaussian(link = "identity"), Offset = NULL, G = 2, rr = list(spatial = NULL, temporal = NULL, random = NULL), covariance.structure = NULL, Start = list(), Map = list(), initialization.args = list(control = init.options()), spatial.list = list(loc = NULL, mesh = NULL, init.range = list(gating.range = NULL, expert.range = NULL)), projection.dat = NULL, control = run.options() )
response |
A numeric vector, matrix, or data frame of observations. When data are multivariate, rows correspond to observations and columns correspond to the multivariate response. |
expertformula |
Formula defining expert model. This formula corresponds to the covariates included in the response densities. Defaults to intercept only (~1) when no covariates are used. |
gatingformula |
Formula defining gating model. This formula corresponds to the covariates included in the mixing proportions (logistic regression). Defaults to intercept only (~1) when no covariates are used. When a random effects term is included in the gating network, this formula will be updated so that the intercept term is removed. |
expertdata |
Data frame containing expert model covariates. |
gatingdata |
Data frame containing gating model covariates. |
family |
Statistical distribution and link function of observations. |
Offset |
Constant in expertformula only used to offset density expectation. |
G |
Integer specifying the number of clusters. |
rr |
List specifying dimension of rank reduction in spatial, temporal, and/or random effects. Dimension must be smaller than the total dimension of the response. Rank reduction is applied only to the expertformula random effects. The rank reduction reduces the dimensionality of a correlated multivariate response to a smaller dimension independent response. When used, the covariance structure of the response is switched to 'Diagonal.' Defaults to NULL, no rank reduction. If rank reduction is used in conjunction with a random effect, that random effect must also be specified in the expert formula. Currently, rank reduction on temporal random effects is disabled. |
covariance.structure |
A character string specifying the covariance structure of the response using mclust naming scheme. See description of modelNames under ?Mclust for details. |
Start |
Set initial values for random effects parameters (fixed and random terms) |
Map |
Vector indicating parameter maps, see ? |
initialization.args |
A list consisting of initialization settings used to generate initial values.
control Calls
|
spatial.list |
List of data objects needed when fitting a spatial GMRF model |
projection.dat |
Spatial Points class of projection coordinates or Spatial Points Dataframe containing projection coordinates and projection covariates |
control |
List controlling whether models are run and whether standard errors are calculated. |
list of objects from fitted model
data("faithful") m1 <- clustTMB(response = faithful, covariance.structure = "VVV") plot(faithful$eruptions, faithful$waiting, pch = 16, col = m1$report$classification + 1)
data("faithful") m1 <- clustTMB(response = faithful, covariance.structure = "VVV") plot(faithful$eruptions, faithful$waiting, pch = 16, col = m1$report$classification + 1)
Get fixed-effect coefficients
## S3 method for class 'clustTMB' coef(object, complete = FALSE, ...)
## S3 method for class 'clustTMB' coef(object, complete = FALSE, ...)
object |
The fitted clustTMB model |
complete |
Currently ignored |
... |
Currently ignored |
names numeric vector
Extract the AIC of a clustTMB model
## S3 method for class 'clustTMB' extractAIC(fit, scale, k = 2, ...)
## S3 method for class 'clustTMB' extractAIC(fit, scale, k = 2, ...)
fit |
The fitted clustTMB model |
scale |
The scale, currently ignored |
k |
Penalization parameter, defaults to 2 |
... |
Currently ignored |
numeric value
Fixed Covariance Structure names
fixStruct.names()
fixStruct.names()
character vector naming available fixed Covariance Structures
fixStruct.names()
fixStruct.names()
Initialization options with S3 classes
init.options( init.method = "hc", hc.options = list(modelName = "VVV", use = "SVD"), exp.init = list(mahala = TRUE), mix.method = "Gower kmeans", user.class = integer() )
init.options( init.method = "hc", hc.options = list(modelName = "VVV", use = "SVD"), exp.init = list(mahala = TRUE), mix.method = "Gower kmeans", user.class = integer() )
init.method |
Name of method used to set initial values. If init.method = 'user', must define 'user.class' with a classification vector. |
hc.options |
Model names and use when init.method is 'hc' following conventions of mclust::mclust.options() |
exp.init |
Turn on mahala initialization when expert network |
mix.method |
Initialization methods when data are mixed. Default method when data are Tweedie distributed. |
user.class |
Vector of classification vector set by user and required when init.method = 'user' |
list of initialization specifications
init.options() init.options(init.method = "hc") init.options(init.method = "mixed") init.options(init.method = "user", user.class = c(1, 1, 2, 1, 3, 3, 1, 2))
init.options() init.options(init.method = "hc") init.options(init.method = "mixed") init.options(init.method = "user", user.class = c(1, 1, 2, 1, 3, 3, 1, 2))
Extract the log likelihood of a clustTMB model
## S3 method for class 'clustTMB' logLik(object, ...)
## S3 method for class 'clustTMB' logLik(object, ...)
object |
The fitted clustTMB model |
... |
Currently ignored |
object of class logLik
with attributes
Lognormal family and link specification
lognormal(link = "identity")
lognormal(link = "identity")
link |
link function association with family |
An object of class "family"
fam <- lognormal() fam$family fam$link
fam <- lognormal() fam$family fam$link
Apply classification method dependent on init.method
mkInitClass(n.g, n.i, n.j, control, y)
mkInitClass(n.g, n.i, n.j, control, y)
n.g |
Number of clusters |
n.i |
Number of observations |
n.j |
Number of columns |
control |
Classification settings from |
y |
Observations |
classification vector
data("faithful") mkInitClass(2, nrow(faithful), ncol(faithful), init.options(), faithful)
data("faithful") mkInitClass(2, nrow(faithful), ncol(faithful), init.options(), faithful)
Parameter Information
parm.lookup()
parm.lookup()
Description of parameters, including dimension and structure
parm.lookup()
parm.lookup()
Invoke TMB's print.report function
## S3 method for class 'clustTMB' print(x, ...)
## S3 method for class 'clustTMB' print(x, ...)
x |
The fitted clustTMB model |
... |
Not used |
numeric matrix of parameter estimate and standard errors
Run Options
run.options(check.input = NULL, run.model = NULL, do.sdreport = NULL)
run.options(check.input = NULL, run.model = NULL, do.sdreport = NULL)
check.input |
TRUE: Return initial values before running TMB |
run.model |
FALSE: Return TMB object before optimizing model |
do.sdreport |
TRUE: Run delta method to obtain standard errors |
list
run.options()
run.options()
Calculates skewness
skewness(x)
skewness(x)
x |
numeric vector of values for which skewness is calculated |
skewness value of x
skewness(rgamma(100, 1, 1))
skewness(rgamma(100, 1, 1))
Parse a formula into fixed formula and random effect terms, treating 'special' terms appropriately
splitForm( formula, defaultTerm = "norm", allowFixedOnly = TRUE, allowNoSpecials = TRUE, debug = FALSE )
splitForm( formula, defaultTerm = "norm", allowFixedOnly = TRUE, allowNoSpecials = TRUE, debug = FALSE )
formula |
a formula containing special random effect terms |
defaultTerm |
default type for non-special RE terms |
allowFixedOnly |
(logical) are formulas with no RE terms OK? |
allowNoSpecials |
(logical) are formulas with only standard RE terms OK? |
debug |
(logical) debug? |
Taken from Steve Walker's lme4ord, ultimately from the flexLambda branch of lme4 https://github.com/stevencarlislewalker/lme4ord/blob/master/R/formulaParsing.R. Mostly for internal use.
a list containing elements fixedFormula
;
reTrmFormulas
list of x | g
formulas for each term;
reTrmAddArgs
list of function+additional arguments, i.e. list()
(non-special), foo()
(no additional arguments), foo(addArgs)
(additional arguments); reTrmClasses
(vector of special functions/classes, as character)
Steve Walker
splitForm(~x+y) ## no specials or RE splitForm(~x+y+(f|g)) ## no specials splitForm(~x+y+diag(f|g)) ## one special splitForm(~x+y+(diag(f|g))) ## 'hidden' special splitForm(~x+y+(f|g)+cs(1|g)) ## combination splitForm(~x+y+(1|f/g)) ## 'slash'; term splitForm(~x+y+(1|f/g/h)) ## 'slash'; term splitForm(~x+y+(1|(f/g)/h)) ## 'slash'; term splitForm(~x+y+(f|g)+cs(1|g)+cs(a|b,stuff)) ## complex special splitForm(~(((x+y)))) ## lots of parentheses splitForm(~1+rr(f|g,n=2))
splitForm(~x+y) ## no specials or RE splitForm(~x+y+(f|g)) ## no specials splitForm(~x+y+diag(f|g)) ## one special splitForm(~x+y+(diag(f|g))) ## 'hidden' special splitForm(~x+y+(f|g)+cs(1|g)) ## combination splitForm(~x+y+(1|f/g)) ## 'slash'; term splitForm(~x+y+(1|f/g/h)) ## 'slash'; term splitForm(~x+y+(1|(f/g)/h)) ## 'slash'; term splitForm(~x+y+(f|g)+cs(1|g)+cs(a|b,stuff)) ## complex special splitForm(~(((x+y)))) ## lots of parentheses splitForm(~1+rr(f|g,n=2))
Invoke TMB's summary.sdreport function
## S3 method for class 'clustTMB' summary( object, select = c("all", "fixed", "random", "report"), p.value = FALSE, ... )
## S3 method for class 'clustTMB' summary( object, select = c("all", "fixed", "random", "report"), p.value = FALSE, ... )
object |
The fitted clustTMB model |
select |
Parameter classes to select. Can be any subset of
|
p.value |
Add column with approximate p-values |
... |
Currently ignored |
numeric matrix of parameter estimate and standard errors
Tweedie family and link specification
tweedie(link = "log")
tweedie(link = "log")
link |
link function association with family |
An object of class "family"
fam <- tweedie() fam$family fam$link
fam <- tweedie() fam$family fam$link