41#ifndef GUM_COUNTERFACTUAL_H
42#define GUM_COUNTERFACTUAL_H
101 template < GUM_Numeric GUM_ELEMENT >
226 std::unique_ptr< CausalImpact< GUM_ELEMENT > >
_ci;
250 template < GUM_Numeric GUM_ELEMENT >
272 template < GUM_Numeric GUM_ELEMENT >
CausalModel< GUM_ELEMENT > _twin
const Set< std::string > & on() const
std::unique_ptr< CausalImpact< GUM_ELEMENT > > _ci
HashTable< VarName, ValName > _profile
const CausalFormula< GUM_ELEMENT > & _ciResult() const
HashTable< VarName, ValName > _values
const CausalModel< GUM_ELEMENT > & twinModel() const
const CausalModel< GUM_ELEMENT > & originalModel() const
Tensor< GUM_ELEMENT > _adaptedValue
const Set< std::string > & whatif() const
static CausalModel< GUM_ELEMENT > counterFactualModel(const CausalModel< GUM_ELEMENT > &cm, const HashTable< VarName, ValName > &profile, const Set< std::string > &whatif)
static Tensor< GUM_ELEMENT > _adaptToOriginalVariables_(const Tensor< GUM_ELEMENT > &adj, const CausalModel< GUM_ELEMENT > &cm)
static HashTable< VarName, ValName > _idAssignToNameAssign_(const CausalModel< GUM_ELEMENT > &cm, const HashTable< NodeId, Idx > &idAssign)
const Tensor< GUM_ELEMENT > & value() const
Numeric result adapted to the original model’s variables.
static Set< std::string > _idsToNames_(const CausalModel< GUM_ELEMENT > &cm, const NodeSet &ids)
const HashTable< VarName, ValName > & values() const
const CausalImpact< GUM_ELEMENT > & impact() const
Symbolic result produced on the twin model.
std::string toString() const
const CausalModel< GUM_ELEMENT > & _cm
const HashTable< VarName, ValName > & profile() const
Set< std::string > _whatif
void run()
Rebuild the internal CausalImpact (ctor already calls this).
Counterfactual(const CausalModel< GUM_ELEMENT > &cm, const Set< std::string > &on, const Set< std::string > &whatif, const HashTable< VarName, ValName > &profile=HashTable< VarName, ValName >(), const HashTable< VarName, ValName > &values=HashTable< VarName, ValName >())
Construct a counterfactual query using variable names.
Set< NodeId > NodeSet
Some typdefs and define for shortcuts ...
gum is the global namespace for all aGrUM entities
CausalModel< GUM_ELEMENT > counterfactualModel(const CausalModel< GUM_ELEMENT > &cm, const HashTable< std::string, std::string > &profile, const Set< std::string > &whatif)
Build the twin causal model.
Tensor< GUM_ELEMENT > counterfactual(const CausalModel< GUM_ELEMENT > &cm, const Set< std::string > &on, const Set< std::string > &whatif, const HashTable< std::string, std::string > &profile=HashTable< std::string, std::string >(), const HashTable< std::string, std::string > &values=HashTable< std::string, std::string >())
Compute a counterfactual distribution using the high-level API.