Define a Common Latent Factor for the dynamite Model.
Define a Common Latent Factor for the dynamite Model.
This function can be used as part of a 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 λiψt for each group i.
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. Default is FALSE.
flip_sign: [logical(1)]
If TRUE (default), try to avoid multimodality due to sign-switching by defining the sign of λ
and ψ based on the mean of ω1,…,ωD
coefficients. This only affects channels with nonzero_lambda = FALSE. If the true mean of ωs is close to zero, this might not help, in which case it is better to set flip_sign = FALSE and post-process the samples in other ways (or use only one chain and/or suitable initial values). This argument is common to all factors.
Returns
An object of class latent_factor.
Examples
data.table::setDTthreads(1)# For CRAN# three channel model with common factor affecting for responses x and yobs(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)
See Also
Model formula construction dynamite(), dynamiteformula(), lags(), random_spec(), splines()