The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
This package estimates heterogeneous effects in factorial and conjoint experiments. Its details are fully described in Goplerud, Imai, and Pashley (2025): “Estimating Heterogeneous Causal Effects of High-Dimensional Treatments: Application to Conjoint Analysis”.
The core method is a Bayesian regularized finite mixture-of-experts where moderators can affect an individual’s probability of cluster membership and a sparsity-inducing prior fuses together levels of each factor in each cluster while respecting ANOVA-style sum-to-zero constraints described in Egami and Imai (2019). The posterior mode is found using an AECM algorithm with a number of techniques to accelerate convergence. Approximate quantification of uncertainty is provided by examining the Hessian of the log-posterior. Additional details are explained in the paper and (briefly) in the package documentation.
It can be installed from CRAN or the most-to-update version can be
installed using devtools
. Note, macOS users may need to
ensure that XQuartz is installed; please see information from CRAN (here) for more
details.
# CRAN
install.packages("FactorHet")
# Up-to-Date GitHub Version
library(devtools)
devtools::install_github('mgoplerud/FactorHet')
There are two key functions for estimating the model: In most cases,
one will prefer to use the FactorHet_mbo
function to
jointly (i) estimate the amount of regularization by minimizing a
criterion such as the BIC using model-based optimization and (ii)
estimate the final model. However, if one has a specific value of
lambda
of interest, one can fit the model for a fixed
amount of regularization using FactorHet
. A simple example
is shown below:
fit_FH <- FactorHet_mbo(
formula = y ~ factor_1 + factor_2 + factor_1 : factor_2,
design = design,
moderator = ~ moderator_1 + moderator_2)
In the case of repeated observations, the individual is specified via
group
and the task identifier is specified via
task
. In the case of a conjoint experiment, the profile
identifier (i.e. “left” or “right”) is specified via
choice_order
. An example is shown below:
fit_FH <- FactorHet_mbo(
formula = y ~ factor_1 + factor_2 + factor_1 : factor_2,
design = design, moderator = ~ moderator_1 + moderator_2,
group = ~ id, task = ~ task, choice_order = ~ choice_left)
Finally, after fitting the model, there are functions to calculate the Average Marginal Effect (AME) and related concepts (e.g. ACE, AMIE). A simple example is shown below:
AME(fit_FH)
The effects of moderators on cluster membership can be analyzed using
two key functions; first, posterior_by_moderators
shows the
estimated distribution of (posterior) cluster membership probabilities
by covariates. Second, margeff_moderators
shows the change
in the prior cluster membership as one moderator changes, averaging
across all other moderators. This is similar to a marginal effect in a
multinomial logistic regression. Example code is shown below:
posterior_by_moderators(fit_FH)
margeff_moderators(fit_FH)
Some function names (e.g., AME
and
margeff_moderators
) have been changed for clarity from an
older verison of those package. Those functions should still run but
will throw a warning and should be updated in existing code.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.