dBH_mvgauss | R Documentation |
dBH_mvgauss
computes the rejection set of dBH_\gamma(\alpha)
and dBH^2_\gamma(\alpha)
, as well as
dSU_{\gamma, \Delta}(\alpha)
and dSU^2_{\gamma, \Delta}(\alpha)
a broad class of step-up procedures for
multivariate z-statistics z\sim N(\mu, \Sigma)
. dBH_mvgauss
can handle both one-sided tests
H_i: \mu_i \le 0
or H_i: \mu_i \ge 0
, and two-sided tests H_i: \mu_i = 0
.
dBH_mvgauss(
zvals,
Sigma = NULL,
Sigmafun = NULL,
vars = NULL,
side = c("right", "left", "two"),
alpha = 0.05,
gamma = NULL,
niter = 1,
tautype = "QC",
avals = NULL,
avals_type = c("BH", "geom", "bonf", "manual"),
geom_fac = 2,
eps = 0.05,
qcap = 2,
gridsize = 20,
exptcap = 0.9,
is_safe = NULL,
verbose = FALSE
)
zvals |
a vector of z-values. The marginal variances do not have to be 1. |
Sigma |
the covariance matrix. For very large m, it is preferable to use |
Sigmafun |
the function that takes the row index as the input and outputs the i-th row of the covariance matrix
divided by |
vars |
the vector of marginal variances |
side |
a string that takes values in {"right", "left", "two"}, with "right" for one-sided tests
|
alpha |
the target FDR level. |
gamma |
the parameter for the dBH and dSU procedures. The default is |
niter |
the number of iterations. In the current version it can only be 1, for dBH/dSU, or 2, for
|
tautype |
the type of tau function. In the current version, only "QC" (q-value-calibration) is supported with
|
avals |
the a-values in the step-up procedures defined in Appendix C.1. The default is NULL, in which case
|
avals_type |
a string that takes values in {"BH", "geom", "bonf", "manual"}, which determines the type of thresholds in the step-up procedures. See Details. |
geom_fac |
a real number that is larger than 1. This is the growing rate of thresholds when
|
eps |
a real number in [0, 1], which is used to determine |
qcap |
a real number that is larger than 1. It is used to filter out hypotheses with q-values above
|
gridsize |
an integer for the size of the grid used when |
exptcap |
a real number in [0, 1]. It is used by |
is_safe |
a logical or NULL indicating whether the procedure is taken as safe. DON'T set |
verbose |
a logical indicating whether a progress bar is shown. |
dBH_mvgauss
supports two types of inputs for the covariance matrix.
When the covariance matrix fits into the memory, it can be inputted through Sigma
. The diagonals do not
have to be 1. In this case, Sigmafun
and vars
should be left as their default;
When the covariance matrix does not fit into the memory, it can be inputted through Sigmafun
, for the
correlation matrix, and vars
, for marginal variances. Sigmafun
should be a function with a single input
i
that gives the row index and a vector output \Sigma_{i, }/\sqrt{\Sigma_{i, i}\Sigma_{j, j}}
where
\Sigma_{i, }
is the i-th row of \Sigma
. The marginal variances (\Sigma_{1, 1}, \ldots, \Sigma_{m, m})
are inputted through vars
. If all marginal variances are 1, vars
can be left as its default.
dBH_mvgauss
can handle all dSU procedures that are defined in Appendix C.1. with
\Delta_{\alpha}(r) = \frac{\alpha a_{\ell}}{m}, r\in [a_{\ell}, a_{\ell + 1}), \ell = 0, 1, \ldots, L
for any set of integer a-values 1\le a_1 < \ldots < a_L\le m
(with a_0 = 0, a_{L+1} = m+1
). There are two-ways to input the a-values.
(Recommended) use avals_type
while leave avals
as its default. Three types of avals_type
are supported.
When avals_type = "BH"
, the BH procedure is used (i.e. a_\ell = \ell, \ell = 1, \ldots, m
);
When avals_type = "geom"
, the geometrically increasing a-values that are defined in Appendix C.1.
are used with the growing rate specified by geom_fac
, whose default is 2;
When avals_type = "bonf"
, the Bonferroni procedure is used (i.e. a_1 = 1, L = 1
).
(Not recommended) use avals
while set avals_type = "manual"
. This option allows any set of
increasing a-values. However, it can be much slower than the recommended approach.
a list with the following attributes
rejs
: the indices of rejected hypotheses (after the randomized pruning step if any);
initrejs
: the indices of rejected hypotheses (before the randomized pruning step if any);
cand
: the set of candidate hypotheses for which g_i^{*}(q_i | S_i)
is evaluated;
expt
: g_i^{*}(q_i | S_i)
for each hypothesis in cand
;
safe
: TRUE iff the procedure is safe;
secBH
: TRUE iff the randomzied pruning step (a.k.a. the secondary BH procedure) is invoked;
secBH_fac
: a vector that gives \hat{R}_i / R_{+}
that is defined in Section 2.2. It only shows up
in the output if secBH = TRUE
.
dBH_mvt
, dBH_lm
# Generate mu and Sigma for an AR process
n <- 100
rho <- 0.8
Sigma <- rho^(abs(outer(1:n, 1:n, "-")))
mu1 <- 2.5
nalt <- 10
mu <- c(rep(mu1, nalt), rep(0, n - nalt))
# Generate the z-values
set.seed(1)
zvals <- rep(NA, n)
zvals[1] <- rnorm(1)
for (i in 2:n){
zvals[i] <- zvals[i - 1] * rho + rnorm(1) * sqrt(1 - rho^2)
}
zvals <- zvals + mu
# Run dBH_1(\alpha) for one-sided tests
alpha <- 0.05
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = 1, niter = 1, avals_type = "BH")
# Run dBH_1(\alpha) for two-sided tests
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = 1, niter = 1, avals_type = "BH")
# Run dBH^2_1(\alpha) for one-sided tests
alpha <- 0.05
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = 1, niter = 2, avals_type = "BH")
# Run dBH^2_1(\alpha) for one-sided tests
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = 1, niter = 2, avals_type = "BH")
# Run dSU_1(\alpha) with the geometrically increasing a-values for one-sided tests
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = 1, niter = 1, avals_type = "geom", geom_fac = 2)
# Run dBY(\alpha) for one-sided tests
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = NULL, niter = 1, avals_type = "BH")
# Run dBY^2(\alpha) for one-sided tests
res <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right", alpha = alpha,
gamma = NULL, niter = 2, avals_type = "BH")
# Input the covariance matrix through \code{Sigmafun}
Sigmafun <- function(i){
rho^(abs(1:n - i))
}
vars <- rep(1, n)
res1 <- dBH_mvgauss(zvals = zvals, Sigmafun = Sigmafun, vars = vars, side = "right",
alpha = alpha, gamma = NULL, niter = 1, avals_type = "BH")
res2 <- dBH_mvgauss(zvals = zvals, Sigma = Sigma, side = "right",
alpha = alpha, gamma = NULL, niter = 1, avals_type = "BH")
identical(res1, res2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.