
    !g                     H   d Z ddlZ ej                  e      j
                  Z G d d      Z e       Zde_          G d d      Z	 e	       Z
de
_          e	d	
      Zde_          e	d
      Zde_          G d d      Z e       Zde_          G d d      Z e       Zde_         y)zP
Variance functions for use with the link functions in statsmodels.family.links
    Nc                       e Zd ZdZd Zd Zy)VarianceFunctiona  
    Relates the variance of a random variable to its mean. Defaults to 1.

    Methods
    -------
    call
        Returns an array of ones that is the same shape as `mu`

    Notes
    -----
    After a variance function is initialized, its call method can be used.

    Alias for VarianceFunction:
    constant = VarianceFunction()

    See Also
    --------
    statsmodels.genmod.families.family
    c                     t        j                  |      }t        j                  |j                  t         j                        S )z
        Default variance function

        Parameters
        ----------
        mu : array_like
            mean parameters

        Returns
        -------
        v : ndarray
            ones(mu.shape)
        )npasarrayonesshapefloat64selfmus     a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/genmod/families/varfuncs.py__call__zVarianceFunction.__call__   s*     ZZ^wwrxx,,    c                 ,    t        j                  |      S )<
        Derivative of the variance function v'(mu)
        )r   
zeros_liker   s     r   derivzVarianceFunction.deriv.   s     }}R  r   N)__name__
__module____qualname____doc__r   r    r   r   r   r      s    (-"!r   r   z~
The call method of constant returns a constant variance, i.e., a vector of
ones.

constant is an alias of VarianceFunction()
c                   $    e Zd ZdZddZd Zd Zy)Powerav  
    Power variance function

    Parameters
    ----------
    power : float
        exponent used in power variance function

    Methods
    -------
    call
        Returns the power variance

    Notes
    -----
    Formulas
       V(mu) = numpy.fabs(mu)**power

    Aliases for Power:
    mu = Power()
    mu_squared = Power(power=2)
    mu_cubed = Power(power=3)
    c                     || _         y Npower)r   r   s     r   __init__zPower.__init__W   	    
r   c                 h    t        j                  t        j                  |      | j                        S )z
        Power variance function

        Parameters
        ----------
        mu : array_like
            mean parameters

        Returns
        -------
        variance : ndarray
            numpy.fabs(mu)**self.power
        )r   r   fabsr   s     r   r   zPower.__call__Z   s!     xxTZZ00r   c                     | j                   t        j                  |      | j                   dz
  z  z  }t        j                  |dk        }||xx   dz  cc<   |S )z_
        Derivative of the variance function v'(mu)

        May be undefined at zero.
           r   )r   r   r#   flatnonzero)r   r   deriis       r   r   zPower.derivj   sK     jj2772;4::>::^^BF#B2
r   Ng      ?)r   r   r   r   r    r   r   r   r   r   r   r   >   s    01 
r   r   z>
Returns np.fabs(mu)

Notes
-----
This is an alias of Power()
   r   za
Returns np.fabs(mu)**2

Notes
-----
This is an alias of statsmodels.family.links.Power(power=2)
   za
Returns np.fabs(mu)**3

Notes
-----
This is an alias of statsmodels.family.links.Power(power=3)
c                   *    e Zd ZdZddZd Zd Zd Zy)Binomiala  
    Binomial variance function

    Parameters
    ----------
    n : int, optional
        The number of trials for a binomial variable.  The default is 1 for
        p in (0,1)

    Methods
    -------
    call
        Returns the binomial variance

    Notes
    -----
    Formulas :

       V(mu) = p * (1 - p) * n

    where p = mu / n

    Alias for Binomial:
    binary = Binomial()

    A private method _clean trims the data by machine epsilon so that p is
    in (0,1)
    c                     || _         y r   )n)r   r0   s     r   r    zBinomial.__init__   s	    r   c                 F    t        j                  |t        dt        z
        S )Nr%   )r   clip	FLOAT_EPSr   ps     r   _cleanzBinomial._clean   s    wwq)Q]33r   c                 h    | j                  || j                  z        }|d|z
  z  | j                  z  S )z
        Binomial variance function

        Parameters
        ----------
        mu : array_like
            mean parameters

        Returns
        -------
        variance : ndarray
           variance = mu/n * (1 - mu/n) * self.n
        r%   )r6   r0   r   r   r5   s      r   r   zBinomial.__call__   s1     KKTVV$AE{TVV##r   c                     dd|z  z
  S )r   r%   r+   r   r   s     r   r   zBinomial.deriv   s     1R4xr   N)r%   r   r   r   r   r    r6   r   r   r   r   r   r.   r.      s    :4$$r   r.   zY
The binomial variance function for n = 1

Notes
-----
This is an alias of Binomial(n=1)
c                   *    e Zd ZdZddZd Zd Zd Zy)NegativeBinomiala   
    Negative binomial variance function

    Parameters
    ----------
    alpha : float
        The ancillary parameter for the negative binomial variance function.
        `alpha` is assumed to be nonstochastic.  The default is 1.

    Methods
    -------
    call
        Returns the negative binomial variance

    Notes
    -----
    Formulas :

       V(mu) = mu + alpha*mu**2

    Alias for NegativeBinomial:
    nbinom = NegativeBinomial()

    A private method _clean trims the data by machine epsilon so that p is
    in (0,inf)
    c                     || _         y r   )alpha)r   r>   s     r   r    zNegativeBinomial.__init__   r!   r   c                 T    t        j                  |t        t         j                        S r   )r   r2   r3   infr4   s     r   r6   zNegativeBinomial._clean   s    wwq)RVV,,r   c                 N    | j                  |      }|| j                  |dz  z  z   S )z
        Negative binomial variance function

        Parameters
        ----------
        mu : array_like
            mean parameters

        Returns
        -------
        variance : ndarray
            variance = mu + alpha*mu**2
        r+   r6   r>   r8   s      r   r   zNegativeBinomial.__call__   s(     KKO4::ad?""r   c                 N    | j                  |      }dd| j                  z  |z  z   S )zH
        Derivative of the negative binomial variance function.
        r%   r+   rB   r8   s      r   r   zNegativeBinomial.deriv  s)    
 KKO1tzz>A%%%r   Nr*   r:   r   r   r   r<   r<      s    6-#"&r   r<   zb
Negative Binomial variance function.

Notes
-----
This is an alias of NegativeBinomial(alpha=1.)
)r   numpyr   finfofloatepsr3   r   constantr   r   
mu_squaredmu_cubedr.   binaryr<   nbinomr   r   r   <module>rM      s    BHHUO	*! *!Z  6 6r W
 ^

  q> : :z 
9& 9&x 
	r   