Skip to main content

Apo

Struct Apo 

Source
pub struct Apo { /* private fields */ }
Expand description

Average potential outcome E[Y(d)] of one treatment level d.

ml_g learns E[Y | D = d, X] on the units at level d; ml_m learns the generalised propensity P(D = d | X). A second outcome model, trained on (D, X) for the units at the other levels, enters only the sensitivity analysis (as in DoubleML). Default sample splits are stratified by the treatment.

Implementations§

Source§

impl Apo

Source

pub fn new( ml_g: impl Regressor + 'static, ml_m: impl Classifier + 'static, treatment_level: f64, ) -> Self

Source

pub fn from_boxed( ml_g: Box<dyn Regressor>, ml_m: Box<dyn Classifier>, treatment_level: f64, ) -> Self

Source

pub fn clipping_threshold(self, t: f64) -> Self

Propensity scores are clipped to [t, 1 − t] (default t = 0.01).

Source

pub fn normalize_ipw(self, normalize: bool) -> Self

Normalise the inverse-probability weights, as DoubleML’s normalize_ipw=True.

Source

pub fn weights(self, weights: Array1<f64>) -> Self

Weighted average potential outcome, as DoubleML’s weights: E[w·g(d, X)] / E[w] (e.g. w = 1{X ∈ G} for a subgroup).

Source

pub fn weights_with_bar( self, weights: Array1<f64>, weights_bar: Array2<f64>, ) -> Self

Weights with separate weights_bar for the inverse-probability correction, one column per repetition (DoubleML’s dict form).

Source

pub fn n_folds(self, n_folds: usize) -> Self

Number of cross-fitting folds (default 5).

Source

pub fn n_rep(self, n_rep: usize) -> Self

Number of independent sample splits (default 1). Estimates are aggregated across repetitions by the median, as in DoubleML.

Source

pub fn seed(self, seed: u64) -> Self

Seed for the sample splits (default 0).

Source

pub fn fit(&self, data: &DmlData) -> Result<DmlFit>

Draw seeded sample splits and fit. With clustered data (DmlData::with_clusters) whole clusters are assigned to folds and standard errors are cluster-robust.

Source

pub fn fit_with_cluster_folds( &self, data: &DmlData, splits: &[Vec<ClusterFold>], ) -> Result<DmlFit>

Fit clustered data with explicit cluster folds, one Vec<ClusterFold> per repetition.

Source

pub fn sensitivity_benchmark( &self, data: &DmlData, long: &DmlFit, benchmarking_set: &[usize], ) -> Result<SensitivityBenchmark>

Sensitivity benchmark for the covariate columns benchmarking_set: refits this model without them (with the same sample splitting, so long must come from fit with the current settings) and compares it with long.

Source

pub fn fit_with_folds( &self, data: &DmlData, splits: &[Vec<Fold>], ) -> Result<DmlFit>

Fit with caller-supplied splits, one Vec<Fold> per repetition (e.g. to reproduce another implementation exactly).

Trait Implementations§

Source§

impl LinearScoreModel for Apo

Source§

fn name(&self) -> String

Label for summaries, e.g. "PLR (partialling out)".
Source§

fn validate(&self, data: &DmlData) -> Result<()>

Reject data the model cannot handle (called once before fitting).
Source§

fn strata(&self, data: &DmlData) -> Option<Vec<usize>>

Strata for the default sample splits (e.g. treatment levels), so each fold holds about the same share of every stratum. None (the default) draws plain K-fold splits.
Source§

fn estimate_score( &self, input: &ScoreInput<'_>, folds: &[Fold], ) -> Result<ScoreEstimate>

Cross-fit the nuisances on folds and return the score elements.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Apo

§

impl !UnwindSafe for Apo

§

impl Freeze for Apo

§

impl Send for Apo

§

impl Sync for Apo

§

impl Unpin for Apo

§

impl UnsafeUnpin for Apo

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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.
Source§

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V