pub enum VarianceReduction {
None,
Antithetic,
ControlVariate {
control_fn: fn(f64) -> f64,
expectation: f64,
},
ImportanceSampling {
sample_fn: fn(&mut SimRng) -> f64,
likelihood_ratio: fn(f64) -> f64,
},
SelfNormalizingIS {
sample_fn: fn(&mut SimRng) -> f64,
weight_fn: fn(f64) -> f64,
},
Stratified {
num_strata: usize,
},
}Expand description
Variance reduction technique.
Variants§
None
No variance reduction.
Antithetic
Antithetic variates: use (U, 1-U) pairs.
ControlVariate
Control variate with known expectation.
ImportanceSampling
Importance sampling with proposal distribution.
Standard importance sampling: E_p[f] = E_q[f * p/q]
Fields
SelfNormalizingIS
Self-normalizing importance sampling.
More robust when the normalizing constant is unknown.
Uses: E_p[f] ≈ Σ(w_i * f(x_i)) / Σ(w_i)
Fields
Stratified
Stratified sampling.
Trait Implementations§
Source§impl Clone for VarianceReduction
impl Clone for VarianceReduction
Source§fn clone(&self) -> VarianceReduction
fn clone(&self) -> VarianceReduction
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for VarianceReduction
impl Debug for VarianceReduction
Source§impl Default for VarianceReduction
impl Default for VarianceReduction
Source§fn default() -> VarianceReduction
fn default() -> VarianceReduction
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for VarianceReduction
impl RefUnwindSafe for VarianceReduction
impl Send for VarianceReduction
impl Sync for VarianceReduction
impl Unpin for VarianceReduction
impl UnsafeUnpin for VarianceReduction
impl UnwindSafe for VarianceReduction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more