View source: R/init_freq_num.R
| comp_freq | R Documentation |
comp_freq computes frequencies (typically
as rounded integers) given 3 basic probabilities –
prev, sens, and spec –
for a population of N individuals.
It returns a list of 11 key frequencies freq
as its output.
comp_freq(
prev = num$prev,
sens = num$sens,
spec = num$spec,
N = num$N,
round = TRUE,
sample = FALSE
)
prev |
The condition's prevalence |
sens |
The decision's sensitivity |
spec |
The decision's specificity value |
N |
The number of individuals in the population.
If |
round |
Boolean value that determines whether frequency values
are rounded to the nearest integer.
Default: Note: Removed |
sample |
Boolean value that determines whether frequency values
are sampled from Note: Sampling uses |
In addition to prev, both
sens and spec are necessary arguments.
If only their complements mirt or fart
are known, use the wrapper function comp_freq_prob
which also accepts mirt and fart as inputs
(but requires that the entire set of provided probabilities is
sufficient and consistent).
Alternatively, use comp_complement,
comp_comp_pair, or comp_complete_prob_set
to obtain the 3 essential probabilities.
comp_freq is the frequency counterpart to the
probability function comp_prob.
By default, comp_freq and its wrapper function
comp_freq_prob
round frequencies to nearest integers to avoid decimal values in
freq (i.e., round = TRUE by default).
When frequencies are rounded, probabilities computed from
freq may differ from exact probabilities.
Using the option round = FALSE turns off rounding.
Key relationships between probabilities and frequencies:
Three perspectives on a population:
A population of N individuals can be split into 2 subsets of frequencies
in 3 different ways:
by condition:
N = cond_true + cond_false
The frequency cond_true depends on the prevalence prev
and
the frequency cond_false depends on the prevalence's complement 1 - prev.
by decision:
N = dec_pos + dec_neg
The frequency dec_pos depends on the proportion of positive decisions ppod
and
the frequency dec_neg depends on the proportion of negative decisions 1 - ppod.
by accuracy (i.e., correspondence of decision to condition):
N = dec_cor + dec_err
Each perspective combines 2 pairs of the 4 essential probabilities (hi, mi, fa, cr).
When providing probabilities, the population size N is a free parameter (independent of the
essential probabilities prev, sens, and spec).
If N is unknown (NA), a suitable minimum value can be computed by comp_min_N.
Defining probabilities in terms of frequencies:
Probabilities are – determine, describe, or are defined as – the relationships between frequencies. Thus, they can be computed as ratios between frequencies:
prevalence prev:
prev = cond_true/N = (hi + mi) / (hi + mi + fa + cr)
sensitivity sens:
sens = hi/cond_true = hi / (hi + mi) = (1 - mirt)
miss rate mirt:
mirt = mi/cond_true = mi / (hi + mi) = (1 - sens)
specificity spec:
spec = cr/cond_false = cr / (fa + cr) = (1 - fart)
false alarm rate fart:
fart = fa/cond_false = fa / (fa + cr) = (1 - spec)
proportion of positive decisions ppod:
ppod = dec_pos/N = (hi + fa) / (hi + mi + fa + cr)
positive predictive value PPV:
PPV = hi/dec_pos = hi / (hi + fa) = (1 - FDR)
negative predictive value NPV:
NPV = cr/dec_neg = cr / (mi + cr) = (1 - FOR)
false detection rate FDR:
FDR = fa/dec_pos = fa / (hi + fa) = (1 - PPV)
false omission rate FOR:
FOR = mi/dec_neg = mi / (mi + cr) = (1 - NPV)
accuracy acc:
acc = dec_cor/N = (hi + cr) / (hi + mi + fa + cr)
rate of hits, given accuracy p_acc_hi:
p_acc_hi = hi/dec_cor = (1 - cr/dec_cor)
rate of false alarms, given inaccuracy p_err_fa:
p_err_fa = fa/dec_err = (1 - mi/dec_err)
Beware of rounding and sampling issues!
If frequencies are rounded (by round = TRUE in comp_freq)
or sampled from probabilities (by sample = TRUE),
then any probabilities computed from freq may differ
from original and exact probabilities.
Functions translating between representational formats:
comp_prob_prob, comp_prob_freq,
comp_freq_prob, comp_freq_freq
(see documentation of comp_prob_prob for details).
A list freq containing 11 key frequency values.
comp_freq_prob corresponding wrapper function;
num contains basic numeric variables;
init_num initializes basic numeric variables;
freq contains current frequency information;
prob contains current probability information;
comp_prob computes current probability information;
comp_complement computes a probability's complement;
comp_comp_pair computes pairs of complements;
comp_complete_prob_set completes valid sets of probabilities;
comp_min_N computes a suitable population size N (if missing).
Other functions computing frequencies:
comp_freq_freq(),
comp_freq_prob(),
comp_min_N(),
comp_prob_prob()
comp_freq() # ok, using current defaults
length(comp_freq()) # 11 key frequencies
# Rounding:
comp_freq(prev = .5, sens = .5, spec = .5, N = 1) # yields fa = 1 (see ?round for reason)
comp_freq(prev = .1, sens = .9, spec = .8, N = 10) # 1 hit (TP, rounded)
comp_freq(prev = .1, sens = .9, spec = .8, N = 10, round = FALSE) # hi = .9
comp_freq(prev = 1/3, sens = 6/7, spec = 2/3, N = 1, round = FALSE) # hi = 0.2857143
# Sampling (from probabilistic description):
comp_freq_prob(prev = .5, sens = .5, spec = .5, N = 100, sample = TRUE) # freq values vary
# Extreme cases:
comp_freq(prev = 1, sens = 1, spec = 1, 100) # ok, N hits (TP)
comp_freq(prev = 1, sens = 1, spec = 0, 100) # ok, N hits
comp_freq(prev = 1, sens = 0, spec = 1, 100) # ok, N misses (FN)
comp_freq(prev = 1, sens = 0, spec = 0, 100) # ok, N misses
comp_freq(prev = 0, sens = 1, spec = 1, 100) # ok, N correct rejections (TN)
comp_freq(prev = 0, sens = 1, spec = 0, 100) # ok, N false alarms (FP)
# Watch out for:
comp_freq(prev = 1, sens = 1, spec = 1, N = NA) # ok, but warning that N = 1 was computed
comp_freq(prev = 1, sens = 1, spec = 1, N = 0) # ok, but all 0 + warning (extreme case: N hits)
comp_freq(prev = .5, sens = .5, spec = .5, N = 10, round = TRUE) # ok, rounded (see mi and fa)
comp_freq(prev = .5, sens = .5, spec = .5, N = 10, round = FALSE) # ok, not rounded
# Ways to fail:
comp_freq(prev = NA, sens = 1, spec = 1, 100) # NAs + warning (prev NA)
comp_freq(prev = 1, sens = NA, spec = 1, 100) # NAs + warning (sens NA)
comp_freq(prev = 1, sens = 1, spec = NA, 100) # NAs + warning (spec NA)
comp_freq(prev = 8, sens = 1, spec = 1, 100) # NAs + warning (prev beyond range)
comp_freq(prev = 1, sens = 8, spec = 1, 100) # NAs + warning (sens beyond range)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.