infinitefactor-package {infinitefactor}R Documentation

Bayesian Infinite Factor Models

Description

Sampler and post-processing functions for semi-parametric Bayesian infinite factor models, motivated by the Multiplicative Gamma Shrinkage Prior of Bhattacharya and Dunson (2011) <https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3419391/>. Contains component C++ functions for building samplers for linear and 2-way interaction factor models using the multiplicative gamma and Dirichlet-Laplace shrinkage priors. The package also contains post processing functions to return matrices that display rotational ambiguity to identifiability through successive application of orthogonalization procedures and resolution of column label and sign switching. This package was developed with the support of the National Institute of Environmental Health Sciences grant 1R01ES028804-01.

Details

The DESCRIPTION file:

Package: infinitefactor
Type: Package
Title: Bayesian Infinite Factor Models
Version: 1.0
Date: 2020-03-30
Author: Evan Poworoznek
Maintainer: Evan Poworoznek <infinitefactorpackage@gmail.com>
Description: Sampler and post-processing functions for semi-parametric Bayesian infinite factor models, motivated by the Multiplicative Gamma Shrinkage Prior of Bhattacharya and Dunson (2011) <https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3419391/>. Contains component C++ functions for building samplers for linear and 2-way interaction factor models using the multiplicative gamma and Dirichlet-Laplace shrinkage priors. The package also contains post processing functions to return matrices that display rotational ambiguity to identifiability through successive application of orthogonalization procedures and resolution of column label and sign switching. This package was developed with the support of the National Institute of Environmental Health Sciences grant 1R01ES028804-01.
License: GPL-2
Imports: Rcpp (>= 1.0.2)
Depends: reshape2, ggplot2, stats, utils
LinkingTo: Rcpp, RcppArmadillo

Index of help topics:

amean                   Average over the third index of an array
del_mg                  Sampler Components
infinitefactor-package
                        Bayesian Infinite Factor Models
interactionDL           Factor regression model with interactions using
                        the Dirichlet-Laplace shrinkage prior
interactionMGSP         Factor regression model with interactions using
                        the Multiplicative Gamma Shrinkage Prior
jointRot                Resolve rotational ambiguity in samples of
                        factor loadings and factors jointly
linearDL                Sample Bayesian linear infinite factor models
                        with the Dirichlet-Laplace prior
linearMGSP              Sample Bayesian linear infinite factor models
                        with the Multiplicative Gamma Shrinkage Prior
lmean                   Average elements of a list
msf                     Resolve label and sign switching in random
                        matrix samples
plotmat                 Plot a matrix
summat                  Summarise a matrix from posterior samples

Perform sampling with the linearMGSP() and linearDL() functions for linear factor models, or interactionMGSP() and interactionDL() functions for factor regression models including 2-way interactions. See jointRot() or msf() for postprocessing.

Author(s)

Evan Poworoznek

Maintainer: Evan Poworoznek <infinitefactorpackage@gmail.com>

References

Bhattacharya, Anirban, and David B. Dunson. "Sparse Bayesian infinite factor models." Biometrika (2011): 291-306.

Bhattacharya, Anirban, et al. "Dirichlet-Laplace priors for optimal shrinkage." Journal of the American Statistical Association 110.512 (2015): 1479-1490.

Ferrari, Federico, and David B. Dunson. "Bayesian Factor Analysis for Inference on Interactions." arXiv preprint arXiv:1904.11603 (2019).

Examples

k0 = 5
p = 20
n = 100

lambda = matrix(rnorm(p*k0, 0, 0.01), ncol = k0)
lambda[sample.int(p, 40, replace = TRUE) +
         p*(sample.int(k0, 40, replace = TRUE)-1)] = rnorm(40, 0, 1)
lambda[1:7, 1] = rnorm(7, 2, 0.5)
lambda[8:14, 2] = rnorm(7, -2, 0.5)
lambda[15:20, 3] = rnorm(6, 2, 0.5)
lambda[,4] = rnorm(p, 0, 0.5)
lambda[,5] = rnorm(p, 0, 0.5)
plotmat(varimax(lambda)[[1]])

X = matrix(rnorm(n*k0),n,k0)%*%t(lambda) + matrix(rnorm(n*p), n, p)

out = linearMGSP(X = X, nrun = 1000, burn = 500, adapt = FALSE)

aligned = jointRot(out$lambdaSamps, out$etaSamps)

plotmat(lmean(aligned$lambda))

[Package infinitefactor version 1.0 Index]