Skip to contents

This function can be used as part of dynamiteformula() to define a common latent factor component. The latent factor is modeled as a spline similarly as a time-varying intercept, but instead of having equal effect on each group, there is an additional loading variable for each group so that in the linear predictor we have a term \(\lambda_i \psi_t\) for each group \(i\). In order to keep the full factor loadings \(\lambda\), the latent factor \(\psi\) and the full model identifiable, some restrictions are added to the model. Details will be available in an upcoming paper. This component should be treated as experimental feature.

Usage

lfactor(
  responses = NULL,
  nonzero_lambda = TRUE,
  correlated = TRUE,
  noncentered_psi = FALSE
)

Arguments

responses

[character()]
Names of the responses that the factor should affect. Default is all responses defined with obs except categorical responses, which do not (yet) support the factor component.

nonzero_lambda

[logical()]
If TRUE (the default), assumes that the mean of factor loadings is nonzero or not. Should be a logical vector matching the length of responses or a single logical value in case responses is NULL. See details.

correlated

[logical()]
If TRUE (the default), the latent factors are assumed to be correlated between channels.

noncentered_psi

[logical(1)]
If TRUE, uses a noncentered parametrization for spline coefficients of all the factors. The number of knots is based splines() call.

Value

An object of class latent_factor.

See also

Model formula construction dynamite(), dynamiteformula(), lags(), random_spec(), splines()

Examples

data.table::setDTthreads(1) # For CRAN
# three channel model with common factor affecting for responses x and y
obs(y ~ 1, family = "gaussian") +
  obs(x ~ 1, family = "poisson") +
  obs(z ~ 1, family = "gaussian") +
  lfactor(
    responses = c("y", "x"), nonzero_lambda = c(TRUE, FALSE),
    correlated = TRUE, noncentered_psi = FALSE
  )
#>   Family   Formula
#> y gaussian y ~ 1  
#> x poisson  x ~ 1  
#> z gaussian z ~ 1