mcc {localScore} | R Documentation |
MCC [p-value] [iid]
Description
Calculates an approximated p-value for a given local score value and a medium to long sequence length in the identically and independently distributed model
Usage
mcc(
local_score,
sequence_length,
score_probabilities,
sequence_min = NULL,
sequence_max = NULL,
score_values = NULL
)
Arguments
local_score |
the observed local score |
sequence_length |
length of the sequence |
score_probabilities |
the probabilities for each score from lowest to greatest (Optionnaly with scores as names) |
sequence_min |
minimum score (optional if |
sequence_max |
maximum score (optional if |
score_values |
vector of integer score values, associated to score_probabilities (optional if
|
Details
This methods is actually an improved method of Karlin and produces more precise results. It should be privileged whenever possible.
As with karlin, the method works the better the longer the sequence. Important note : the calculus of the parameter of the distribution uses
the resolution of a polynome which is a function of the score distribution, of order max(score)-min(score). There exists only empirical methods to solve a polynome of order greater that 5
with no warranty of reliable solution.
The found roots are checked internally to the function and an error message is throw in case of inconsistency. In such case, you could try to change your score scheme (in case of discretization)
or use the function karlinMonteCarlo
.
Value
A double representing the probability of a local score as high as the one given as argument
See Also
karlin
, daudin
, karlinMonteCarlo
, monteCarlo
Examples
mcc(40, 100, c(0.08, 0.32, 0.08, 0.00, 0.08, 0.00, 0.00, 0.08, 0.02, 0.32, 0.02), -6, 4)
mcc(40, 10000, c(0.08, 0.32, 0.08, 0.00, 0.08, 0.00, 0.00, 0.08, 0.02, 0.32, 0.02), -6, 4)
mcc(150, 10000, c(0.08, 0.32, 0.08, 0.00, 0.08, 0.00, 0.00, 0.08, 0.02, 0.32, 0.02), -5, 5)
p1 <- mcc(local_score = 15, sequence_length = 5000,
score_probabilities = c(0.2, 0.3, 0.1, 0.2, 0.1, 0.1),
sequence_min = -3, sequence_max = 2)
p2 <- mcc(local_score = 15, sequence_length = 5000,
score_probabilities = c(0.2, 0.3, 0.1, 0.2, 0.1, 0.1),
score_values = -3:2)
p1 == p2 # TRUE
prob <- c(0.08, 0.32, 0.08, 0.00, 0.08, 0.00, 0.00, 0.08, 0.02, 0.32, 0.02)
score_values <- which(prob != 0) - 6 # keep only non null probability scores
prob0 <- prob[prob != 0] # and associated probability
p <- mcc(150, 10000, prob, sequence_min = -5, sequence_max = 5)
p0 <- mcc(150, 10000, prob0, score_values = score_values)
names(prob0) <- score_values
p1 <- mcc(150, 10000, prob0)
p == p0 # TRUE
p == p1 # TRUE