is_complement
is a function that
takes 2 numeric arguments (typically probabilities) as inputs and
verifies that they are complements (i.e., add up to 1,
within some tolerance range tol
).
is_complement(p1, p2, tol = 0.01)
A numeric argument (typically probability in range from 0 to 1).
A numeric argument (typically probability in range from 0 to 1).
A numeric tolerance value.
Default: tol = .01
.
NA
or a Boolean value:
NA
if one or both arguments are NA
;
TRUE
if both arguments are provided
and complements (in tol
range);
otherwise FALSE
.
Both p1
and p2
are necessary arguments.
If one or both arguments are NA
, is_complement
returns NA
(i.e., neither TRUE
nor FALSE
).
The argument tol
is optional (with a default value of .01)
Numeric near-complements that differ by less than this
value are still considered to be complements.
This function does not verify the type, range, or sufficiency
of the inputs provided. See is_prob
and
is_suff_prob_set
for this purpose.
comp_complement
computes a probability's complement;
comp_comp_pair
computes pairs of complements;
num
contains basic numeric variables;
init_num
initializes basic numeric variables;
prob
contains current probability information;
comp_prob
computes current probability information;
freq
contains current frequency information;
comp_freq
computes current frequency information;
is_valid_prob_set
verifies the validity of probability inputs;
as_pc
displays a probability as a percentage;
as_pb
displays a percentage as probability.
Other verification functions:
is_extreme_prob_set()
,
is_freq()
,
is_integer()
,
is_matrix()
,
is_perc()
,
is_prob()
,
is_suff_prob_set()
,
is_valid_prob_pair()
,
is_valid_prob_set()
,
is_valid_prob_triple()
# Basics:
is_complement(0, 1) # => TRUE
#> [1] TRUE
is_complement(1/3, 2/3) # => TRUE
#> [1] TRUE
is_complement(.33, .66) # => TRUE (as within default tol = .01)
#> [1] TRUE
is_complement(.33, .65) # => FALSE (as beyond default tol = .01)
#> Warning: Probabilities (p1 and p2) are not complements (in tolerated range).
#> [1] FALSE
# watch out for:
is_complement(NA, NA) # => NA (but not FALSE)
#> [1] NA
is_complement(1, NA) # => NA (but not FALSE)
#> [1] NA
is_complement(2, -1) # => TRUE + warnings (p1 and p2 beyond range)
#> [1] TRUE
is_complement(8, -7) # => TRUE + warnings (p1 and p2 beyond range)
#> [1] TRUE
is_complement(.3, .6) # => FALSE + warning (beyond tolerance)
#> Warning: Probabilities (p1 and p2) are not complements (in tolerated range).
#> [1] FALSE
is_complement(.3, .6, tol = .1) # => TRUE (due to increased tolerance)
#> [1] TRUE
# ways to fail:
# is_complement(0, 0) # => FALSE + warning (beyond tolerance)
# is_complement(1, 1) # => FALSE + warning (beyond tolerance)
# is_complement(8, 8) # => FALSE + warning (beyond tolerance)