| gpuRowTtest | R Documentation |
Tests every row of x (every gene of an expression matrix, say)
for a difference in mean between two groups of columns, as
t.test does one row at a time, and optionally gives each
test a permutation p-value and a p-value adjusted for testing all the
rows, by Westfall and Young's maxT. The permutations run on the GPU,
every row under every relabelling of the samples at once.
gpuRowTtest(x, group, var.equal = FALSE, B = 0L,
precision = getOption("gputools.precision", "single"))
x |
a numeric matrix, a row per variable (gene), a column per sample, with no missing values. |
group |
the samples' groups: a vector or factor with one entry per
column of |
var.equal |
|
B |
the number of permutations, or 0 for none. |
precision |
|
The t statistics, degrees of freedom and parametric p-values are those
of t.test(x[i, group == level1], x[i, group == level2],
var.equal = var.equal), the first level's mean minus the second's.
They are computed in double precision on the CPU: a t test of each row
is too little work to be worth sending to the GPU.
With B > 0, the samples' labels are permuted B times
(drawn with sample.int, so set.seed makes them
reproducible) and every row's t statistic is computed under each
permutation, on the GPU: two matrix products give every row's group
sums and sums of squares under all the labellings. A row's permutation
p-value is (1 + b) / (1 + B) with b the permutations giving
|t_b| \ge |t| (Phipson and Smyth 2010); its
adjusted p-value counts the permutations whose largest |t_b| over
all the rows reaches |t|: single-step maxT, which controls the
family-wise error rate (Westfall and Young 1993). Permuting the labels
keeps the dependence between genes, which the adjustment exploits, and
makes no assumption of normality.
A constant row, or one constant within both groups, has no test:
its statistic is NaN and its p-values NA.
A data frame, a row per row of x, named as x's rows:
mean1, mean2 |
the groups' means. |
statistic |
the t statistic. |
df |
its degrees of freedom. |
p.value |
the two-sided p-value from the t distribution. |
p.perm |
with |
p.adjusted |
with |
Westfall, P. H. and Young, S. S. (1993) Resampling-Based Multiple Testing. Wiley.
Phipson, B. and Smyth, G. K. (2010) Permutation p-values should never be zero. Statistical Applications in Genetics and Molecular Biology 9, 39.
t.test, gpuCorPerm
set.seed(1)
genes <- matrix(rnorm(2000 * 12), 2000, 12,
dimnames = list(paste0("g", 1:2000), NULL))
group <- rep(c("treated", "control"), each = 6)
genes[1:5, group == "treated"] <- genes[1:5, group == "treated"] + 3
res <- gpuRowTtest(genes, group, B = 5000)
head(res[order(res$p.adjusted), ])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.