class_docstr: Hurdle Negative Binomial log-likelihood.
  
  The negative binomial distribution describes a Poisson random variable
  whose rate parameter is gamma distributed.
  
  The difference with ZeroInflatedNegativeBinomial is that the zeros are not inflated,
  they come from a completely independent process.
  
  The pmf of this distribution is
  
  .. math::
  
      f(x \mid \psi, \mu, \alpha) =
          \left\{
              \begin{array}{l}
              (1 - \psi)  \ \text{if } x = 0 \\
              \psi
              \frac{\text{NegativeBinomialPDF}(x \mid \mu, \alpha))}
              {1 - \text{NegativeBinomialCDF}(0 \mid \mu, \alpha)} \ \text{if } x=1,2,3,\ldots
              \end{array}
          \right.
  
  Parameters
  ----------
  psi : tensor_like of float
      Expected proportion of Negative Binomial variates (0 < psi < 1)
  alpha : tensor_like of float
      Gamma distribution shape parameter (alpha > 0).
  mu : tensor_like of float
      Gamma distribution mean (mu > 0).
  p : tensor_like of float
      Alternative probability of success in each trial (0 < p < 1).
  n : tensor_like of float
      Alternative number of target success trials (n > 0)
class_docstr_tok: ["Hurdle","Negative","Binomial","log-likelihood",".","The","negative","binomial","distribution","describes","a","Poisson","random","variable","whose","rate","parameter","is","gamma","distributed",".","The","difference","with","ZeroInflatedNegativeBinomial","is","that","the","zeros","are","not","inflated",",","they","come","from","a","completely","independent","process",".","The","pmf","of","this","distribution","is","..","math",":",":","f","(","x","\\mid","\\psi",",","\\mu",",","\\alpha",")","=","\\left\\","{","\\begin","{","array","}","{","l","}","(","1","-","\\psi",")","\\","\\text","{","if","}","x","=","0","\\\\","\\psi","\\frac","{","\\text","{","NegativeBinomialPDF","}","(","x","\\mid","\\mu",",","\\alpha",")",")","}","{","1","-","\\text","{","NegativeBinomialCDF","}","(","0","\\mid","\\mu",",","\\alpha",")","}","\\","\\text","{","if","}","x=1,2,3",",","\\ldots","\\end","{","array","}","\\right",".","Parameters","--","--","--","--","--","psi",":","tensor_like","of","float","Expected","proportion","of","Negative","Binomial","variates","(","0","<","psi","<","1",")","alpha",":","tensor_like","of","float","Gamma","distribution","shape","parameter","(","alpha",">","0",")",".","mu",":","tensor_like","of","float","Gamma","distribution","mean","(","mu",">","0",")",".","p",":","tensor_like","of","float","Alternative","probability","of","success","in","each","trial","(","0","<","p","<","1",")",".","n",":","tensor_like","of","float","Alternative","number","of","target","success","trials","(","n",">","0",")"]
code: def __new__(
      cls, name, psi, mu=None, alpha=None, p=None, n=None, **kwargs
  ):
      return _hurdle_mixture(
          name=name,
          nonzero_p=psi,
          nonzero_dist=NegativeBinomial.dist(
              mu=mu, alpha=alpha, p=p, n=n
          ),
          dtype="int",
          **kwargs,
      )
  
imports: import warnings
  import numpy
  import pytensor
  import pytensor.tensor
  from pytensor.graph.basic import Node, equal_computations
  from pytensor.tensor import TensorVariable
  from pytensor.tensor.random.op import RandomVariable
  from pymc.distributions import transforms
  from pymc.distributions.continuous import Gamma, LogNormal, Normal, get_tau_sigma
  from pymc.distributions.discrete import Binomial, NegativeBinomial, Poisson
  from pymc.distributions.dist_math import check_parameters
  from pymc.distributions.distribution import DiracDelta, Distribution, SymbolicRandomVariable, _moment, moment
  from pymc.distributions.shape_utils import _change_dist_size, change_dist_size
  from pymc.distributions.transforms import _default_transform
  from pymc.distributions.truncated import Truncated
  from pymc.logprob.abstract import _logcdf, _logcdf_helper, _logprob
  from pymc.logprob.basic import logp
  from pymc.logprob.transforms import IntervalTransform
  from pymc.pytensorf import floatX
  from pymc.util import check_dist_not_registered
  from pymc.vartypes import continuous_types, discrete_types
label_desc: Use image node_id 1 for calling the HurdleNegativeBinomial obj's underlying member method code with example usage: obj.__new__(cls, name, psi, mu, alpha, p, n) and returns: _hurdle_mixture