Ë
    ¢�Dj  ã                   ó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     úhC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/genmod/families/varfuncs.pyÚ__call__zVarianceFunction.__call__   s*   € ô �Z‰Z˜‹^ˆÜ�w‰w�r—x‘x¤§¡Ó,Ð,ó    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!   € ô �x‰xœŸ™ › T§Z¡ZÓ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   € ð �j‰jœ2Ÿ7™7 2›;¨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   € Ü�w‰w�qœ) 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   € ð �K‰K˜˜TŸV™V™Ó$ˆØ�A˜‘E‰{˜TŸV™VÑ#Ð#r   c                 ó   — dd|z  z
  S )r   r%   r+   r   r   s     r   r   zBinomial.derivÇ   s   € ð �1�R‘4‰xˆ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   € Ü�w‰w�qœ)¤R§V¡VÓ,Ð,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(   € ð �K‰K˜‹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)   € ð
 �K‰K˜‹OˆØ�1�t—z‘z‘> 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Å   ðñó ØˆB�H‰H�U‹O×Ñ€	÷*!ñ *!ñZ Ó€ð€Ô ÷6ñ 6ñr ƒW€ð€„
ñ ˜Œ^€
ð€
Ô ñ �qŒ>€ð€Ô ÷:ñ :ñz 
‹€ð€„÷9&ñ 9&ñx 
Ó	€ð€…r   