aGrUM  0.17.2
a C++ library for (probabilistic) graphical models
gum::GTestPolicy< GUM_SCALAR > Class Template Reference

<agrum/tools/multidim/core/testPolicies/GTestPolicy.h> More...

#include <GTestPolicy.h>

+ Inheritance diagram for gum::GTestPolicy< GUM_SCALAR >:
+ Collaboration diagram for gum::GTestPolicy< GUM_SCALAR >:

Public Member Functions

Constructor/Destrcutor
 GTestPolicy ()
 Constructor. More...
 
virtual ~GTestPolicy ()
 Destructor. More...
 
void * operator new (size_t s)
 Allocators and Deallocators redefinition. More...
 
void operator delete (void *p)
 Constructor. More...
 
Observation insertion
void addObservation (Idx iattr, GUM_SCALAR ivalue)
 Comptabilizes the new observation. More...
 
Test methods
bool isTestRelevant () const
 Returns true if enough observation were made so that the test can be relevant. More...
 
void computeScore () const
 Computes the GStat of current variable according to the test. More...
 
double score () const
 Returns the performance of current variable according to the test. More...
 
double secondaryscore () const
 Returns a second criterion to severe ties. More...
 
Fusion Methods
void add (const GTestPolicy< GUM_SCALAR > &src)
 Performs the merging of current GTestPolicy instance with given instance. More...
 
const ContingencyTable< Idx, GUM_SCALAR > & ct () const
 Returns contingency table (needed for the merging of GTestPolicy instances) More...
 
Miscelleanous Methods
std::string toString () const
 
Observation methods
Idx nbObservation () const
 Comptabilizes the new observation. More...
 
Fusion Methods
void add (const ITestPolicy< GUM_SCALAR > &src)
 

Protected Member Functions

bool _isModified () const
 

Detailed Description

template<typename GUM_SCALAR>
class gum::GTestPolicy< GUM_SCALAR >

<agrum/tools/multidim/core/testPolicies/GTestPolicy.h>

G implements a test policy that follows the G statistic

Definition at line 53 of file GTestPolicy.h.

Constructor & Destructor Documentation

◆ GTestPolicy()

template<typename GUM_SCALAR>
gum::GTestPolicy< GUM_SCALAR >::GTestPolicy ( )
inline

Constructor.

Definition at line 63 of file GTestPolicy.h.

63  : ITestPolicy< GUM_SCALAR >(), __conTab(), __GStat(0) {
64  GUM_CONSTRUCTOR(GTestPolicy);
65  }
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
GTestPolicy()
Constructor.
Definition: GTestPolicy.h:63

◆ ~GTestPolicy()

template<typename GUM_SCALAR>
virtual gum::GTestPolicy< GUM_SCALAR >::~GTestPolicy ( )
inlinevirtual

Destructor.

Definition at line 70 of file GTestPolicy.h.

70 { GUM_DESTRUCTOR(GTestPolicy); }
GTestPolicy()
Constructor.
Definition: GTestPolicy.h:63

Member Function Documentation

◆ _isModified()

template<typename GUM_SCALAR>
bool gum::ITestPolicy< GUM_SCALAR >::_isModified ( ) const
inlineprotectedinherited

Definition at line 165 of file ITestPolicy.h.

References gum::ITestPolicy< GUM_SCALAR >::__isModified.

165 { return __isModified; }
bool __isModified
Booleans indicating if we have to re eval test.
Definition: ITestPolicy.h:169

◆ add() [1/2]

template<typename GUM_SCALAR >
void gum::GTestPolicy< GUM_SCALAR >::add ( const GTestPolicy< GUM_SCALAR > &  src)

Performs the merging of current GTestPolicy instance with given instance.

Definition at line 112 of file GTestPolicy_tpl.h.

References gum::ITestPolicy< GUM_SCALAR >::add(), and gum::GTestPolicy< GUM_SCALAR >::ct().

Referenced by gum::GTestPolicy< GUM_SCALAR >::isTestRelevant().

112  {
114  __conTab += src.ct();
115  }
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
void add(const ITestPolicy< GUM_SCALAR > &src)
Definition: ITestPolicy.h:140
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ add() [2/2]

template<typename GUM_SCALAR>
void gum::ITestPolicy< GUM_SCALAR >::add ( const ITestPolicy< GUM_SCALAR > &  src)
inlineinherited

Definition at line 140 of file ITestPolicy.h.

References gum::ITestPolicy< GUM_SCALAR >::__isModified, gum::ITestPolicy< GUM_SCALAR >::__nbObs, and gum::ITestPolicy< GUM_SCALAR >::nbObservation().

Referenced by gum::Chi2TestPolicy< GUM_SCALAR >::add(), gum::GTestPolicy< GUM_SCALAR >::add(), and gum::LeastSquareTestPolicy< GUM_SCALAR >::add().

140  {
141  __isModified = true;
142  __nbObs += src.nbObservation();
143  }
bool __isModified
Booleans indicating if we have to re eval test.
Definition: ITestPolicy.h:169
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addObservation()

template<typename GUM_SCALAR >
void gum::GTestPolicy< GUM_SCALAR >::addObservation ( Idx  iattr,
GUM_SCALAR  ivalue 
)
virtual

Comptabilizes the new observation.

Reimplemented from gum::ITestPolicy< GUM_SCALAR >.

Definition at line 46 of file GTestPolicy_tpl.h.

References gum::ITestPolicy< GUM_SCALAR >::addObservation().

Referenced by gum::GTestPolicy< GUM_SCALAR >::operator delete().

46  {
48  __conTab.add(iattr, ivalue);
49  }
virtual void addObservation(Idx attr, GUM_SCALAR value)
Comptabilizes the new observation.
Definition: ITestPolicy.h:90
void add(GUM_SCALAR_A valueA, GUM_SCALAR_B valueB)
Increments the number of sample for case( iattr, ivalue )
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ computeScore()

template<typename GUM_SCALAR >
void gum::GTestPolicy< GUM_SCALAR >::computeScore ( ) const
virtual

Computes the GStat of current variable according to the test.

Reimplemented from gum::ITestPolicy< GUM_SCALAR >.

Definition at line 60 of file GTestPolicy_tpl.h.

References gum::ITestPolicy< GUM_SCALAR >::computeScore().

Referenced by gum::GTestPolicy< GUM_SCALAR >::isTestRelevant().

60  {
62  __GStat = 0;
63 
64  // Itération sur l'axe 1 du tableau
65  for (auto attrIter = __conTab.attrABeginSafe();
66  attrIter != __conTab.attrAEndSafe();
67  ++attrIter) {
68  // Mise en cache de valeur utile
69  double semiExpected =
70  (double)(attrIter.val()) / (double)this->nbObservation();
71 
72  // Itération sur l'axe 2 du tableau
73  for (auto valIter = __conTab.attrBBeginSafe();
74  valIter != __conTab.attrBEndSafe();
75  ++valIter) {
76  // Récupération de la valeur en cellule
77  Idx cell = __conTab.joint(attrIter.key(), valIter.key());
78  if (cell < 5) continue;
79 
80  // Récupération de la valeur en axe 2
81  double expected = semiExpected * (double)valIter.val();
82 
83  __GStat += 2 * cell * log(cell / expected);
84  }
85  }
86  }
virtual void computeScore() const
Recomputes the statistic from the beginning.
Definition: ITestPolicy.h:117
HashTableConstIteratorSafe< GUM_SCALAR_B, Idx > attrBEndSafe() const
Increments the number of sample for case( iattr, ivalue )
Idx joint(GUM_SCALAR_A valueA, GUM_SCALAR_B valueB) const
Returns the number of samples for case (iattr, ivalue)
HashTableConstIteratorSafe< GUM_SCALAR_A, Idx > attrAEndSafe() const
Increments the number of sample for case( iattr, ivalue )
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
HashTableConstIteratorSafe< GUM_SCALAR_A, Idx > attrABeginSafe() const
Returns the number of samples for line iattr.
HashTableConstIteratorSafe< GUM_SCALAR_B, Idx > attrBBeginSafe() const
Returns the number of samples for column ivalue.
Idx nbObservation() const
Comptabilizes the new observation.
Definition: ITestPolicy.h:98
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ct()

template<typename GUM_SCALAR>
const ContingencyTable< Idx, GUM_SCALAR >& gum::GTestPolicy< GUM_SCALAR >::ct ( ) const
inline

Returns contingency table (needed for the merging of GTestPolicy instances)

Definition at line 145 of file GTestPolicy.h.

References gum::GTestPolicy< GUM_SCALAR >::__conTab.

Referenced by gum::GTestPolicy< GUM_SCALAR >::add().

145 { return __conTab; }
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
+ Here is the caller graph for this function:

◆ isTestRelevant()

template<typename GUM_SCALAR>
bool gum::GTestPolicy< GUM_SCALAR >::isTestRelevant ( ) const
inlinevirtual

Returns true if enough observation were made so that the test can be relevant.

Implements gum::ITestPolicy< GUM_SCALAR >.

Definition at line 107 of file GTestPolicy.h.

References gum::GTestPolicy< GUM_SCALAR >::__conTab, gum::GTestPolicy< GUM_SCALAR >::add(), gum::ContingencyTable< GUM_SCALAR_A, GUM_SCALAR_B >::attrASize(), gum::GTestPolicy< GUM_SCALAR >::computeScore(), gum::ITestPolicy< GUM_SCALAR >::nbObservation(), gum::GTestPolicy< GUM_SCALAR >::score(), and gum::GTestPolicy< GUM_SCALAR >::secondaryscore().

107  {
108  return (this->nbObservation() > 20
109  && this->nbObservation() > __conTab.attrASize() * 5);
110  }
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
Idx nbObservation() const
Comptabilizes the new observation.
Definition: ITestPolicy.h:98
Idx attrASize() const
Returns the number of samples for line iattr.
+ Here is the call graph for this function:

◆ nbObservation()

template<typename GUM_SCALAR>
Idx gum::ITestPolicy< GUM_SCALAR >::nbObservation ( ) const
inlineinherited

Comptabilizes the new observation.

Definition at line 98 of file ITestPolicy.h.

References gum::ITestPolicy< GUM_SCALAR >::__nbObs, and gum::ITestPolicy< GUM_SCALAR >::isTestRelevant().

Referenced by gum::ITestPolicy< GUM_SCALAR >::add(), gum::Chi2TestPolicy< GUM_SCALAR >::isTestRelevant(), gum::LeastSquareTestPolicy< GUM_SCALAR >::isTestRelevant(), and gum::GTestPolicy< GUM_SCALAR >::isTestRelevant().

98 { return __nbObs; }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator delete()

template<typename GUM_SCALAR>
void gum::GTestPolicy< GUM_SCALAR >::operator delete ( void *  p)
inline

Constructor.

Definition at line 79 of file GTestPolicy.h.

References gum::GTestPolicy< GUM_SCALAR >::addObservation(), gum::SmallObjectAllocator::deallocate(), and gum::SmallObjectAllocator::instance().

79  {
81  }
void deallocate(void *pDeallocatedObject, const size_t &objectSize)
Deallocates an object.
GTestPolicy()
Constructor.
Definition: GTestPolicy.h:63
static SmallObjectAllocator & instance()
+ Here is the call graph for this function:

◆ operator new()

template<typename GUM_SCALAR>
void* gum::GTestPolicy< GUM_SCALAR >::operator new ( size_t  s)
inline

Allocators and Deallocators redefinition.

Definition at line 75 of file GTestPolicy.h.

References gum::SmallObjectAllocator::allocate(), and gum::SmallObjectAllocator::instance().

75  {
77  }
void * allocate(const size_t &objectSize)
Allocates a block.
static SmallObjectAllocator & instance()
+ Here is the call graph for this function:

◆ score()

template<typename GUM_SCALAR >
double gum::GTestPolicy< GUM_SCALAR >::score ( ) const
virtual

Returns the performance of current variable according to the test.

Implements gum::ITestPolicy< GUM_SCALAR >.

Definition at line 92 of file GTestPolicy_tpl.h.

References gum::ChiSquare::probaChi2().

Referenced by gum::GTestPolicy< GUM_SCALAR >::isTestRelevant().

92  {
93  if (this->_isModified()) computeScore();
94  // std::cout << this->toString() << std::endl;
95  double score =
96  1
98  __GStat, (__conTab.attrASize() - 1) * (__conTab.attrBSize() - 1));
99  return score;
100  }
void computeScore() const
Computes the GStat of current variable according to the test.
Idx attrBSize() const
Returns the number of samples for column ivalue.
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
static double probaChi2(double x, Size df)
computes the probability of chi2 value (used by the cache)
Definition: chiSquare.cpp:118
double score() const
Returns the performance of current variable according to the test.
bool _isModified() const
Definition: ITestPolicy.h:165
Idx attrASize() const
Returns the number of samples for line iattr.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ secondaryscore()

template<typename GUM_SCALAR >
double gum::GTestPolicy< GUM_SCALAR >::secondaryscore ( ) const
virtual

Returns a second criterion to severe ties.

Implements gum::ITestPolicy< GUM_SCALAR >.

Definition at line 106 of file GTestPolicy_tpl.h.

Referenced by gum::GTestPolicy< GUM_SCALAR >::isTestRelevant(), and gum::GTestPolicy< GUM_SCALAR >::toString().

106  {
107  if (this->_isModified()) computeScore();
108  return __GStat;
109  }
void computeScore() const
Computes the GStat of current variable according to the test.
bool _isModified() const
Definition: ITestPolicy.h:165
+ Here is the caller graph for this function:

◆ toString()

template<typename GUM_SCALAR>
std::string gum::GTestPolicy< GUM_SCALAR >::toString ( ) const
inline

Definition at line 156 of file GTestPolicy.h.

References gum::GTestPolicy< GUM_SCALAR >::__conTab, gum::GTestPolicy< GUM_SCALAR >::__GStat, gum::GTestPolicy< GUM_SCALAR >::secondaryscore(), and gum::ContingencyTable< GUM_SCALAR_A, GUM_SCALAR_B >::toString().

156  {
157  std::stringstream ss;
158  ss << ITestPolicy< GUM_SCALAR >::toString()
159  << "\t\t\tContingency Table : " << std::endl
160  << __conTab.toString() << std::endl
161  << "\t\t\tGStat : " << __GStat << std::endl
162  << "\t\t\tGStat : " << this->secondaryscore() << std::endl;
163  return ss.str();
164  }
std::string toString() const
ContingencyTable< Idx, GUM_SCALAR > __conTab
The contingency table used to keeps records of all observation.
Definition: GTestPolicy.h:170
double secondaryscore() const
Returns a second criterion to severe ties.
+ Here is the call graph for this function:

Member Data Documentation

◆ __conTab

template<typename GUM_SCALAR>
ContingencyTable< Idx, GUM_SCALAR > gum::GTestPolicy< GUM_SCALAR >::__conTab
private

The contingency table used to keeps records of all observation.

Definition at line 170 of file GTestPolicy.h.

Referenced by gum::GTestPolicy< GUM_SCALAR >::ct(), gum::GTestPolicy< GUM_SCALAR >::isTestRelevant(), and gum::GTestPolicy< GUM_SCALAR >::toString().

◆ __GStat

template<typename GUM_SCALAR>
double gum::GTestPolicy< GUM_SCALAR >::__GStat
mutableprivate

Definition at line 171 of file GTestPolicy.h.

Referenced by gum::GTestPolicy< GUM_SCALAR >::toString().


The documentation for this class was generated from the following files: