pub fn covariance(
vars: &[&RandomVariable],
g: &Ex,
h: &Ex,
) -> Result<Ex, SymplexError>Expand description
Cov[g, h] = E[gh] − E[g]E[h] for expressions in independent
variables. SymPy: covariance(X, 2*X) (= 2 for a standard normal X).
§Errors
As expectation.
§Examples
use symplex::prelude::*;
use symplex::stats::{self, Distribution, RandomVariable};
let ctx = Context::new();
let x = RandomVariable::new(&ctx, "X", Distribution::normal(ctx.int(0), ctx.int(1)));
let y = RandomVariable::new(&ctx, "Y", Distribution::normal(ctx.int(0), ctx.int(1)));
let (xs, ys) = (x.symbol(), y.symbol());
assert_eq!(stats::covariance(&[&x], xs, &(2 * xs))?, ctx.int(2));
// Independent variables are uncorrelated.
assert_eq!(stats::covariance(&[&x, &y], xs, ys)?, ctx.int(0));