View source: R/post.sign.switch.R
post.sign.switch | R Documentation |
This function performs a sign switch on the MCMC draws to restore the consistency of the signs of the factors loadings and of the correlations of the latent factors a posteriori.
post.sign.switch(mcmc, benchmark = NULL, benchmark.threshold = 0.5)
mcmc |
Object of class ' |
benchmark |
Vector of integers of length equal to the maximum number of latent
factors. Each element indicates which factor loading is used as a
benchmark for the sign switch. If |
benchmark.threshold |
Minimum posterior probability for a factor loading to be considered as a benchmark. |
The signs of the factor loadings, as well as of the corresponding
correlations of the latent factors, are switched for each MCMC iteration such
that the factor loadings defined as benchmark
s are positive. The sign
switch can only be performed if post.column.switch
has been run
before. See section 4.3 (p.42) of CFSHP for more details.
If a latent factor has no benchmarks, or if its benchmark is equal to zero at some MCMC iteration, then no sign switch is performed on the corresponding loadings and correlations for this particular factor or MCMC iteration.
Note that in complicated models where the sampler visits several models with
different numbers of latent factors, it may not be relevant to use the
default value of benchmark
, as the posterior probabilities that the
factor loadings are different from zero would be computed across models.
Instead, the user might consider finding the highest posterior probability
model first, and use its top elements in each column of the factor loading
matrix as benchmarks to perform the sign switch.
This function returns the same 'befa
' object, where the signs
of the factor loadings and of the factor correlations have been switched
appropriately to restore the identification of the factor model with respect
to sign switching.
Rémi Piatek remi.piatek@gmail.com
G. Conti, S. Frühwirth-Schnatter, J.J. Heckman, R. Piatek (2014): “Bayesian Exploratory Factor Analysis”, Journal of Econometrics, 183(1), pages 31-57, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.jeconom.2014.06.008")}.
post.column.switch
for column switching of the factor
loading matrix and of the correlation matrix of the latent factors to restore
identification a posteriori.
set.seed(6)
Y <- simul.dedic.facmod(N = 100, dedic = rep(1:3, each = 5))
mcmc <- befa(Y, Kmax = 5, iter = 1000)
mcmc <- post.column.switch(mcmc)
# factor loadings corresponding to variables 1, 6, 11, 12 and 13 are
# used as benchmarks:
mcmc1 <- post.sign.switch(mcmc, benchmark = c(1, 6, 11, 12, 13))
# factor loadings with the highest posterior probability of being different
# from zero in each column are used as benchmark:
mcmc2 <- post.sign.switch(mcmc)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.