pub struct Did { /* private fields */ }Expand description
Difference-in-differences with panel data (two periods): y must be
the outcome change Y₁ − Y₀. ml_g learns E[ΔY | D = d, X] per group,
ml_m the propensity P(D = 1 | X) (observational score only).
Implementations§
Source§impl Did
impl Did
Sourcepub fn new(
ml_g: impl Regressor + 'static,
ml_m: impl Classifier + 'static,
) -> Self
pub fn new( ml_g: impl Regressor + 'static, ml_m: impl Classifier + 'static, ) -> Self
Observational design (doubly robust score).
Sourcepub fn experimental(ml_g: impl Regressor + 'static) -> Self
pub fn experimental(ml_g: impl Regressor + 'static) -> Self
Randomised design: only the outcome model is needed.
pub fn from_boxed( ml_g: Box<dyn Regressor>, ml_m: Option<Box<dyn Classifier>>, ) -> Self
Sourcepub fn in_sample_normalization(self, normalize: bool) -> Self
pub fn in_sample_normalization(self, normalize: bool) -> Self
Normalise the weights by their sample means (default true, as
DoubleML); false uses the plug-in probabilities.
Sourcepub fn clipping_threshold(self, t: f64) -> Self
pub fn clipping_threshold(self, t: f64) -> Self
Propensities are clipped to [t, 1 − t] (default 0.01).
Sourcepub fn n_rep(self, n_rep: usize) -> Self
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.
Sourcepub fn fit(&self, data: &DmlData) -> Result<DmlFit>
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.
Sourcepub fn fit_with_cluster_folds(
&self,
data: &DmlData,
splits: &[Vec<ClusterFold>],
) -> Result<DmlFit>
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.
Sourcepub fn sensitivity_benchmark(
&self,
data: &DmlData,
long: &DmlFit,
benchmarking_set: &[usize],
) -> Result<SensitivityBenchmark>
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.
Trait Implementations§
Source§impl LinearScoreModel for Did
impl LinearScoreModel for Did
Source§fn validate(&self, data: &DmlData) -> Result<()>
fn validate(&self, data: &DmlData) -> Result<()>
Source§fn estimate_score(
&self,
input: &ScoreInput<'_>,
folds: &[Fold],
) -> Result<ScoreEstimate>
fn estimate_score( &self, input: &ScoreInput<'_>, folds: &[Fold], ) -> Result<ScoreEstimate>
folds and return the score elements.Auto Trait Implementations§
impl !RefUnwindSafe for Did
impl !UnwindSafe for Did
impl Freeze for Did
impl Send for Did
impl Sync for Did
impl Unpin for Did
impl UnsafeUnpin for Did
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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