Struct average::WeightedMeanWithError

source ·
pub struct WeightedMeanWithError { /* private fields */ }
Expand description

Estimate the weighted and unweighted arithmetic mean and the unweighted variance of a sequence of numbers (“population”).

This can be used to estimate the standard error of the weighted mean.

§Example

use average::WeightedMeanWithError;

let a: WeightedMeanWithError = (1..6).zip(1..6)
    .map(|(x, w)| (f64::from(x), f64::from(w))).collect();
println!("The weighted mean is {} ± {}.", a.weighted_mean(), a.error());

Implementations§

source§

impl WeightedMeanWithError

source

pub fn new() -> WeightedMeanWithError

Create a new weighted and unweighted mean estimator.

source

pub fn add(&mut self, sample: f64, weight: f64)

Add an observation sampled from the population.

source

pub fn is_empty(&self) -> bool

Determine whether the sample is empty.

source

pub fn sum_weights(&self) -> f64

Return the sum of the weights.

Returns 0 for an empty sample.

source

pub fn sum_weights_sq(&self) -> f64

Return the sum of the squared weights.

Returns 0 for an empty sample.

source

pub fn weighted_mean(&self) -> f64

Estimate the weighted mean of the population.

Returns NaN for an empty sample, or if the sum of weights is zero.

source

pub fn unweighted_mean(&self) -> f64

Estimate the unweighted mean of the population.

Returns NaN for an empty sample.

source

pub fn len(&self) -> u64

Return the sample size.

source

pub fn effective_len(&self) -> f64

Calculate the effective sample size.

source

pub fn population_variance(&self) -> f64

Calculate the unweighted population variance of the sample.

This is a biased estimator of the variance of the population.

Returns NaN for an empty sample.

source

pub fn sample_variance(&self) -> f64

Calculate the unweighted sample variance.

This is an unbiased estimator of the variance of the population.

Returns NaN for samples of size 1 or less.

source

pub fn variance_of_weighted_mean(&self) -> f64

Estimate the standard error of the weighted mean of the population.

Returns NaN if the sample is empty, or if the sum of weights is zero.

This unbiased estimator assumes that the samples were independently drawn from the same population with constant variance.

source

pub fn error(&self) -> f64

Available on crate features std or libm only.

Estimate the standard error of the weighted mean of the population.

Returns NaN if the sample is empty, or if the sum of weights is zero.

This unbiased estimator assumes that the samples were independently drawn from the same population with constant variance.

Trait Implementations§

source§

impl Clone for WeightedMeanWithError

source§

fn clone(&self) -> WeightedMeanWithError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WeightedMeanWithError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WeightedMeanWithError

source§

fn default() -> WeightedMeanWithError

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for WeightedMeanWithError

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<'a> Extend<&'a (f64, f64)> for WeightedMeanWithError

source§

fn extend<T: IntoIterator<Item = &'a (f64, f64)>>(&mut self, iter: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl Extend<(f64, f64)> for WeightedMeanWithError

source§

fn extend<T: IntoIterator<Item = (f64, f64)>>(&mut self, iter: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl<'a> FromIterator<&'a (f64, f64)> for WeightedMeanWithError

source§

fn from_iter<T>(iter: T) -> WeightedMeanWithError
where T: IntoIterator<Item = &'a (f64, f64)>,

Creates a value from an iterator. Read more
source§

impl FromIterator<(f64, f64)> for WeightedMeanWithError

source§

fn from_iter<T>(iter: T) -> WeightedMeanWithError
where T: IntoIterator<Item = (f64, f64)>,

Creates a value from an iterator. Read more
source§

impl Merge for WeightedMeanWithError

source§

fn merge(&mut self, other: &WeightedMeanWithError)

Merge another sample into this one.

§Example
use average::{WeightedMeanWithError, Merge};

let weighted_sequence: &[(f64, f64)] = &[
    (1., 0.1), (2., 0.2), (3., 0.3), (4., 0.4), (5., 0.5),
    (6., 0.6), (7., 0.7), (8., 0.8), (9., 0.9)];
let (left, right) = weighted_sequence.split_at(3);
let avg_total: WeightedMeanWithError = weighted_sequence.iter().collect();
let mut avg_left: WeightedMeanWithError = left.iter().collect();
let avg_right: WeightedMeanWithError = right.iter().collect();
avg_left.merge(&avg_right);
assert!((avg_total.weighted_mean() - avg_left.weighted_mean()).abs() < 1e-15);
assert!((avg_total.error() - avg_left.error()).abs() < 1e-15);
source§

impl Serialize for WeightedMeanWithError

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<S, T> Cast<T> for S
where T: Conv<S>,

source§

fn cast(self) -> T

Cast from Self to T Read more
source§

fn try_cast(self) -> Result<T, Error>

Try converting from Self to T Read more
source§

impl<S, T> CastApprox<T> for S
where T: ConvApprox<S>,

source§

fn try_cast_approx(self) -> Result<T, Error>

Try approximate conversion from Self to T Read more
source§

fn cast_approx(self) -> T

Cast approximately from Self to T Read more
source§

impl<S, T> CastFloat<T> for S
where T: ConvFloat<S>,

source§

fn cast_trunc(self) -> T

Cast to integer, truncating Read more
source§

fn cast_nearest(self) -> T

Cast to the nearest integer Read more
source§

fn cast_floor(self) -> T

Cast the floor to an integer Read more
source§

fn cast_ceil(self) -> T

Cast the ceiling to an integer Read more
source§

fn try_cast_trunc(self) -> Result<T, Error>

Try converting to integer with truncation Read more
source§

fn try_cast_nearest(self) -> Result<T, Error>

Try converting to the nearest integer Read more
source§

fn try_cast_floor(self) -> Result<T, Error>

Try converting the floor to an integer Read more
source§

fn try_cast_ceil(self) -> Result<T, Error>

Try convert the ceiling to an integer Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,