| 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] (ORCID: <https://orcid.org/0000-0002-4080-448X>) |
| Maintainer: | Andrea M. Havron <[email protected]> |
| License: | GPL-3 |
| Version: | 0.1.0 |
| Built: | 2026-06-03 06:34:35 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$linkfam <- 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$linkfam <- tweedie() fam$family fam$link