class_docstr: This is the basic one dimensional Gaussian-Gamma Mixture estimation class
  Note that it can work with positive or negative values,
  as long as there is at least one positive value.
  NB : The gamma distribution is defined only on positive values.
  
  5 scalar members
  - mean: gaussian mean
  - var: gaussian variance (non-negative)
  - shape: gamma shape (non-negative)
  - scale: gamma scale (non-negative)
  - mixt: mixture parameter (non-negative, weight of the gamma)
class_docstr_tok: ["This","is","the","basic","one","dimensional","Gaussian-Gamma","Mixture","estimation","class","Note","that","it","can","work","with","positive","or","negative","values",",","as","long","as","there","is","at","least","one","positive","value",".","NB",":","The","gamma","distribution","is","defined","only","on","positive","values",".","5","scalar","members","-","mean",":","gaussian","mean","-","var",":","gaussian","variance","(","non-negative",")","-","shape",":","gamma","shape","(","non-negative",")","-","scale",":","gamma","scale","(","non-negative",")","-","mixt",":","mixture","parameter","(","non-negative",",","weight","of","the","gamma",")"]
docstr: Complete EM estimation procedure
  
  Parameters
  ----------
  x : array of shape (nbitems,)
      the data to be processed
  niter : int, optional
      max nb of iterations
  delta : float, optional
      criterion for convergence
  verbose : bool, optional
      If True, print values during iterations
  
  Returns
  -------
  LL, float
      average final log-likelihood
docstr_tok: ["Complete","EM","estimation","procedure","Parameters","--","--","--","--","--","x",":","array","of","shape","(","nbitems",",",")","the","data","to","be","processed","niter",":","int",",","optional","max","nb","of","iterations","delta",":","float",",","optional","criterion","for","convergence","verbose",":","bool",",","optional","If","True",",","print","values","during","iterations","Returns","--","--","--","-","LL",",","float","average","final","log-likelihood"]
code: def estimate(self, x, niter=10, delta=0.0001, verbose=False):
      """Complete EM estimation procedure
  
      Parameters
      ----------
      x : array of shape (nbitems,)
          the data to be processed
      niter : int, optional
          max nb of iterations
      delta : float, optional
          criterion for convergence
      verbose : bool, optional
          If True, print values during iterations
  
      Returns
      -------
      LL, float
          average final log-likelihood
      """
      if x.max() < 0:
          # all the values are generated by the Gaussian
          self.mean = np.mean(x)
          self.var = np.var(x)
          self.mixt = 0.0
          L = 0.5 * (1 + np.log(2 * np.pi * self.var))
          return L
  
      # proceed with standard estimate
      z, L = self.Estep(x)
      L0 = L - 2 * delta
      for i in range(niter):
          self.Mstep(x, z)
          z, L = self.Estep(x)
          if verbose:
              print(i, L)
          if L < L0 + delta:
              break
          L0 = L
      return L
  
imports: import numpy
  import scipy.special
  import scipy.stats
label_desc: Use image node_id 5 for calling the GGM obj's underlying member method code with example usage: obj.estimate(x, niter, delta, verbose) and returns: L, L