| galamm | R Documentation |
This function fits a generalized additive latent and mixed model
(GALAMMs), as described in
\insertCitesorensenLongitudinalModelingAgeDependent2023;textualgalamm.
The building blocks of these models are generalized additive mixed models
(GAMMs) \insertCitewoodGeneralizedAdditiveModels2017galamm, of which
generalized linear mixed models
\insertCitebreslowApproximateInferenceGeneralized1993,harvilleMaximumLikelihoodApproaches1977,hendersonBestLinearUnbiased1975,lairdRandomEffectsModelsLongitudinal1982galamm
are special cases. GALAMMs extend upon GAMMs by allowing factor structures,
as commonly used to model hypothesized latent traits underlying observed
measurements. In this sense, GALAMMs are an extension of generalized linear
latent and mixed models (GLLAMMs)
\insertCiteskrondalGeneralizedLatentVariable2004,rabe-heskethGeneralizedMultilevelStructural2004galamm
which allows semiparametric estimation. The implemented algorithm used to
compute model estimates is described in
\insertCitesorensenLongitudinalModelingAgeDependent2023;textualgalamm,
and is an extension of the algorithm used for fitting generalized linear
mixed models by the lme4 package
\insertCitebatesFittingLinearMixedEffects2015galamm. The syntax used to
define factor structures is based on that used by the PLmixed
package, which is detailed in
\insertCiterockwoodEstimatingComplexMeasurement2019;textualgalamm.
galamm(
formula,
dispformula = NULL,
weights = NULL,
data,
family = gaussian,
family_mapping = NULL,
load_var = NULL,
load.var = NULL,
lambda = NULL,
factor = NULL,
factor_interactions = NULL,
na.action = getOption("na.action"),
start = NULL,
control = galamm_control()
)
formula |
A formula specifying the model. Smooth terms are defined in
the style of the |
dispformula |
An optional formula object specifying an expression for the
residual variance. Defaults to |
weights |
Deprecated. Use |
data |
A data.frame containing all the variables specified by the model formula, with the exception of factor loadings. |
family |
A family object specifying the response distribution of the
model. Currently |
family_mapping |
Deprecated. See the documentation to |
load_var |
Optional character specifying the name of the variable in
|
load.var |
Deprecated. Use |
lambda |
Optional factor loading matrix. Numerical values indicate that
the given value is fixed, while
|
factor |
Optional character vector whose |
factor_interactions |
Optional list of length equal to the number of
columns in |
na.action |
Character of length one specifying a function which
indicates what should happen when the data contains |
start |
Optional named list of starting values for parameters. Possible
names of list elements are |
control |
Optional control object for the optimization procedure of
class |
An object of type galamm as described in galammObject.
Other modeling functions:
galammObject,
gfam(),
s(),
t2()
# Mixed response model ------------------------------------------------------
# The mresp dataset contains a mix of binomial and Gaussian responses.
# We need to estimate a factor loading which scales the two response types.
loading_matrix <- matrix(c(1, NA), ncol = 1)
# Define mapping to families.
families <- gfam(list(gaussian, binomial))
# Fit the model
mod <- galamm(
formula = y ~ x + (0 + level | id),
data = mresp,
family = families,
factor = "level",
load_var = "itemgroup",
lambda = loading_matrix
)
# Summary information
summary(mod)
# Heteroscedastic model -----------------------------------------------------
# Residuals allowed to differ according to the item variable
# We also set the initial value of the random intercept standard deviation
# to 1
mod <- galamm(
formula = y ~ x + (1 | id), dispformula = ~ (1 | item),
data = hsced, start = list(theta = 1)
)
summary(mod)
# Generalized additive mixed model with factor structures -------------------
# The cognition dataset contains simulated measurements of three latent
# time-dependent processes, corresponding to individuals' abilities in
# cognitive domains. We focus here on the first domain, and take a single
# random timepoint per person:
dat <- subset(cognition, domain == 1)
dat <- split(dat, f = dat$id)
dat <- lapply(dat, function(x) x[x$timepoint %in% sample(x$timepoint, 1), ])
dat <- do.call(rbind, dat)
dat$item <- factor(dat$item)
# At each timepoint there are three items measuring ability in the cognitive
# domain. We fix the factor loading for the first measurement to one, and
# estimate the remaining two. This is specified in the loading matrix.
loading_matrix <- matrix(c(1, NA, NA), ncol = 1)
# We can now estimate the model.
mod <- galamm(
formula = y ~ 0 + item + sl(x, factor = "loading") +
(0 + loading | id),
data = dat,
load_var = "item",
lambda = loading_matrix,
factor = "loading"
)
# We can plot the estimated smooth term
plot_smooth(mod, shade = TRUE)
# Interaction between observed and latent covariates ------------------------
# Define the loading matrix
lambda <- matrix(c(1, NA, NA), ncol = 1)
# Define the regression functions, one for each row in the loading matrix
factor_interactions <- list(~1, ~1, ~x)
# Fit the model
mod <- galamm(
formula = y ~ type + x:response + (0 + loading | id),
data = latent_covariates,
load_var = "type",
lambda = lambda,
factor = "loading",
factor_interactions = factor_interactions
)
# The summary output now include an interaction between the latent variable
# and x, for predicting the third element in "type"
summary(mod)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.