comp_prob computes current probability information from 3 essential probabilities (prev, sens or mirt, spec or fart). It returns a list of 13 key probabilities prob as its output.

comp_prob(
  prev = num$prev,
  sens = num$sens,
  mirt = NA,
  spec = num$spec,
  fart = NA,
  tol = 0.01
)

Arguments

prev

The condition's prevalence value prev (i.e., the probability of the condition being TRUE).

sens

The decision's sensitivity value sens (i.e., the conditional probability of a positive decision provided that the condition is TRUE). sens is optional when its complement mirt is provided.

mirt

The decision's miss rate value mirt (i.e., the conditional probability of a negative decision provided that the condition is TRUE). mirt is optional when its complement sens is provided.

spec

The decision's specificity value spec (i.e., the conditional probability of a negative decision provided that the condition is FALSE). spec is optional when its complement fart is provided.

fart

The decision's false alarm rate fart (i.e., the conditional probability of a positive decision provided that the condition is FALSE). fart is optional when its complement spec is provided.

tol

A numeric tolerance value for is_complement. Default: tol = .01.

Value

A list prob containing 13 key probability values.

Details

comp_prob assumes that a sufficient and consistent set of essential probabilities (i.e., prev and either sens or its complement mirt, and either spec or its complement fart) is provided.

comp_prob computes and returns a full set of basic and various derived probabilities (e.g., the probability of a positive decision ppod, the probability of a correct decision acc, the predictive values PPV and NPV, as well as their complements FDR and FOR) in its output of a list prob.

Extreme probabilities (sets containing two or more probabilities of 0 or 1) may yield unexpected values (e.g., predictive values PPV or NPV turning NaN when is_extreme_prob_set evaluates to TRUE).

comp_prob is the probability counterpart to the frequency function comp_freq.

Key relationships between probabilities and frequencies:

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).

See also

prob contains current probability information; accu contains current accuracy information; num contains basic numeric parameters; init_num initializes basic numeric parameters; pal contains current color information; txt contains current text information; freq contains current frequency information; comp_freq computes frequencies from probabilities; is_valid_prob_set verifies sets of probability inputs; is_extreme_prob_set verifies sets of extreme probabilities; comp_min_N computes a suitable minimum population size N; comp_freq_freq computes current frequency information from (4 essential) frequencies; comp_freq_prob computes current frequency information from (3 essential) probabilities; comp_prob_freq computes current probability information from (4 essential) frequencies; comp_prob_prob computes current probability information from (3 essential) probabilities.

Other functions computing probabilities: comp_FDR(), comp_FOR(), comp_NPV(), comp_PPV(), comp_accu_freq(), comp_accu_prob(), comp_acc(), comp_comp_pair(), comp_complement(), comp_complete_prob_set(), comp_err(), comp_fart(), comp_mirt(), comp_ppod(), comp_prob_freq(), comp_sens(), comp_spec()

Examples

# Basics:
comp_prob(prev = .11, sens = .88, spec = .77)                        # => ok: PPV = 0.3210614
#> $prev
#> [1] 0.11
#> 
#> $sens
#> [1] 0.88
#> 
#> $mirt
#> [1] 0.12
#> 
#> $spec
#> [1] 0.77
#> 
#> $fart
#> [1] 0.23
#> 
#> $ppod
#> [1] 0.3015
#> 
#> $PPV
#> [1] 0.3210614
#> 
#> $FDR
#> [1] 0.6789386
#> 
#> $NPV
#> [1] 0.9811024
#> 
#> $FOR
#> [1] 0.01889764
#> 
#> $acc
#> [1] 0.7821
#> 
#> $p_acc_hi
#> [1] 0.1237693
#> 
#> $p_err_fa
#> [1] 0.9394218
#> 
comp_prob(prev = .11, sens = NA, mirt = .12, spec = NA, fart = .23)  # => ok: PPV = 0.3210614
#> $prev
#> [1] 0.11
#> 
#> $sens
#> [1] 0.88
#> 
#> $mirt
#> [1] 0.12
#> 
#> $spec
#> [1] 0.77
#> 
#> $fart
#> [1] 0.23
#> 
#> $ppod
#> [1] 0.3015
#> 
#> $PPV
#> [1] 0.3210614
#> 
#> $FDR
#> [1] 0.6789386
#> 
#> $NPV
#> [1] 0.9811024
#> 
#> $FOR
#> [1] 0.01889764
#> 
#> $acc
#> [1] 0.7821
#> 
#> $p_acc_hi
#> [1] 0.1237693
#> 
#> $p_err_fa
#> [1] 0.9394218
#> 
comp_prob()          # => ok, using current defaults
#> $prev
#> [1] 0.25
#> 
#> $sens
#> [1] 0.85
#> 
#> $mirt
#> [1] 0.15
#> 
#> $spec
#> [1] 0.75
#> 
#> $fart
#> [1] 0.25
#> 
#> $ppod
#> [1] 0.4
#> 
#> $PPV
#> [1] 0.53125
#> 
#> $FDR
#> [1] 0.46875
#> 
#> $NPV
#> [1] 0.9375
#> 
#> $FOR
#> [1] 0.0625
#> 
#> $acc
#> [1] 0.775
#> 
#> $p_acc_hi
#> [1] 0.2741935
#> 
#> $p_err_fa
#> [1] 0.8333333
#> 
length(comp_prob())  # => 13 probabilities
#> [1] 13

# Ways to work:
comp_prob(.99, sens = .99, spec = .99)              # => ok: PPV = 0.999898
#> $prev
#> [1] 0.99
#> 
#> $sens
#> [1] 0.99
#> 
#> $mirt
#> [1] 0.01
#> 
#> $spec
#> [1] 0.99
#> 
#> $fart
#> [1] 0.01
#> 
#> $ppod
#> [1] 0.9802
#> 
#> $PPV
#> [1] 0.999898
#> 
#> $FDR
#> [1] 0.00010202
#> 
#> $NPV
#> [1] 0.5
#> 
#> $FOR
#> [1] 0.5
#> 
#> $acc
#> [1] 0.99
#> 
#> $p_acc_hi
#> [1] 0.99
#> 
#> $p_err_fa
#> [1] 0.01
#> 
comp_prob(.99, sens = .90, spec = NA, fart = .10)   # => ok: PPV = 0.9988789
#> $prev
#> [1] 0.99
#> 
#> $sens
#> [1] 0.9
#> 
#> $mirt
#> [1] 0.1
#> 
#> $spec
#> [1] 0.9
#> 
#> $fart
#> [1] 0.1
#> 
#> $ppod
#> [1] 0.892
#> 
#> $PPV
#> [1] 0.9988789
#> 
#> $FDR
#> [1] 0.001121076
#> 
#> $NPV
#> [1] 0.08333333
#> 
#> $FOR
#> [1] 0.9166667
#> 
#> $acc
#> [1] 0.9
#> 
#> $p_acc_hi
#> [1] 0.99
#> 
#> $p_err_fa
#> [1] 0.01
#> 

# Watch out for extreme cases:
comp_prob(1, sens = 0, spec = 1)      # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = 0)      # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = NA, fart = 0)  # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = NA, fart = 1)  # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 

# Watch out for extreme cases:
comp_prob(1, sens = 0, spec = 1)      # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = 0)      # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = NA, fart = 0)  # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 
comp_prob(1, sens = 0, spec = NA, fart = 1)  # => ok, but with warnings (as PPV & FDR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 0):
#>   N mi (FN) cases; 0 cond_false or dec_true cases; PPV = NaN.
#> Warning: PPV is NaN.
#> Warning: FDR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 0
#> 
#> $mirt
#> [1] 1
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 0
#> 
#> $PPV
#> [1] NaN
#> 
#> $FDR
#> [1] NaN
#> 
#> $NPV
#> [1] 0
#> 
#> $FOR
#> [1] 1
#> 
#> $acc
#> [1] 0
#> 
#> $p_acc_hi
#> [1] NaN
#> 
#> $p_err_fa
#> [1] 0
#> 

comp_prob(1, sens = 1, spec = 0)      # => ok, but with warnings (as NPV & FOR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 1):
#>   N hi (TP) cases; 0 cond_false or dec_false cases; NPV = NaN.
#> Warning: NPV is NaN.
#> Warning: FOR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 1
#> 
#> $mirt
#> [1] 0
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 1
#> 
#> $PPV
#> [1] 1
#> 
#> $FDR
#> [1] 0
#> 
#> $NPV
#> [1] NaN
#> 
#> $FOR
#> [1] NaN
#> 
#> $acc
#> [1] 1
#> 
#> $p_acc_hi
#> [1] 1
#> 
#> $p_err_fa
#> [1] NaN
#> 
comp_prob(1, sens = 1, spec = 1)      # => ok, but with warnings (as NPV & FOR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 1):
#>   N hi (TP) cases; 0 cond_false or dec_false cases; NPV = NaN.
#> Warning: NPV is NaN.
#> Warning: FOR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 1
#> 
#> $mirt
#> [1] 0
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 1
#> 
#> $PPV
#> [1] 1
#> 
#> $FDR
#> [1] 0
#> 
#> $NPV
#> [1] NaN
#> 
#> $FOR
#> [1] NaN
#> 
#> $acc
#> [1] 1
#> 
#> $p_acc_hi
#> [1] 1
#> 
#> $p_err_fa
#> [1] NaN
#> 
comp_prob(1, sens = 1, spec = NA, fart = 0)  # => ok, but with warnings (as NPV & FOR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 1):
#>   N hi (TP) cases; 0 cond_false or dec_false cases; NPV = NaN.
#> Warning: NPV is NaN.
#> Warning: FOR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 1
#> 
#> $mirt
#> [1] 0
#> 
#> $spec
#> [1] 1
#> 
#> $fart
#> [1] 0
#> 
#> $ppod
#> [1] 1
#> 
#> $PPV
#> [1] 1
#> 
#> $FDR
#> [1] 0
#> 
#> $NPV
#> [1] NaN
#> 
#> $FOR
#> [1] NaN
#> 
#> $acc
#> [1] 1
#> 
#> $p_acc_hi
#> [1] 1
#> 
#> $p_err_fa
#> [1] NaN
#> 
comp_prob(1, sens = 1, spec = NA, fart = 1)  # => ok, but with warnings (as NPV & FOR are NaN)
#> Warning: Extreme case (prev = 1 & sens = 1):
#>   N hi (TP) cases; 0 cond_false or dec_false cases; NPV = NaN.
#> Warning: NPV is NaN.
#> Warning: FOR is NaN.
#> Warning: Some derived prob values are peculiar. Check for extreme probabilities!
#> $prev
#> [1] 1
#> 
#> $sens
#> [1] 1
#> 
#> $mirt
#> [1] 0
#> 
#> $spec
#> [1] 0
#> 
#> $fart
#> [1] 1
#> 
#> $ppod
#> [1] 1
#> 
#> $PPV
#> [1] 1
#> 
#> $FDR
#> [1] 0
#> 
#> $NPV
#> [1] NaN
#> 
#> $FOR
#> [1] NaN
#> 
#> $acc
#> [1] 1
#> 
#> $p_acc_hi
#> [1] 1
#> 
#> $p_err_fa
#> [1] NaN
#> 

# Ways to fail:
comp_prob(NA, 1, 1, NA)  # => only warning: invalid set (prev not numeric)
#> Warning: Invalid probabilities. Please enter a valid set of essential probabilities.
comp_prob(8,  1, 1, NA)  # => only warning: prev no probability
#> Warning: Invalid probabilities. Please enter a valid set of essential probabilities.
comp_prob(1,  8, 1, NA)  # => only warning: sens no probability
#> Warning: Invalid probabilities. Please enter a valid set of essential probabilities.
comp_prob(1,  1, 1,  1)  # => only warning: is_complement not in tolerated range
#> Warning: Probabilities (p1 and p2) are not complements (in tolerated range).
#> Warning: Invalid probabilities. Please enter a valid set of essential probabilities.