.. _determining-accuracy: Accuracy -------- The library contains utilities to estimate accuracy at a given noise scale and statistical significance level or derive the necessary noise scale to meet a given target accuracy and statistical significance level. .. note:: This confidence interval is specifically for the input to the noise addition mechanism. We cannot privately compensate for the bias introduced from clipping or other preprocessing. There is a notebook demonstrating this limitation: .. toctree:: :titlesonly: accuracy-pitfalls The noise distribution may be either Laplace or Gaussian. :Laplacian: | Applies to any L1 noise addition mechanism. | :func:`make_base_laplace() ` | :func:`make_base_discrete_laplace() ` | :func:`make_base_ptr() ` :Gaussian: | Applies to any L2 noise addition mechanism. | :func:`make_base_gaussian() ` | :func:`make_base_discrete_gaussian() ` The library provides the following functions for converting between noise scale and accuracy: * :func:`opendp.accuracy.laplacian_scale_to_accuracy` * :func:`opendp.accuracy.accuracy_to_laplacian_scale` * :func:`opendp.accuracy.gaussian_scale_to_accuracy` * :func:`opendp.accuracy.accuracy_to_gaussian_scale` To demonstrate, the following snippet finds the necessary gaussian scale such that the input to :code:`make_base_gaussian(scale=1.)` differs from the release by no more than 2 with 95% confidence. .. doctest:: >>> from opendp.accuracy import accuracy_to_gaussian_scale >>> confidence = 95 >>> accuracy_to_gaussian_scale(accuracy=2., alpha=1. - confidence / 100) 1.020426913849308 You can generally plug the distribution (Laplace or Gaussian), scale, accuracy and alpha into the following statement to interpret these functions: .. code-block:: python f"When the {distribution} scale is {scale}, " f"the DP estimate differs from the true value by no more than {accuracy} " f"at a statistical significance level alpha of {alpha}, " f"or with (1 - {alpha})100% = {(1 - alpha) * 100}% confidence."