interactionDL {infinitefactor} | R Documentation |
Factor regression model with interactions using the Dirichlet-Laplace shrinkage prior
Description
Perform a regression of y onto X and all 2 way interactions in X using the latent factor model introduced in Ferrari and Dunson (2020). This version uses the Dirichlet-Laplace shrinkage prior as in the original paper.
Usage
interactionDL(y, X, nrun, burn = 0, thin = 1,
delta_rw = 0.0526749, a = 1/2, k = NULL,
output = c("covMean", "covSamples", "factSamples",
"sigSamples", "coefSamples","errSamples"),
verbose = TRUE, dump = FALSE, filename = "samps.Rds",
buffer = 10000, adapt = "burn", augment = NULL)
Arguments
y |
response vector. |
X |
predictor matrix (n x p). |
nrun |
number of iterations. |
burn |
burn-in period. |
thin |
thinning interval. |
delta_rw |
metropolis-hastings proposal variance. |
a |
shrinkage hyperparameter. |
k |
number of factors. |
output |
output type, a vector including some of: c("covMean", "covSamples", "factSamples", "sigSamples", "coefSamples", "numFactors", "errSamples"). |
verbose |
logical. Show progress bar? |
dump |
logical. Save samples to a file during sampling? |
filename |
if dump: filename to address list of posterior samples |
buffer |
if dump: how often to save samples |
adapt |
logical or "burn". Adapt proposal variance in metropolis hastings step? if "burn", will adapt during burn in and not after. |
augment |
additional sampling steps as an expression |
Value
some of:
covMean |
X covariance posterior mean |
omegaSamps |
X covariance posterior samples |
lambdaSamps |
Posterior factor loadings samples (rotationally ambiguous) |
etaSamps |
Posterior factor samples (rotationally ambiguous) |
sigmaSamps |
Posterior marginal variance samples (see notation in Bhattacharya and Dunson (2011)) |
phiSamps |
Posterior main effect coefficient samples in factor form (rotationally ambiguous) |
PsiSamps |
Posterior interaction effect coefficient samples in factor form (rotationally ambiguous) |
interceptSamps |
Posterior induced intercept samples |
mainEffectSamps |
Posterior induced main effect coefficient samples |
interactionSamps |
Posterior induced interaction coefficient samples |
ssySamps |
Posterior irreducible error samples |
Author(s)
Evan Poworoznek
Federico Ferrari
References
Ferrari, Federico, and David B. Dunson. "Bayesian Factor Analysis for Inference on Interactions." arXiv preprint arXiv:1904.11603 (2019).
See Also
Examples
k0 = 5
p = 20
n = 50
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)
beta_true = numeric(p); beta_true[c(1,3,6,8,10,11)] =c(1,1,0.5,-1,-2,-0.5)
Omega_true = matrix(0,p,p)
Omega_true[1,2] = 1; Omega_true[5,2] = -1; Omega_true[10,8] = 1;
Omega_true[11,5] = -2; Omega_true[1,1] = 0.5;
Omega_true[2,3] = 0.5;
Omega_true = Omega_true + t(Omega_true)
y = X%*%beta_true + diag(X%*%Omega_true%*%t(X)) + rnorm(n,0.5)
intdl = interactionDL(y, X, 1000, 500, k = 5)