| Title: | Maximum One-Factor-at-a-Time Designs |
|---|---|
| Description: | Identifying important factors from a large number of potentially important factors in a highly nonlinear and computationally expensive black-box model is a difficult problem. Xiao, Joseph, and Ray (2022) <doi:10.1080/00401706.2022.2141897> proposed Maximum One-Factor-at-a-Time (MOFAT) designs for this purpose. A MOFAT design is a collection of one-factor-at-a-time (OFAT) designs constructed to achieve maximal screening capability. Song and Joseph (2026) <doi:10.48550/arXiv.2609.02087> extended the MOFAT framework to incorporate nominal and discrete numeric factors. The resulting designs are implemented in the mofatQQ function. Yu and Joseph (2026) <doi:10.48550/arXiv.2606.02533> proposed Space-Filling One-Factor-at-a-Time (SOFT) designs, which achieve optimal space-filling properties while retaining the screening capability. Therefore, SOFT designs are useful for both factor screening and surrogate modeling. The work on MOFAT is supported by a U.S. National Science Foundation (NSF) grant CMMI-1921646 <https://www.nsf.gov/awardsearch/show-award/?AWD_ID=1921646>, and the work on MOFATQQ and SOFT is supported by a U.S. NSF grant DMS-2310637. |
| Authors: | Difan Song [aut, cre], Wei-Yang Yu [aut], Qian Xiao [aut], V. Roshan Joseph [aut] |
| Maintainer: | Difan Song <[email protected]> |
| License: | GPL (>= 2) |
| Version: | 2.0 |
| Built: | 2026-10-26 23:30:44 UTC |
| Source: | https://github.com/cran/MOFAT |
Identifying important factors from a large number of potentially important factors in a highly nonlinear and computationally expensive black-box model is a difficult problem. Xiao, Joseph, and Ray (2022) doi:10.1080/00401706.2022.2141897 proposed Maximum One-Factor-at-a-Time (MOFAT) designs for this purpose. A MOFAT design is a collection of one-factor-at-a-time (OFAT) designs constructed to achieve maximal screening capability. Song and Joseph (2026) doi:10.48550/arXiv.2609.02087 extended the MOFAT framework to incorporate nominal and discrete numeric factors. The resulting designs are implemented in the mofatQQ function. Yu and Joseph (2026) doi:10.48550/arXiv.2606.02533 proposed Space-Filling One-Factor-at-a-Time (SOFT) designs, which achieve optimal space-filling properties while retaining the screening capability. Therefore, SOFT designs are useful for both factor screening and surrogate modeling. The work on MOFAT is supported by a U.S. National Science Foundation (NSF) grant CMMI-1921646 https://www.nsf.gov/awardsearch/show-award/?AWD_ID=1921646, and the work on MOFATQQ and SOFT is supported by a U.S. NSF grant DMS-2310637.
Maintainer: Difan Song [email protected]
Authors:
Difan Song [email protected]
Wei-Yang Yu [email protected]
Qian Xiao [email protected]
V. Roshan Joseph [email protected]
Construct an augmented SOFT (A-SOFT) design by combining a SOFT component with sequentially selected unrestricted space-filling points. The resulting design has the form
where is the initial SOFT design and
contains the augmented points.
a_soft( p, l, structure = "standard", n_aug, m = 500L, N = 10000L, backend = "auto", ofat_design = NULL )a_soft( p, l, structure = "standard", n_aug, m = 500L, N = 10000L, backend = "auto", ofat_design = NULL )
p |
number of factors; an integer of at least 2. Not required when
|
l |
even number of base runs; an integer of at least 2. Not required
when |
structure |
indicating the OFAT structure. Choose from
|
n_aug |
number of points to augment. |
m |
number of Sobol evaluation points for initial SOFT
optimization. The default is 500. Ignored when |
N |
size of the Sobol candidate pool for the sequential augmentation. The default is 10000. |
backend |
one of |
ofat_design |
|
When ofat_design = NULL, the SOFT component contains
runs, and the final design contains
runs. Alternatively, a user-supplied
initial design can be provided through ofat_design, in which case
the supplied design is held fixed and augmented directly.
The augmented points are selected sequentially from a Sobol candidate pool
by maximizing the criterion. The augmented points themselves are not constrained to
follow the OFAT structure. CPU and optional GPU computation are supported.
See Yu and Joseph (2026) for further details.
The initial SOFT design and the sequential augmentation use different kernel
scales for optimizing the criterion. For the initial SOFT optimization, the
kernel parameters are fixed internally at and
. During sequential augmentation, they are fixed at
and
.
Regardless of whether ofat_design is supplied, candidate bounds for the augmentation
are fixed at
.
A list with the following components:
design |
The design matrix containing the generated or supplied initial design followed by the sequentially augmented points. |
backend_used |
The computational backend actually used. |
device |
The CPU or GPU device used for computation. |
fallback_reason |
The reason for falling back to the CPU backend,
or |
Wei-Yang Yu and V. Roshan Joseph
Yu, W.-Y. and Joseph, V. R. (2026). Space-Filling One-Factor-At-A-Time Designs. doi:10.48550/arXiv.2606.02533
result <- a_soft(p = 2, l = 4, n_aug = 8) result$design existing <- mofat(p = 2, l = 4, method = "projection") extended <- a_soft(n_aug = 8, ofat_design = existing) extended$designresult <- a_soft(p = 2, l = 4, n_aug = 8) result$design existing <- mofat(p = 2, l = 4, method = "projection") extended <- a_soft(n_aug = 8, ofat_design = existing) extended$design
This function can be used for computing screening measures.
measure(design, y)measure(design, y)
design |
design matrix, which should have the Sobol' design structure |
y |
response vector |
The measure function computes the screening measures such as the total Sobol' indices (Sobol' 1993)
and measure of Campolongo et al. (2007). The design matrix should have the Sobol' design structure.
Please see Xiao et al. (2022) and Yu and Joseph (2026) for further details.
mustar |
|
t |
Total Sobol' index |
Wei-Yang Yu, Difan Song, Qian Xiao, and V. Roshan Joseph
Sobol’, I. M. (1993). On Sensitivity Estimation for Nonlinear Mathematical Models. Mathematical Modeling and Computational Experiments, 1, 407–414.
Campolongo, F., Cariboni, J., and Saltelli, A. (2007). An Effective Screening Design for Sensitivity Analysis of Large Models. Environmental Modelling and Software, 22, 1509–1518.
Xiao, Q., Joseph, V. R., and Ray, D. M. (2022). Maximum One-Factor-At-A-Time Designs for Screening in Computer Experiments. Technometrics, 65, 261–270.
Yu, W.-Y. and Joseph, V. R. (2026). Space-Filling One-Factor-At-A-Time Designs. doi:10.48550/arXiv.2606.02533
#Friedman function fun <- function (X) { Y <- 10*sin(pi*X[1]*X[2]) + 20*(X[3] - 0.5)^2 + 10*X[4] + 5*X[5] return(Y) } design = mofat(p=10, l=3) y = apply(design, 1, fun) #Screening measures measure(design, y)#Friedman function fun <- function (X) { Y <- 10*sin(pi*X[1]*X[2]) + 20*(X[3] - 0.5)^2 + 10*X[4] + 5*X[5] return(Y) } design = mofat(p=10, l=3) y = apply(design, 1, fun) #Screening measures measure(design, y)
This function can be used for generating MOFAT designs.
mofat(p, l, method = "best", nstart = 1, init = "MaxPro")mofat(p, l, method = "best", nstart = 1, init = "MaxPro")
p |
number of factors |
l |
number of base runs |
method |
choose among "uniform", "projection", and "best" |
nstart |
number of random starts used when |
init |
initialization method for the base matrix when |
The mofat function generates the MOFAT design
for a given number of factors () and
number of base runs (). The total number of runs in the MOFAT design will be .
A MOFAT design can be viewed as an optimized version of Morris screening design (Morris 1991) by exploiting
its connections with the Monte Carlo-based design of Sobol' (1993).
Please see Xiao et al. (2022) for details.
Three choices for the method are given: "uniform", "projection", and "best". Option "uniform" gives l equally-spaced levels
for the entire design, which are also balanced. "projection" option adjusts the levels of the two base matrices A and B such that
there are or levels in the design depending on l is even or odd. Option "best" (default) chooses the best
among the first two options using maximin distance criterion.
design |
MOFAT design |
Qian Xiao and V. Roshan Joseph
Morris, M. D. (1991), “Factorial sampling plans for preliminary computational experiments,” Technometrics, 33, 161–174.
Sobol’, I. M. (1993), “On sensitivity estimation for nonlinear mathematical models,” Mathematical Modeling and Computational Experiments, 1, 407–414.
Xiao, Q., Joseph, V. R., and Ray, D. M. (2022). “Maximum One-Factor-At-A-Time Designs for Screening in Computer Experiments”. Technometrics, 65, 261–270.
#MOFAT with three base runs mofat(p=10, l=3, method="uniform") mofat(p=10, l=3, method="projection") #MOFAT with five base runs mofat(p=10,l=5) dim(mofat(p=125,l=5))#MOFAT with three base runs mofat(p=10, l=3, method="uniform") mofat(p=10, l=3, method="projection") #MOFAT with five base runs mofat(p=10,l=5) dim(mofat(p=125,l=5))
Report whether the CPU, Metal, and CUDA backends were compiled and whether
they are usable in the current R process. CUDA probing includes helper ABI
validation and a small runtime self-test. Results are cached for the R
session unless refresh = TRUE is requested.
mofat_backend_info(refresh = FALSE)mofat_backend_info(refresh = FALSE)
refresh |
logical scalar. If |
A named list with cpu, metal, and cuda
components. Every component contains compiled, available,
device, and reason. CUDA additionally reports helper,
toolkit, runtime, driver, and compute-capability details when available.
info <- mofat_backend_info() vapply(info, function(x) isTRUE(x$available), logical(1)) info$cuda$reasoninfo <- mofat_backend_info() vapply(info, function(x) isTRUE(x$available), logical(1)) info$cuda$reason
This function generates MOFAT-based designs for continuous, discrete numeric, and nominal factors.
mofatQQ( l, p_continuous = 0, b_continuous = NULL, p_disnum = 0, l_disnum = NULL, p_nom = 0, l_nom = NULL, nstart = 1, ... )mofatQQ( l, p_continuous = 0, b_continuous = NULL, p_disnum = 0, l_disnum = NULL, p_nom = 0, l_nom = NULL, nstart = 1, ... )
l |
number of base runs |
p_continuous |
number of continuous factors |
b_continuous |
optional list of length |
p_disnum |
number of discrete numeric factors |
l_disnum |
specification of the discrete numeric levels. Supply either
a numeric vector giving the number of levels for each factor, or a list whose
|
p_nom |
number of nominal factors |
l_nom |
specification of the nominal levels. Supply either a numeric vector giving the number of levels for each nominal factor, or a list whose element lengths define the number of nominal levels. The returned design always encodes nominal factors as integer level labels |
nstart |
number of candidate mixed-factor designs to generate |
... |
additional arguments passed to |
The mofatQQ function first generates a base MOFAT design with
mofat, then transforms the columns according to factor type.
The total number of factors must be at least two.
Continuous factors are kept on the unit scale or rescaled to user-supplied
bounds. Discrete numeric factors are mapped either to integer levels or to
user-supplied numeric levels. Nominal factors are encoded by integer level
labels, and the nominal columns are placed to the right of the numeric
columns in the returned design.
Each discrete numeric and nominal factor must have at least two levels.
When nstart > 1, the function generates multiple candidate mixed
designs and selects the one with the smallest projected space-filling
criterion. In that criterion, continuous and discrete numeric distances are
measured on a rescaled numeric scale, while nominal differences are treated
as binary mismatches.
A design matrix with columns ordered as continuous, discrete numeric, and nominal factors. Nominal factors are returned as integer level labels.
Difan Song and V. Roshan Joseph
Xiao, Q., Joseph, V. R., and Ray, D. M. (2022). Maximum One-Factor-At-A-Time Designs for Screening in Computer Experiments. Technometrics, 65, 261–270.
Song, D., and Joseph, V. R. (2026). Efficient Screening Designs for Expensive Black-Box Models with Qualitative and Quantitative Factors. doi:10.48550/arXiv.2609.02087
# Mixed continuous and nominal factors D <- mofatQQ( l = 5, p_continuous = 2, b_continuous = list(c(-1, 1), c(0, 10)), p_nom = 1, l_nom = 3, nstart = 2, init = "rLHD" ) dim(D)# Mixed continuous and nominal factors D <- mofatQQ( l = 5, p_continuous = 2, b_continuous = list(c(-1, 1), c(0, 10)), p_nom = 1, l_nom = 3, nstart = 2, init = "rLHD" ) dim(D)
Evaluate the criterion for a given design. This criterion measures the design's space-filling performance
and serves as the objective function used to construct SOFT designs.
See Yu and Joseph (2026) for further details.
Q(alpha, beta, design, qmc, backend = "auto")Q(alpha, beta, design, qmc, backend = "auto")
alpha |
positive MIM kernel exponent. |
beta |
positive MIM kernel scale. |
design |
the design matrix. |
qmc |
the evaluation set. |
backend |
one of |
The criterion for a design is defined as
where is the evaluation set provided by qmc.
Here, and
, where
Larger values of indicate better space-filling performance.
A list with the following components:
Q |
the |
normalized_Q |
the normalized criterion defined as |
backend_used |
The computational backend actually used. |
Wei-Yang Yu and V. Roshan Joseph
Yu, W.-Y. and Joseph, V. R. (2026). Space-Filling One-Factor-At-A-Time Designs. doi:10.48550/arXiv.2606.02533
design <- soft(p = 2, l = 4)$design qmc <- qmc_generate(n = 1000, p = 2) Q(1, 1/(2*4)^2, design, qmc)design <- soft(p = 2, l = 4)$design qmc <- qmc_generate(n = 1000, p = 2) Q(1, 1/(2*4)^2, design, qmc)
Generate Sobol points and augment them with corner points to evaluate
the criterion. Duplicate points are removed from the resulting
evaluation set.
See Yu and Joseph (2026) for further details.
qmc_generate(n, p, threshold = 10)qmc_generate(n, p, threshold = 10)
n |
number of Sobol points. |
p |
number of factors. |
threshold |
dimension cutoff for corner augmentation. When
|
A matrix with p columns containing the unique Sobol
and corner evaluation points. The number of rows may differ from n
because corner points are added and duplicate rows are removed.
Wei-Yang Yu and V. Roshan Joseph
Yu, W.-Y. and Joseph, V. R. (2026). Space-Filling One-Factor-At-A-Time Designs. doi:10.48550/arXiv.2606.02533
qmc <- qmc_generate(n = 1000, p = 2)qmc <- qmc_generate(n = 1000, p = 2)
Generate a SOFT design under either the standard or strict OFAT structure.
For factors and base runs, the resulting design contains
runs. The design is constructed by maximizing the
criterion under either the standard or strict OFAT
structure. Computation can use an available GPU backend, with CPU execution
used when GPU acceleration is unavailable. See Yu and Joseph (2026) for
further details.
soft(p, l, structure = "standard", m = 500L, backend = "auto")soft(p, l, structure = "standard", m = 500L, backend = "auto")
p |
number of factors; an integer of at least 2. |
l |
even number of base runs; an integer of at least 2. |
structure |
indicating the OFAT structure. Choose from
|
m |
number of Sobol evaluation points generated before vertex augmentation. The default is 500. |
backend |
one of |
When optimizing , we set and internally.
A list with the following components:
design |
The SOFT design matrix. |
Q |
The |
normalized_Q |
The normalized criterion defined as |
qmc_size |
The number of unique evaluation points after adding corner points and removing duplicates.
This value may differ from the input |
backend_used |
The computational backend actually used. |
device |
The CPU or GPU device used for computation. |
fallback_reason |
The reason for falling back to the CPU backend,
or |
Wei-Yang Yu and V. Roshan Joseph
Yu, W.-Y. and Joseph, V. R. (2026). Space-Filling One-Factor-At-A-Time Designs. doi:10.48550/arXiv.2606.02533
result <- soft(p = 2, l = 4) result$designresult <- soft(p = 2, l = 4) result$design