test_combine: Association testing by combining several matching thresholds

Description Usage Arguments Value Examples

View source: R/test_combine.R

Description

Computes association test p-values from a generalized linear model for each considered threshold, and computes a p-value for the combination of all the envisioned thresholds through Fisher's method using perturbation resampling.

Usage

1
2
3
test_combine(match_prob, y, x, thresholds = seq(from = 0.5, to = 0.95, by =
  0.05), nb_perturb = 200, dist_family = c("gaussian", "binomial"),
  impute_strategy = c("weighted average", "best"))

Arguments

match_prob

matching probabilities matrix (e.g. obtained through recordLink) of dimensions n1 x n2.

y

response variable of length n1. Only binary phenotypes are supported at the moment.

x

a matrix or a data.frame of predictors of dimensions n2 x p. An intercept is automatically within the function.

thresholds

a vector (possibly of length 1) containing the different threshold to use to call a match. Default is seq(from = 0.5, to = 0.95, by = 0.05).

nb_perturb

the number of perturbation used for the p-value combination. Default is 200.

dist_family

a character string indicating the distribution family for the glm. Currently, only 'gaussian' and 'binomial' are supported. Default is 'gaussian'.

impute_strategy

a character string indicating which strategy to use to impute x from the matching probabilities match_prob. Either "best" (in which case the highest probable match above the threshold is imputed) or "weighted average" (in which case weighted mean is imputed for each individual who has at least one match with a posterior probability above the threshold). Default is "weighted average".

Value

a list containing the following:

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#rm(list=ls())
res <- list()
n_sims <- 1#5000
for(n in 1:n_sims){
x <- matrix(ncol=2, nrow=99, stats::rnorm(n=99*2))

#plot(density(rbeta(n=1000, 1,2)))
match_prob <- matrix(rbeta(n=103*99, 1, 2), nrow=103, ncol=99)


#y <- rnorm(n=103, 1, 0.5)
#res[[n]] <- test_combine(match_prob, y, x, dist_family="gaussian")$influencefn_pvals
y <- rbinom(n=103, 1, prob=0.5)
res[[n]] <- test_combine(match_prob, y, x, dist_family="binomial")$influencefn_pvals
cat(n, "/", n_sims, "\n", sep="")
}
size <- matrix(NA, ncol=nrow(res[[1]]), nrow=ncol(res[[1]])-2)
colnames(size) <- rownames(res[[1]])
rownames(size) <- colnames(res[[1]])[-(-1:0 + ncol(res[[1]]))]
for(i in 1:(ncol(res[[1]])-2)){
 size[i, ] <- rowMeans(sapply(res, function(m){m[, i]<0.05}), na.rm = TRUE)
}
size

borishejblum/ludic documentation built on Jan. 30, 2018, 8:38 p.m.