31 #ifndef GUM_CONTINGENCY_TABLE_H 32 #define GUM_CONTINGENCY_TABLE_H 34 #include <agrum/tools/core/math/math_utils.h> 35 #include <agrum/tools/core/hashTable.h> 36 #include <agrum/tools/core/set.h> 37 #include <agrum/tools/core/smallobjectallocator/smallObjectAllocator.h> 39 #include <agrum/FMDP/learning/observation.h> 41 #include <agrum/tools/variables/discreteVariable.h> 56 template <
typename GUM_SCALAR_A,
typename GUM_SCALAR_B >
78 return SmallObjectAllocator::instance().allocate(s);
81 SmallObjectAllocator::instance().deallocate(p,
sizeof(ContingencyTable));
94 void add(GUM_SCALAR_A valueA, GUM_SCALAR_B valueB);
100 return jointTable__.exists(
101 std::pair< GUM_SCALAR_A, GUM_SCALAR_B >(valueA, valueB))
102 ? jointTable__[std::pair< GUM_SCALAR_A, GUM_SCALAR_B >(valueA,
111 return attrAMarginalTable__.exists(valueA) ? attrAMarginalTable__[valueA]
119 return attrAMarginalTable__.exists(valueB) ? attrAMarginalTable__[valueB]
129 return attrAMarginalTable__.cbeginSafe();
132 return attrAMarginalTable__.cendSafe();
141 return attrBMarginalTable__.cbeginSafe();
144 return attrBMarginalTable__.cendSafe();
163 std::stringstream ss;
164 ss <<
"\t\t\t\t" << attrAMarginalTable__ << std::endl
165 <<
"\t\t\t\t" << attrBMarginalTable__ << std::endl
166 <<
"\t\t\t\t" << jointTable__ << std::endl;
187 #include <agrum/FMDP/learning/core/contingencyTable_tpl.h> HashTableConstIteratorSafe< GUM_SCALAR_B, Idx > attrBEndSafe() const
Increments the number of sample for case( iattr, ivalue )
Idx attrBSize() const
Returns the number of samples for column ivalue.
Idx attrAMarginal(GUM_SCALAR_A valueA) const
Returns the number of samples for case (iattr, ivalue)
INLINE void emplace(Args &&... args)
void add(GUM_SCALAR_A valueA, GUM_SCALAR_B valueB)
Increments the number of sample for case( iattr, ivalue )
std::string toString() const
HashTable< GUM_SCALAR_A, Idx > attrAMarginalTable__
HashTable< GUM_SCALAR_B, Idx > attrBMarginalTable__
Idx joint(GUM_SCALAR_A valueA, GUM_SCALAR_B valueB) const
Returns the number of samples for case (iattr, ivalue)
~ContingencyTable()
Default destructor.
HashTableConstIteratorSafe< GUM_SCALAR_A, Idx > attrAEndSafe() const
Increments the number of sample for case( iattr, ivalue )
HashTableConstIteratorSafe< GUM_SCALAR_A, Idx > attrABeginSafe() const
Returns the number of samples for line iattr.
void * operator new(size_t s)
Allocators and Deallocators redefinition.
HashTable< std::pair< GUM_SCALAR_A, GUM_SCALAR_B >, Idx > jointTable__
The contingency table used to compute the GStat Left Idx is for the attribute Right Idx for the value...
HashTableConstIteratorSafe< GUM_SCALAR_B, Idx > attrBBeginSafe() const
Returns the number of samples for column ivalue.
ContingencyTable< GUM_SCALAR_A, GUM_SCALAR_B > & operator+=(const ContingencyTable< GUM_SCALAR_A, GUM_SCALAR_B > &src)
ContingencyTable()
Default constructor.
Idx attrASize() const
Returns the number of samples for line iattr.
Idx attrBMarginal(GUM_SCALAR_B valueB) const
Returns the number of samples for case (iattr, ivalue)
void operator delete(void *p)
Default constructor.