
    M/Ph                     x   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_         dS )zP
Variance functions for use with the link functions in statsmodels.family.links
    Nc                       e Zd ZdZd Zd ZdS )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                 r    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     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/genmod/families/varfuncs.py__call__zVarianceFunction.__call__   s'     Z^^wrx,,,    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dS )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                     || _         d S Npower)r   r    s     r   __init__zPower.__init__W       


r   c                 Z    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      xTZ0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   sP     j272;;4:>::^BF##B2
r   Nr   )r   r   r   r   r!   r   r   r   r   r   r   r   >   sP         0   1 1 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dS )	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)
    r&   c                     || _         d S r   )n)r   r1   s     r   r!   zBinomial.__init__   s    r   c                 H    t          j        |t          dt          z
            S )Nr&   )r   clip	FLOAT_EPSr   ps     r   _cleanzBinomial._clean   s    wq)Q]333r   c                 \    |                      || 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&   )r7   r1   r   r   r6   s      r   r   zBinomial.__call__   s0     KKTV$$AE{TV##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!   r7   r   r   r   r   r   r/   r/      s_         :   4 4 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dS )	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)
    r   c                     || _         d S r   )alpha)r   r?   s     r   r!   zNegativeBinomial.__init__   r"   r   c                 L    t          j        |t          t           j                  S r   )r   r3   r4   infr5   s     r   r7   zNegativeBinomial._clean   s    wq)RV,,,r   c                 L    |                      |          }|| 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,   r7   r?   r9   s      r   r   zNegativeBinomial.__call__   s(     KKOO4:ad?""r   c                 L    |                      |          }dd| j        z  |z  z   S )zH
        Derivative of the negative binomial variance function.
        r&   r,   rC   r9   s      r   r   zNegativeBinomial.deriv  s)    
 KKOO1tz>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epsr4   r   constantr   r   
mu_squaredmu_cubedr/   binaryr=   nbinomr   r   r   <module>rN      sl       BHUOO	*! *! *! *! *! *! *! *!Z  6 6 6 6 6 6 6 6r UWW
 U^^^

  5q>>> : : : : : : : :z 
9& 9& 9& 9& 9& 9& 9& 9&x 
			r   