49#ifndef DOXYGEN_SHOULD_SKIP_THIS
61 const std::vector< std::pair< std::size_t, std::size_t > >& ranges,
62 const Bijection< NodeId, std::size_t >& nodeId2columns) :
64 _domain_sizes_(parser.database().domainSizes()), _chi2_(_domain_sizes_) {
65 GUM_CONSTRUCTOR(IndepTestChi2);
69 INLINE IndepTestChi2::IndepTestChi2(
const DBRowGeneratorParser& parser,
71 const Bijection< NodeId, std::size_t >& nodeId2columns) :
72 IndependenceTest(parser, prior, nodeId2columns),
73 _domain_sizes_(parser.database().domainSizes()), _chi2_(_domain_sizes_) {
74 GUM_CONSTRUCTOR(IndepTestChi2);
78 INLINE IndepTestChi2::IndepTestChi2(
const IndepTestChi2& from) :
79 IndependenceTest(from), _domain_sizes_(from._domain_sizes_), _chi2_(_domain_sizes_) {
80 GUM_CONS_CPY(IndepTestChi2);
84 INLINE IndepTestChi2::IndepTestChi2(IndepTestChi2&& from) :
85 IndependenceTest(
std::move(from)), _domain_sizes_(from._domain_sizes_),
86 _chi2_(_domain_sizes_) {
87 GUM_CONS_MOV(IndepTestChi2);
91 INLINE IndepTestChi2* IndepTestChi2::clone()
const {
return new IndepTestChi2(*
this); }
94 INLINE IndepTestChi2::~IndepTestChi2() { GUM_DESTRUCTOR(IndepTestChi2); }
97 INLINE std::pair< double, double >
98 IndepTestChi2::statistics(NodeId var1, NodeId var2,
const std::vector< NodeId >& rhs_ids) {
99 return statistics_(IdCondSet(var1, var2, rhs_ids,
false));
103 INLINE
double IndepTestChi2::score_(
const IdCondSet& idset) {
104 const auto& nodeId2cols = this->counter_.nodeId2Columns();
106 if (nodeId2cols.empty()) {
110 var_x = nodeId2cols.second(idset[0]);
111 var_y = nodeId2cols.second(idset[1]);
114 auto stat = statistics_(idset);
115 double score = stat.first;
121 const double alpha = _chi2_.criticalValue(var_x, var_y);
122 score = (score - alpha) / alpha;
the class used to read a row in the database and to transform it into a set of DBRow instances that c...
IndepTestChi2(const DBRowGeneratorParser &parser, const Prior &external_prior, const std::vector< std::pair< std::size_t, std::size_t > > &ranges, const Bijection< NodeId, std::size_t > &nodeId2columns=Bijection< NodeId, std::size_t >())
default constructor
The base class for all the independence tests used for learning.
the base class for all a priori
A class used by learning caches to represent uniquely sets of variables.
include the inlined functions if necessary
gum is the global namespace for all aGrUM entities