uncertain

Crates.iouncertain
lib.rsuncertain
version0.3.1
sourcesrc
created_at2021-02-25 00:27:30.430632
updated_at2021-03-11 20:06:17.877752
descriptionFast and correct computations with uncertain values.
homepage
repositoryhttps://github.com/dyedgreen/uncertain
max_upload_size
id360182
size47,825
Tilman Roeder (dyedgreen)

documentation

README

Uncertain<T>

crates.io Released API docs CI MIT licensed

Fast and correct computations with uncertain values.

When working with values which are not exactly determined, such as sensor data, it can be difficult to handle uncertainties correctly.

The Uncertain trait makes such computations as natural as regular computations:

use uncertain::{Uncertain, Distribution};
use rand_distr::Normal;

// Some inputs about which we are not sure
let x = Distribution::from(Normal::new(5.0, 2.0).unwrap());
let y = Distribution::from(Normal::new(7.0, 3.0).unwrap());

// Do some computations
let distance = x.sub(y).map(|diff: f64| diff.abs());

// Ask a question about the result
let is_it_far = distance.map(|dist| dist > 2.0);

// Check how certain the answer is
assert_eq!(is_it_far.pr(0.9), false);
assert_eq!(is_it_far.pr(0.5), true);

This works by sampling a Bayesian network which is implicitly created by describing the computation on the uncertain type. The Uncertain trait only permits tests for simple boolean hypotheses. This is by design: using Wald's sequential probability ratio test, evaluation typically takes less than 100 samples.

Stability

While this crate is released as version 0.x, breaking API changes should be expected.

References

The Uncertain trait exported from the library is an implementation of the paper Uncertain<T>.

Commit count: 50

cargo fmt