pub enum CausalEffectVerdict {
Identified {
adjustment_set: Vec<String>,
back_door_paths_considered: usize,
},
IdentifiedByFrontDoor {
mediator_set: Vec<String>,
},
NoCausalPath {
reason: String,
},
Underidentified {
unblocked_back_door_paths: Vec<Vec<String>>,
candidates_tried: usize,
},
UnknownNode {
which: String,
},
}Expand description
v0.44: verdict on whether the causal effect of source on
target is identifiable from observational data over the
frontier’s link graph. The lift of v0.40’s Identifiability to
graph-aware reasoning.
Variants§
Identified
All back-door paths from source to target are blocked by the adjustment set under the back-door criterion.
Fields
IdentifiedByFrontDoor
v0.44.2: identified via Pearl’s front-door criterion (1995 §3.3). Used when confounders may be unobserved but a mediator set M satisfies all three front-door conditions:
- M intercepts every directed path from source to target.
- There is no back-door path from source to any element of M.
- All back-door paths from M to target are blocked by source. The effect is then identifiable via the front-door formula P(Y | do(X)) = Σ_m P(M = m | X) Σ_{x’} P(Y | M = m, X = x’) P(X = x’).
Fields
NoCausalPath
Source and target are not connected, or source has no directed path to target — the effect question is ill-posed at the graph level.
Underidentified
At least one open back-door path remains under every adjustment set the search examined, AND no front-door mediator was found. The effect is not identifiable from observational data alone — an intervention is required.
UnknownNode
Either source or target is missing from the frontier.
Implementations§
Trait Implementations§
Source§impl Clone for CausalEffectVerdict
impl Clone for CausalEffectVerdict
Source§fn clone(&self) -> CausalEffectVerdict
fn clone(&self) -> CausalEffectVerdict
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CausalEffectVerdict
impl Debug for CausalEffectVerdict
Source§impl<'de> Deserialize<'de> for CausalEffectVerdict
impl<'de> Deserialize<'de> for CausalEffectVerdict
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for CausalEffectVerdict
impl PartialEq for CausalEffectVerdict
Source§fn eq(&self, other: &CausalEffectVerdict) -> bool
fn eq(&self, other: &CausalEffectVerdict) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for CausalEffectVerdict
impl Serialize for CausalEffectVerdict
impl Eq for CausalEffectVerdict
impl StructuralPartialEq for CausalEffectVerdict
Auto Trait Implementations§
impl Freeze for CausalEffectVerdict
impl RefUnwindSafe for CausalEffectVerdict
impl Send for CausalEffectVerdict
impl Sync for CausalEffectVerdict
impl Unpin for CausalEffectVerdict
impl UnsafeUnpin for CausalEffectVerdict
impl UnwindSafe for CausalEffectVerdict
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.