View source: R/FDX-parameters.R
param_general_GW | R Documentation |
Performing a general exceedance control of the false discovery proportion(FDP)
under the framework proposed by Genovese, C., & Wasserman, L. (2004),
where FDP is defined by the number of false positives devided by the
number of total rejections.
The GW method requires an uniform(0,1) distributional test statistic
and each value in the input data represents a p-value from a hypothesis.
The sources of the data can be derived from any testing procedure
(e.g. pvalues from testing high-throughput gene data).
This function works for all distributional test statistics.
There are fast algorithms exist for some statistics.
Please see the function param_fast_GW
for more details.
param_general_GW(pvalue_func, algorithm = c("general", "JW"))
pvalue_func |
function, The pvalue function for a uniform(0,1) distributional test. The inpute samples(pvalues) will be ascending sorted. |
algorithm |
character, The searching algorithm that will be used to find the upper bound of the FDR, see details. |
Note: We will use the term samples
and pvalues
interchangebly to refer
the data gathered by a large-scale inference procedure.
Computing the upper bound of the FDP using the GW method is computationally
challenging.
Given the number of hypotheses n
, the naive algorithm requires approximately 2^n
operations, which make it only available for small inference. Therefore,
JW algorithm is developed for reducing the computational burden, but it also
add a restriction on the test statistic.
If general = "general"
, it means the naive method proposed by GW.
There is no additional assumptions on the pvalue function except the
regular definition of the pvalue.
If general = "JW"
, the pvalue function must be a non-decreasing function
for its input samples. That is, if input1 and input2 are two set of
ascending sorted samples and input1 is not smaller than the input2 for all
elements, then the resulting pvalue for input1 should not be smaller than the
pvalue for input2.
With an additional restriction on the pvalue function, the JW algorithm has a polynomial computational complexity.
an exceedance_parameters object
## kth pvalue test k_test <- function(x,k){ n <- length(x) if(length(x) >= k) pbeta(x[k], k, n-k+1) else 1 } ## general algorithm, very slow param_general_GW(pvalue_func = k_test, algorithm = "general") ## JW algorithm, relatively qucik ## You need to verify if the pvalue function ## satisfies the requirement of the JW algorithm ## before use it. param_general_GW(pvalue_func = k_test, algorithm = "JW")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.