Function information::mutual::mutual_information
source · [−]Expand description
Mutual Information
https://en.wikipedia.org/wiki/Mutual_information
Calculates the mutual information of a two-dimensional probability matrix
The mutual information I(X;Y) is calculated as follows:
I(X;Y) = Σ Σ p(x,y) ln [ p(x,y) / (p(x) * p(y) ]
y x
Usage
use ndarray::Array1;
use ndarray_rand::{RandomExt, rand_distr::Uniform};
use information::{prob2d, mutual_information};
use approx::assert_relative_eq;
let c_x = Array1::random(1000, Uniform::new(0, 3));
let c_y = Array1::random(1000, Uniform::new(0, 3));
let p_xy = prob2d(&c_x, &c_y, 4, 4).unwrap();
let p_yx = prob2d(&c_y, &c_x, 4, 4).unwrap();
let i_xy = mutual_information(&p_xy);
let i_yx = mutual_information(&p_yx);
// Measures: I(X;Y) = I(Y;X)
assert_relative_eq!(i_xy, i_yx, epsilon=1e-14);