Computation of the concepts described in README depend on the properties of underlying random variables.
For samples with binary results, such as pass/fail or success/failure, we typically assume binomial distribution.
If in n samples, we find f failures, then the confidence in reliability r, 0 \le r \le 1 is
c = 1 - \sum_{k=0}^f \binom{n}{k} (1-r)^k r^{n-k},
where \binom{n}{k} = \frac{n!}{k!(n-k)!} is the binomial coefficient.
Calculating reliability means solving the above equation for r. Yes, it is complicated. That is why we have :meth:`relistats.binomial.reliability` method that uses numerical optimization! There are closed-form approximations and this library implements the 'Wilson Score Interval with Continuity Correction' method via :meth:`relistats.binomial.reliability_closed`.
Calculating assurance means setting r = c = a in the above equation to get
a = 1 - \sum_{k=0}^f \binom{n}{k} (1-a)^k a^{n-k}
Solving the above equation for a is not trivial. This library offers a numerical method :meth:`relistats.binomial.assurance` that allows tuning desired accuracy level.
For finite population size, after n samples are tested, we already know how many additional samples, m remain. The acceptable number of failures in these to reach desired reliability level and the associated confidence level can be computed assuming infinite population size. This technique is implemented in :meth:`relistats.binom_fin.conf_fin`.
Using the confidence method, reliability and assurance levels can be computed as shown in :mod:`relistats.binom_fin`.
See references in README for more information.