The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

Package {mvBayes}


Type: Package
Title: Multivariate Bayesian Regression
Version: 1.2.1
Description: Fit, plot, and predict a multivariate response, using an arbitrary univariate Bayesian regression model to independently fit basis components (e.g., principal components) of the response (Francom et al., 2025 <doi:10.1137/24M1644092>).
License: MIT + file LICENSE
Imports: MASS, methods, BASS, latex2exp, cli, splines
Suggests: fdasrvf, BayesPPR, knitr, rmarkdown
Encoding: UTF-8
Config/roxygen2/version: 8.0.0
URL: https://github.com/sandialabs/mvBayesR
BugReports: https://github.com/sandialabs/mvBayesR/issues
VignetteBuilder: knitr
NeedsCompilation: no
Packaged: 2026-05-28 14:05:24 UTC; jdtuck
Author: Gavin Collins [aut, ctb], J. Derek Tucker ORCID iD [ctb, cre], Sandia National Laboratories [cph, fnd]
Maintainer: J. Derek Tucker <jdtuck@sandia.gov>
Repository: CRAN
Date/Publication: 2026-06-01 09:10:02 UTC

Basis Expansion Calculation

Description

Calculates a basis expansion of a specified type.

Usage

basisSetup(
  Y,
  basisType = "pca",
  customBasis = NULL,
  nBasis = NULL,
  propVarExplained = 0.99,
  center = TRUE,
  scale = FALSE
)

Arguments

Y

A matrix of dimension 'c(n, nMV)', where 'n' is the number of observations of 'nMV' response variables

basisType

The type of basis functions to use. Options are 'pca', 'pns', 'jfpca', 'jfpcah', 'splinet', 'bspline', or 'legendre'.

customBasis

Optional user-provided basis of dimension 'c(nBasis, nMV)', only used if 'basisType==custom'.

nBasis

integer number of basis components to use (optional). By default, 'propVarExplained' is used to choose nBasis.

propVarExplained

Proportion (between 0 and 1) of variation to explain when choosing the number of basis components. Only used if 'is.null(nBasis)'.

center

logical: whether or to center 'Y' before basis computations.

scale

logical: whether to scale 'Y' before basis computations.

Value

object of class 'basisSetup' with plot method.

See Also

Used by the main function mvBayes


Elastic FDA Basis Expansion Calculation

Description

Calculates a basis expansion of a functional data. Used by the mvBayes function to calculate a basis expansion of a response matrix.

Usage

basisSetupElastic(
  Y,
  warpData = NULL,
  basisType = "jfpcah",
  nBasis = NULL,
  propVarExplained = 0.99,
  srvf = FALSE
)

Arguments

Y

A matrix of dimension nxq, where n is the number of observations of q multivariate/functional variables

warpData

'time_warping' object from 'fdasrvf' if 'basisType=jfpca' or 'jfpcah'

basisType

The type of basis functions to use. Options are 'jfpca' or 'jfpcah'.

nBasis

An integer specifying the number of basis functions to use. The default is NULL, in which case propVarExplained is used to choose nBasis.

propVarExplained

Proportion (between 0 and 1) of variation to explain when choosing the number of principal components. Only used if nBasis is NULL (which is the default).

srvf

use SRVF if 'basisType=jfpca' or 'jfpcah' default = TRUE

Value

An object of class "basisSetup" containing information about the basis decomposition: "Y" is the original response matrix, "Ycenter" and "Yscale" are vectors of length q specifying the centering and scaling values used for each dimension of Y, "basisType" is the user-specified type of basis, the q-vector "varExplained" specifies the amount of variance explained by each basis in the expansion, matrix "basis" is the qxq basis matrix (e.g., the principal component vectors in the case of pca), "coefs" is the nxq matrix of observation-specific basis weights (e.g., the "scores" in the case of pca), and "truncError" is the nxq matrix of residuals, after accounting for the first nBasis bases.

See Also

Used by the main function mvBayes


Multivariate Bayesian Regression

Description

Wrapper to fit a multivariate response, using an arbitrary univariate Bayesian regression model to independently fit basis components (e.g., principal components) of the response.

Usage

mvBayes(
  bayesModel,
  X,
  Y,
  basisType = "pca",
  customBasis = NULL,
  nBasis = NULL,
  propVarExplained = 0.99,
  center = TRUE,
  scale = FALSE,
  nCores = 1,
  samplesExtract = NULL,
  residSDExtract = NULL,
  idxSamplesArg = "idxSamples",
  ...
)

Arguments

bayesModel

A Bayesian regression model-fitting function, with first argument taking an nxp input matrix or data.frame, and second argument taking an n-vector of numeric responses.

X

A matrix of predictors of dimension nxp, where n is the number of training examples and p is the number of inputs (features).

Y

A response matrix of dimension nxq, where q is the number of multivariate/functional responses.

basisType

The type of basis functions to use. Options are 'pca', 'pns', 'splinet', 'bspline', or 'legendre'.

customBasis

Optional user-provided basis of dimension 'c(nBasis, nMV)', only used if 'basisType==custom'.

nBasis

An integer specifying the number of basis functions to use. The default is NULL, in which case propVarExplained is used to choose nBasis.

propVarExplained

Proportion (between 0 and 1) of variation to explain when choosing the number of principal components. Only used if nBasis is NULL (which is the default).

center

A logical argument specifying whether or not to center the responses before computing the basis decomposition.

scale

A logical argument specifying whether or not to scale by the standard deviation of each component of the response before computing the basis decomposition.

nCores

An integer less than or equal to nBasis, specifying the number of threads to use when fitting independent Bayesian models.

samplesExtract

function taking the output of bayesModel ('bm') and extracting posterior samples of all parameters of interest. If 'NULL', mvBayes tries to access'bm$samples'; if unsuccessful, an object called 'samples' is created with attribute 'residSD'.

residSDExtract

function taking the output of bayesModel ('bm') and extracting posterior samples of the residual standard deviation ('residSD'). If 'NULL“, mvBayes tries to access 'bm$samples$residSD'; if unsuccessful, 'residSD' is the standard deviation of the residuals.

idxSamplesArg

str Name of an optional argument of 'predict' controlling which posterior samples are used for posterior prediction.

...

Additional arguments to bayesModel.

Details

First uses the basisSetup function to decompose the response into nBasis components, then independently fits bayesModel to each of those components.

Value

An object of class "mvBayes", which is a list containing "X", an object called "basisInfo" of class "basisSetup" containing information about the basis decomposition, "bayesModel", and "bmList", which contains a list of length nBasis containing fitted model objects for each basis component.

See Also

basisSetup for computing the basis decomposition, predict.mvBayes for prediction, plot.mvBayes for plotting the model fit, traceplot for monitoring posterior convergence, and mvSobol for sensitivity analysis.

Examples

## simulate data (Friedman function with first variable as functional)
f = function(x) {
  10 * sin(pi * x[, 1] * x[, 2]) + 20 * (x[, 3] - .5)^2 + 10 * x[, 4] + 5 *
    x[, 5]
}
sigma = 1 # noise sd
n = 500 # number of observations
n_grid = 50 # size of functional variable grid
t_grid = seq(0, 1, length.out = n_grid) # functional grid
X = matrix(runif(n * 9), n, 9) # 9 non-functional variables, only first 4 matter
X_expanded = cbind(rep(t_grid, each = n), kronecker(rep(1, n_grid), X)) # to get y
Y = matrix(f(X_expanded), nrow = n) + rnorm(n * n_grid, 0, sigma)

## fit Multivariate BASS
fit = mvBayes(
  BASS::bass, X, Y, nBasis = 3, # mvBayes parameters
  samplesExtract = function(bm) list(
    s2 = bm$s2,
    nbasis = bm$nbasis,
    beta.prec = bm$beta.prec
  ),
  idxSamplesArg = 'mcmc.use'
)


Multivariate Elastic FDA Bayesian Regression

Description

Wrapper to fit a elastic functional response, using an arbitrary univariate Bayesian regression model to independently fit basis components (e.g., principal components) of the response.

Usage

mvBayesElastic(
  bayesModel,
  X,
  Y,
  warpData = NULL,
  basisType = "jfpcah",
  nBasis = NULL,
  propVarExplained = 0.99,
  nCores = 1,
  samplesExtract = NULL,
  residSDExtract = NULL,
  idxSamplesArg = "idxSamples",
  srvf = FALSE,
  idx = NULL,
  ...
)

Arguments

bayesModel

A Bayesian regression model-fitting function, with first argument taking an nxp input matrix or data.frame, and second argument taking an n-vector of numeric responses.

X

A matrix of predictors of dimension nxp, where n is the number of training examples and p is the number of inputs (features).

Y

A response matrix of dimension nxq, where q is the number of multivariate/functional responses.

warpData

'time_warping' object from 'fdasrvf' if 'basisType=jfpca' or 'jfpcah'

basisType

The type of basis functions to use. Options are 'jfpca', 'jfpcah'.

nBasis

An integer specifying the number of basis functions to use. The default is NULL, in which case propVarExplained is used to choose nBasis.

propVarExplained

Proportion (between 0 and 1) of variation to explain when choosing the number of principal components. Only used if nBasis is NULL (which is the default).

nCores

An integer less than or equal to nBasis, specifying the number of threads to use when fitting independent Bayesian models.

samplesExtract

function taking the output of bayesModel ('bm') and extracting posterior samples of all parameters of interest. If 'NULL', mvBayes tries to access'bm$samples'; if unsuccessful, an object called 'samples' is created with attribute 'residSD'.

residSDExtract

function taking the output of bayesModel ('bm') and extracting posterior samples of the residual standard deviation ('residSD'). If 'NULL“, mvBayes tries to access 'bm$samples$residSD'; if unsuccessful, 'residSD' is the standard deviation of the residuals.

idxSamplesArg

str Name of an optional argument of 'predict' controlling which posterior samples are used for posterior prediction.

srvf

use SRVF if 'basisType=jfpca' or 'jfpcah' default = TRUE

idx

vector of indices to subset 'warpData'

...

Additional arguments to bayesModel.

Details

First uses the basisSetup function to decompose the response into nBasis components, then independently fits bayesModel to each of those components.

Value

An object of class "mvBayes", which is a list containing "X", an object called "basisInfo" of class "basisSetup" containing information about the basis decomposition, "bayesModel", and "bmList", which contains a list of length nBasis containing fitted model objects for each basis component.

See Also

basisSetup for computing the basis decomposition, predict.mvBayes for prediction, plot.mvBayes for plotting the model fit, traceplot for monitoring posterior convergence, and mvSobol for sensitivity analysis.


Cross-Validation (CV) of a Multivariate Bayesian Regression Model

Description

Wrapper to fit and perform cross-validation for a multivariate Bayesian regression model, using the mvBayes function.

Usage

mvCV(
  bayesModel,
  X,
  Y,
  kFolds = NULL,
  nRep = 1,
  nTrain = NULL,
  nTest = NULL,
  seed = NULL,
  coverageTarget = 0.95,
  idxSamples = "all",
  uqTruncMethod = c("gaussian", "empirical"),
  ...
)

Arguments

bayesModel

A Bayesian regression model-fitting function, with first argument taking an nxp input matrix or data.frame, and second argument taking an n-vector of numeric responses.

X

A matrix of predictors of dimension nxp, where n is the total number of examples (including training and test sets) and p is the number of inputs (features).

Y

A response matrix of dimension nxq, where q is the number of multivariate/functional responses.

kFolds

Number of test sets to partition data. If kFolds=NULL (default), test sets are instead formed by random sample, via the nReps, nTrain, and nTest arguments.

nRep

Number of repetitions of CV process. Only used when kFolds=NULL (default).

nTrain

Number of examples to use in the training set. Only used when kFolds=NULL (default). If nTrain=NULL, nTrain is set to n - nTest; unless nTest is also NULL, in which case nTrain is set to ceiling(n/2).

nTest

Number of examples to use in the test set. Only used when kFolds=NULL (default). If nTest=NULL, nTest is set to n - nTrain.

seed

Randomization seed, for replication of the train/test split. The seed is un-initialized immediately after assigning the train/test split. If NULL, no seed is set.

coverageTarget

level of coverage desired (default: 0.95)

idxSamples

which samples to use in CV (default: "all")

uqTruncMethod

method to use for UQ truncation (c("gaussian", "empirical"))

...

Additional arguments to mvBayes, including arguments to bayesModel.

Details

First separates the data into randomly chosen test and training sets (user-specified train/test splits and k-fold cv are forthcoming), then fits mvBayes(bayesModel, X, Y, ...) to the training set and evaluates predictive performance on the test set. Repeats this process nRep times.

Value

An object of class "mvBayesCV", which is a list containing the out-of-sample rmse for each replication, the fitting and prediction times, and the function call. Other prediction metrics, including coverage of prediction intervals, are forthcoming.

See Also

mvBayes, predict.mvBayes for prediction


Sobol' Indices for Multivariate Response

Description

Given an object of class "mvBayes" from the mvBayes() function, mvSobol() calculates the Sobol' indices for each input variable, assuming the response is multivariate. Currently only works if object$bayesModel is the BASS::bass() function, or if object$bayesModel is compatible with the anova() function.

Usage

mvSobol(
  object,
  totalSobol = TRUE,
  idxSamples = "final",
  nMC = NULL,
  showPlot = FALSE,
  ...
)

Arguments

object

An object of class "mvBayes" containing the multivariate Bayesian model fit for a specific basis expansion of a response matrix Y.

totalSobol

whether to compute the total Sobol' index (summing all interactions)

idxSamples

Use final MCMC sample

nMC

Number of Monte Carlo iterations to compute, if None will attempt 'anova' if available. Parameter is log2( n ), i.e., it makes 2^n points

showPlot

whether to compute generate a plot along with the returned Sobol' object

...

Additional arguments to BASS::sobolBasis (other emulator-specific Sobol' calculations to be implemented in the future). Unnecessary for anova-compatible models.

Value

An object of class "bassSob" if object$bayesModel is the BASS::bass() function, or "mvSobol" otherwise. Contains information about the Sobol' decomposition: See ?BASS::sobolBasis for more info.

See Also

See mvBayes


Visualizing the Basis Decomposition

Description

Given an object of class "basisSetup" from the basisSetup() function, plot.basisSetup() visualizes the decomposition, colored by basis.

Usage

## S3 method for class 'basisSetup'
plot(
  x,
  nBasis = NULL,
  propVarExplained = NULL,
  nPlot = NULL,
  idxMV = NULL,
  xscale = "linear",
  xlabel = "Multivariate Index",
  file = NULL,
  title = NULL,
  ...
)

Arguments

x

An object of class "basisSetup" containing information about a basis decomposition of a response matrix Y.

nBasis

An integer specifying the number of basis functions to plot. If both nBasis and propVarExplained are NULL, object$nBasis is used, but anything <= object$nbasis is allowed.

propVarExplained

Proportion (between 0 and 1) of variation to represent when choosing the number of bases to plot. It is only used if nBasis is NULL. If both are NULL, object$nBasis bases are plotted.

nPlot

A positive integer specifying the number of samples to plot. Default is min(n, 1000), where n is nrow(Xtest) (or nrow(object$X) if Xtest is NULL).

idxMV

A vector describing time indices

xscale

string whether to plot on a "linear" scale or "log"

xlabel

string for the xlabel

file

An optional location at which the plot will be saved. If NULL, no file is saved.

title

An optional title to be printed at the top of the plot.

...

additional plot arguments

Value

Top left: response Y. Top right: Y decomposed and colored by basis. Bottom left: Truncation error due to dimension reduction in the representation of Y. Bottom right: Percent variance explained by each basis.

See Also

See mvBayes


Plot the Bayesian Model Fit of a Multivariate Response

Description

Given an object of class "mvBayes" from the mvBayes() function, plot.mvBayes() plots a few aspects of the Bayesian model fit, colored by basis.

Usage

## S3 method for class 'mvBayes'
plot(
  x,
  Xtest = NULL,
  Ytest = NULL,
  idxSamples = "final",
  nPlot = NULL,
  idxMV = NULL,
  xscale = "linear",
  xlabel = "Multivariate Index",
  title = NULL,
  file = NULL,
  ...
)

Arguments

x

An object of class "mvBayes" containing the multivariate Bayesian model fit of a response matrix Y.

Xtest

A matrix or data.frame of inputs at which the model fit will be evaluated. If NULL, the training inputs X will be used.

Ytest

A matrix of responses for which the model fit will be evaluated. Should correspond to Xtest. If NULL, the training responses Y will be used.

idxSamples

str which samples to use

nPlot

A positive integer specifying the number of samples to plot. Default is min(n, 1000), where n is nrow(Xtest) (or nrow(object$X) if Xtest is NULL).

idxMV

A vector describing the sample points

xscale

'linear' or 'log' of x-axis

xlabel

str for x-axis label

title

An optional title to be printed at the top of the diagnostic plots.

file

An optional location at which the plot will be saved. If NULL, no file is saved.

...

additional plot arguments

Value

Top left: Residuals after applying mvBayes(), plotted on top of Ytest (centered if centered=TRUE in the mvBayes() call). Top right: Residuals decomposed and colored by basis. Bottom left: R^2 values for each component. Bottom right:

See Also

See mvBayes, predict.mvBayes


Plot Sobol Decomposition

Description

Given an object of class "mvSobol" from the mvSobol() function

Usage

## S3 method for class 'sobol'
plot(
  x,
  totalSobol = TRUE,
  labels = NULL,
  idxMV = NULL,
  xscale = "linear",
  xlabel = "Multivariate Index",
  yOverlay = NULL,
  yOverlayLabel = "Overlay",
  waterfall = FALSE,
  title = NULL,
  file = NULL,
  ...
)

Arguments

x

An object of class "mvSobol" containing the Sobol Indices

totalSobol

A boolean to plot the total sobol (default = 'TRUE')

labels

A character vector of length <= 8 containing the names of the parameters

idxMV

A vector defining the time points

xscale

string whether to plot on a "linear" scale or "log"

xlabel

string for the xlabel

yOverlay

A boolean if to overlay the experimental function (default = 'NULL')

yOverlayLabel

A string defining the overlay label

waterfall

bool whether to plot sobol as a waterfall (functional pie-chart) default ('FALSE')

title

An optional title to be printed at the top of the traceplots.

file

An optional location at which the plots will be saved. If NULL, no file is saved.

...

additional plot arguments

Value

no return value

See Also

See mvBayes


Posterior Predictive Samples of a Multivariate Response

Description

Given an object of class "mvBayes" from the mvBayes() function, predict.mvBayes() obtains posterior predictive samples at specific input locations. Residual variance from the basis truncation can (optionally) be inserted as well.

Usage

## S3 method for class 'mvBayes'
predict(
  object,
  Xtest,
  idxSamples = "default",
  addResidError = FALSE,
  addTruncError = FALSE,
  returnPostCoefs = FALSE,
  idxSamplesArg = NULL,
  ...
)

Arguments

object

An object of class "mvBayes" containing the multivariate Bayesian model fit of a response matrix Y.

Xtest

A matrix or data.frame of inputs at which predictions are desired.

idxSamples

A str describing which samples to use

addResidError

A logical to add back in residual error

addTruncError

A logical indicating whether or not to insert random truncation error into the predictions, where the truncation comes from the reduced dimensionality in the representation of Y.

returnPostCoefs

A logical indicating whether or not to output predictions of Ynew (i.e., the observation-specific basis weighting) in addition to predictions of Y.

idxSamplesArg

str Name of an optional argument of 'predict' controlling which posterior samples are used for posterior prediction.

...

Additional arguments to predict.bayesModel, where "bayesModel" is the Bayesian model used in fitting, specified in object$bayesModel.

Value

If getpostCoefs==FALSE, predict.mvBayes() outpus an array of dimension c(nSamples, ntest, nMV), where nSamples is the number of posterior samples obtained in fitting bayesModel, and n and nMV are respectively the number of rows and columns in Y. Elements of this array are posterior predictive samples of Y. Otherwise, a list of length two is output, with elements Ypost giving samples from the posterior predictive distribution of Y, and postCoefs givine samples from the posterior predictive distribution of Ynew, i.e., from the observation-specific basis weights.

See Also

See mvBayes


Traceplots from the Bayesian Model Fit of a Multivariate Response

Description

Given an object of class "mvBayes" from the mvBayes() function, traceplot() plots traceplots of user-specified variables from the Bayesian model fit, colored by basis.

Usage

traceplot(
  object,
  modelParams = NULL,
  labels = NULL,
  title = NULL,
  file = NULL,
  ...
)

Arguments

object

An object of class "mvBayes" containing the multivariate Bayesian model fit of a response matrix Y.

modelParams

A character vector of length <= 8 containing the names of the parameters for which traceplots will be made. If NULL, selects "plottable" attributes of object$bmList[[1]].

labels

A character vector of the same length as modelParams, containing the y-axis labels that will be printed for each traceplot. The default is to simply use "modelParams".

title

An optional title to be printed at the top of the traceplots.

file

An optional location at which the traceplots will be saved. If NULL, no file is saved.

...

additional plot arguments

Value

no return value

See Also

See mvBayes

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.
Health stats visible at Monitor.