docs: def check_model(self):
          """
          Check the model for various errors. This method checks for the following
          errors.
  
          * Checks if the sum of the probabilities in each associated CPD for each
              state is equal to 1 (tol=0.01).
          * Checks if the CPDs associated with nodes are consistent with their parents.
  
          Returns
          -------
          boolean: True if everything seems to be order. Otherwise raises error
              according to the problem.
          """
          for node in super(DynamicBayesianNetwork, self).nodes():
              cpd = self.get_cpds(node=node)
              if isinstance(cpd, TabularCPD):
                  evidence = cpd.variables[:0:-1]
                  evidence_card = cpd.cardinality[:0:-1]
                  parents = self.get_parents(node)
                  if set(evidence) != set(parents if parents else []):
                      raise ValueError("CPD associated with {node} doesn't have "
                                       "proper parents associated with it.".format(node=node))
                  if not np.allclose(cpd.to_factor().marginalize([node], inplace=False).values.flatten('C'),
                                     np.ones(np.product(evidence_card)),
                                     atol=0.01):
                      raise ValueError('Sum of probabilities of states for node {node}'
                                       ' is not equal to 1'.format(node=node))
          return True