Ë
    ¢�Dj*=  ã                   ól  — d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ  G d„ de«      Z edd	¬
«      Z G d„ de«      Z edd¬
«      Z G d„ de«      Z edd¬
«      Z G d„ de«      Z edd¬
«      Z G d„ de«      Z edd¬
«      Z G d„ de«      Z edd¬
«      Z G d„ d e«      Z G d!„ d"e«      Zy)#é    N)Úrv_discreteÚpoissonÚnbinom)Úgammaln)Ú
_lazywhere)ÚGenericLikelihoodModelc                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)Úgenpoisson_p_genz%Generalized Poisson distribution
    c                 ó$   — |dk\  ||k(  z  |dkD  z  S )Nr   © ©ÚselfÚmuÚalphaÚps       úfC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/distributions/discrete.pyÚ	_argcheckzgenpoisson_p_gen._argcheck   s   € Ø�a‘˜E 5™LÑ)¨Q°©UÑ3Ð3ó    c                 óž  — ||dz
  z  }t        j                  t        j                  dd«      d||z  z   «      }t        j                  t        j                  dd«      ||dz
  |z  z   «      }t        j                  |«      |dz
  t        j                  |«      z  z   }||t        j                  |«      z  t	        |dz   «      z   ||z  z   z  }|S )Nç      ð?r   é   )ÚnpÚmaximumÚ	nextafterÚlogr   )	r   Úxr   r   r   Úmu_pÚa1Úa2Úlogpmf_s	            r   Ú_logpmfzgenpoisson_p_gen._logpmf   s¯   € Ø�a˜"‘f‰~ˆÜ�Z‰ZœŸ™ Q¨Ó*¨A°¸±Ñ,<Ó=ˆÜ�Z‰ZœŸ™ Q¨Ó*¨B°"°r±'¸Q±Ñ,>Ó?ˆÜ—&‘&˜“*  B¡¬"¯&©&°«*Ñ4Ñ4ˆØ�AœŸ™˜r›
‘N¤W¨Q°©V£_Ñ4°r¸B±wÑ>Ñ>ˆØˆr   c                 óP   — t        j                  | j                  ||||«      «      S ©N©r   Úexpr!   )r   r   r   r   r   s        r   Ú_pmfzgenpoisson_p_gen._pmf   s    € Ü�v‰v�d—l‘l 1 b¨%°Ó3Ó4Ð4r   c                 ó   — |S r#   r   r   s       r   Úmeanzgenpoisson_p_gen.mean   s   € Øˆ	r   c                 ó2   — d|||dz
  z  z  z   dz  }||z  }|S ©Nr   é   r   )r   r   r   r   Údispersion_factorÚvars         r   r-   zgenpoisson_p_gen.var   s.   € Ø ¨¨a°!©e©Ñ!4Ñ4°qÑ8ÐØ "Ñ$ˆØˆ
r   N©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r&   r(   r-   r   r   r   r
   r
   
   s    „ ñò4òò5òór   r
   Úgenpoisson_pzGeneralized Poisson)ÚnameÚlongnamec                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)Úzipoisson_genz'Zero Inflated Poisson distribution
    c                 ó$   — |dkD  |dk\  z  |dk  z  S ©Nr   r   r   ©r   r   Úws      r   r   zzipoisson_gen._argcheck+   ó   € Ø�Q‘˜1 ™6Ñ" a¨¡dÑ+Ð+r   c                 óŒ   — t        |dk7  |||fd„ t        j                  |d|z
  t        j                  | «      z  z   «      «      S )Nr   c                 óˆ   — t        j                  d|z
  «      | t        j                  |«      z  z   t        | dz   «      z
  |z
  S ©Nr   )r   r   r   )r   r   r;   s      r   ú<lambda>z'zipoisson_gen._logpmf.<locals>.<lambda>0   s;   € ¬B¯F©F°2¸±6«N¸QÄÇÁÈÃ¹^Ñ,KÜ! ! b¡&›/ñ-*Ø,.ñ-/€ r   r   )r   r   r   r%   ©r   r   r   r;   s       r   r!   zzipoisson_gen._logpmf.   sF   € Ü˜!˜q™& 1 b¨! *ñ/äŸ&™&  b¨1¡f´·±¸°s³Ñ%;Ñ!;Ó<ó>ð 	>r   c                 óN   — t        j                  | j                  |||«      «      S r#   r$   rA   s       r   r&   zzipoisson_gen._pmf4   s   € Ü�v‰v�d—l‘l 1 b¨!Ó,Ó-Ð-r   c                 óJ   — |t        |¬«      j                  |«      d|z
  z  z   S )N©r   r   )r   ÚcdfrA   s       r   Ú_cdfzzipoisson_gen._cdf7   s%   € à”7˜b”>×%Ñ% aÓ(¨A°©EÑ2Ñ2Ð2r   c                 óÐ   — ||z
  d|z
  z  }t        |¬«      j                  |«      }t        |t        j                  «      r
d|||k  <   |S t        j
                  |«      r||k  ry|S )Nr   rD   r   ç        )r   ÚppfÚ
isinstancer   ÚndarrayÚisscalar)r   Úqr   r;   Úq_modr   s         r   Ú_ppfzzipoisson_gen._ppf;   se   € à�Q‘˜1˜q™5Ñ!ˆÜ�rŒN×Ñ˜uÓ%ˆä�aœŸ™Ô$ØˆAˆa�!‰e‰Hð ˆô �[‰[˜Œ^  A¢ØØˆr   c                 ó   — d|z
  |z  S ©Nr   r   r:   s      r   r(   zzipoisson_gen.meanF   ó   € Ø�A‘˜‰|Ðr   c                 ó@   — d||z  z   }|| j                  ||«      z  }|S rQ   ©r(   )r   r   r;   r,   r-   s        r   r-   zzipoisson_gen.varI   s*   € Ø  B¡™JÐØ  4§9¡9¨R°Ó#3Ñ3ˆØˆ
r   c                 ó:   — d|z
  t        j                  ||«      z  S rQ   )r   Úmoment)r   Únr   r;   s       r   Ú_momentzzipoisson_gen._momentN   s   € Ø�A‘œŸ™¨¨2Ó.Ñ.Ð.r   N)r/   r0   r1   r2   r   r!   r&   rF   rO   r(   r-   rX   r   r   r   r7   r7   (   s/   „ ñò,ò>ò.ò3ò	òòó
/r   r7   Ú	zipoissonzZero Inflated Poissonc                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)Úzigeneralizedpoisson_genz3Zero Inflated Generalized Poisson distribution
    c                 ó$   — |dkD  |dk\  z  |dk  z  S r9   r   ©r   r   r   r   r;   s        r   r   z"zigeneralizedpoisson_gen._argcheckX   r<   r   c                 ó”   — t        |dk7  |||||fd„ t        j                  |d|z
  t        j	                  ||||«      z  z   «      «      S )Nr   c                 ód   — t        j                  d|z
  «      t        j                  | |||«      z   S r?   )r   r   r3   Úlogpmf)r   r   r   r   r;   s        r   r@   z2zigeneralizedpoisson_gen._logpmf.<locals>.<lambda>]   s+   € ´b·f±f¸RÀ!¹V³nÜ&×-Ñ-¨a°°U¸AÓ>ñ7?€ r   r   )r   r   r   r3   Úpmf©r   r   r   r   r   r;   s         r   r!   z zigeneralizedpoisson_gen._logpmf[   sY   € Ü˜!˜q™& 1 b¨%°°AÐ"6ñ?äŸ&™&  b¨1¡fÜ&×*Ñ*¨1¨b°%¸Ó;ñ&<ñ "<ó =ó>ð 	>r   c           	      óR   — t        j                  | j                  |||||«      «      S r#   r$   rb   s         r   r&   zzigeneralizedpoisson_gen._pmfb   ó"   € Ü�v‰v�d—l‘l 1 b¨%°°AÓ6Ó7Ð7r   c                 ó   — d|z
  |z  S rQ   r   r]   s        r   r(   zzigeneralizedpoisson_gen.meane   rR   r   c                 óf   — |dz
  }d|||z  z  z   dz  ||z  z   }|| j                  ||||«      z  }|S r*   rT   ©r   r   r   r   r;   r,   r-   s          r   r-   zzigeneralizedpoisson_gen.varh   sJ   € Ø�‰EˆØ ¨¨q©¡Ñ0°QÑ6¸¸R¹Ñ?ÐØ  4§9¡9¨R°¸¸1Ó#=Ñ=ˆØˆ
r   Nr.   r   r   r   r[   r[   U   s    „ ñò,ò>ò8òór   r[   Úzigenpoissonz!Zero Inflated Generalized Poissonc                   óF   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)Úzinegativebinomial_genz=Zero Inflated Generalized Negative Binomial distribution
    c                 ó$   — |dkD  |dk\  z  |dk  z  S r9   r   r]   s        r   r   z zinegativebinomial_gen._argcheckw   r<   r   c                 ó¼   — | j                  |||«      \  }}t        |dk7  ||||fd„ t        j                  |d|z
  t	        j
                  |||«      z  z   «      «      S )Nr   c                 ób   — t        j                  d|z
  «      t        j                  | ||«      z   S r?   )r   r   r   r`   )r   Úsr   r;   s       r   r@   z0zinegativebinomial_gen._logpmf.<locals>.<lambda>}   s'   € ¬b¯f©f°R¸!±V«nÜ Ÿ-™-¨¨1¨aÓ0ñ/1€ r   r   )Úconvert_paramsr   r   r   r   ra   ©r   r   r   r   r   r;   rn   s          r   r!   zzinegativebinomial_gen._logpmfz   sj   € Ø×"Ñ" 2 u¨aÓ0‰ˆˆ1Ü˜!˜q™& 1 a¨¨A ,ñ1äŸ&™&  b¨1¡fÜ Ÿ*™* Q¨¨1Ó-ñ&.ñ ".ó /ó0ð 	0r   c           	      óR   — t        j                  | j                  |||||«      «      S r#   r$   rb   s         r   r&   zzinegativebinomial_gen._pmf‚   rd   r   c                 ón   — | j                  |||«      \  }}|t        j                  |||«      d|z
  z  z   S rQ   )ro   r   rE   rp   s          r   rF   zzinegativebinomial_gen._cdf…   s=   € Ø×"Ñ" 2 u¨aÓ0‰ˆˆ1ð ”6—:‘:˜a  AÓ&¨!¨a©%Ñ0Ñ0Ð0r   c                 óô   — | j                  |||«      \  }}||z
  d|z
  z  }t        j                  |||«      }t        |t        j
                  «      r
d|||k  <   |S t	        j                  |«      r||k  ry|S )Nr   r   rH   )ro   r   rI   rJ   r   rK   rL   )	r   rM   r   r   r   r;   rn   rN   r   s	            r   rO   zzinegativebinomial_gen._ppf‹   s{   € Ø×"Ñ" 2 u¨aÓ0‰ˆˆ1à�Q‘˜1˜q™5Ñ!ˆÜ�J‰J�u˜a Ó#ˆä�aœŸ™Ô$ØˆAˆa�!‰e‰Hð ˆô �[‰[˜Œ^  A¢ØØˆr   c                 ó   — d|z
  |z  S rQ   r   r]   s        r   r(   zzinegativebinomial_gen.mean—   rR   r   c                 ó\   — d|||dz
  z  z  z   ||z  z   }|| j                  ||||«      z  }|S rQ   rT   rg   s          r   r-   zzinegativebinomial_gen.varš   sA   € Ø ¨¨q°1©u©Ñ 5Ñ5¸¸B¹Ñ>ÐØ  4§9¡9¨R°¸¸1Ó#=Ñ=ˆØˆ
r   c                 óh   — | j                  |||«      \  }}d|z
  t        j                  |||«      z  S rQ   )ro   r   rV   )r   rW   r   r   r   r;   rn   s          r   rX   zzinegativebinomial_gen._momentŸ   s6   € Ø×"Ñ" 2 u¨aÓ0‰ˆˆ1Ø�A‘œŸ™ q¨!¨QÓ/Ñ/Ð/r   c                 ó6   — d|z  |d|z
  z  z  }|||z   z  }||fS ©Nr   r+   r   ©r   r   r   r   ÚsizeÚprobs         r   ro   z%zinegativebinomial_gen.convert_params£   ó0   € Ø�E‰z˜B  1¡™IÑ%ˆØ�t˜b‘yÑ!ˆØ�dˆ|Ðr   N)r/   r0   r1   r2   r   r!   r&   rF   rO   r(   r-   rX   ro   r   r   r   rj   rj   t   s4   „ ñò,ò0ò8ò1ò
òòò
0ór   rj   Úzinegbinz+Zero Inflated Generalized Negative Binomialc                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Útruncatedpoisson_genz/Truncated Poisson discrete random variable
    c                 ó   — |dk\  |dk\  z  S ©Nr   éÿÿÿÿr   ©r   r   Ú
truncations      r   r   ztruncatedpoisson_gen._argcheck±   s   € ð �a‘˜J¨"Ñ,Ñ-Ð-r   c                 ó$   — |dz   | j                   fS rQ   ©Úbrƒ   s      r   Ú_get_supportz!truncatedpoisson_gen._get_support·   ó   € Ø˜A‰~˜tŸv™vÐ%Ð%r   c                 óŒ  — d}t        t        t        j                  |«      «      dz   «      D ]  }|t	        j
                  ||«      z  }Œ t        j                  |t        j                   «      }|dkD  }t        j                  ||<   |dk  }t        j                  d||   z
  «      ||<   t	        j                  ||«      |z
  }|S r9   )ÚrangeÚintr   Úmaxr   ra   Ú	full_likeÚinfÚnanr   r`   )	r   r   r   r„   ra   ÚiÚlog_1_m_pmfÚlocr    s	            r   r!   ztruncatedpoisson_gen._logpmfº   s°   € ØˆÜ”sœ2Ÿ6™6 *Ó-Ó.°Ñ2Ó3ò 	&ˆAØ”7—;‘;˜q "Ó%Ñ%‰Cð	&ô —l‘l 3¬¯©¨Ó0ˆØ�A‰gˆÜŸ6™6ˆ�CÑØ�A‰gˆÜŸ6™6 ! c¨#¡h¡,Ó/ˆ�CÑÜ—.‘.  BÓ'¨+Ñ5ˆàˆr   c                 óN   — t        j                  | j                  |||«      «      S r#   r$   )r   r   r   r„   s       r   r&   ztruncatedpoisson_gen._pmfÉ   s   € Ü�v‰v�d—l‘l 1 b¨*Ó5Ó6Ð6r   N)r/   r0   r1   r2   r   rˆ   r!   r&   r   r   r   r   r   ¬   s   „ ñò.ò&òó7r   r   ÚtruncatedpoissonzTruncated Poissonc                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)Útruncatednegbin_genzLTruncated Generalized Negative Binomial (NB-P) discrete random variable
    c                 ó   — |dk\  |dk\  z  S r�   r   ©r   r   r   r   r„   s        r   r   ztruncatednegbin_gen._argcheckÒ   s   € Ø�a‘˜J¨"Ñ,Ñ-Ð-r   c                 ó$   — |dz   | j                   fS rQ   r†   r™   s        r   rˆ   z truncatednegbin_gen._get_supportÕ   r‰   r   c                 ó¼  — | j                  |||«      \  }}d}t        t        t        j                  |«      «      dz   «      D ]  }	|t        j                  |	||«      z  }Œ t        j                  |t        j                   «      }
|dkD  }t        j                  |
|<   |dk  }t        j                  d||   z
  «      |
|<   t        j                  |||«      |
z
  }|S r9   )ro   r‹   rŒ   r   r�   r   ra   rŽ   r�   r�   r   r`   )r   r   r   r   r   r„   rz   r{   ra   r‘   r’   r“   r    s                r   r!   ztruncatednegbin_gen._logpmfØ   sÌ   € Ø×(Ñ(¨¨U°AÓ6‰
ˆˆdØˆÜ”sœ2Ÿ6™6 *Ó-Ó.°Ñ2Ó3ò 	-ˆAØ”6—:‘:˜a  tÓ,Ñ,‰Cð	-ô —l‘l 3¬¯©¨Ó0ˆØ�A‰gˆÜŸ6™6ˆ�CÑØ�A‰gˆÜŸ6™6 ! c¨#¡h¡,Ó/ˆ�CÑÜ—-‘-  4¨Ó.°Ñ<ˆàˆr   c           	      óR   — t        j                  | j                  |||||«      «      S r#   r$   )r   r   r   r   r   r„   s         r   r&   ztruncatednegbin_gen._pmfè   s"   € Ü�v‰v�d—l‘l 1 b¨%°°JÓ?Ó@Ð@r   c                 ó6   — d|z  |d|z
  z  z  }|||z   z  }||fS rx   r   ry   s         r   ro   z"truncatednegbin_gen.convert_paramsë   r|   r   N)	r/   r0   r1   r2   r   rˆ   r!   r&   ro   r   r   r   r—   r—   Ï   s!   „ ñò.ò&òò Aór   r—   Útruncatednegbinz'Truncated Generalized Negative Binomialc                   ój   ‡ — e Zd ZdZˆ fd„Zdˆ fd„	Zˆ fd„Zd„ Zdddœd„Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zˆ xZS )ÚDiscretizedCountun  Count distribution based on discretized distribution

    Parameters
    ----------
    distr : distribution instance
    d_offset : float
        Offset for integer interval, default is zero.
        The discrete random variable is ``y = floor(x + offset)`` where x is
        the continuous random variable.
        Warning: not verified for all methods.
    add_scale : bool
        If True (default), then the scale of the base distribution is added
        as parameter for the discrete distribution. The scale parameter is in
        the last position.
    kwds : keyword arguments
        The extra keyword arguments are used delegated to the ``__init__`` of
        the super class.
        Their usage has not been checked, e.g. currently the support of the
        distribution is assumed to be all non-negative integers.

    Notes
    -----
    `loc` argument is currently not supported, scale is not available for
    discrete distributions in scipy. The scale parameter of the underlying
    continuous distribution is the last shape parameter in this
    DiscretizedCount distribution if ``add_scale`` is True.

    The implementation was based mainly on [1]_ and [2]_. However, many new
    discrete distributions have been developed based on the approach that we
    use here. Note, that in many cases authors reparameterize the distribution,
    while this class inherits the parameterization from the underlying
    continuous distribution.

    References
    ----------
    .. [1] Chakraborty, Subrata, and Dhrubajyoti Chakravarty. "Discrete gamma
       distributions: Properties and parameter estimations." Communications in
       Statistics-Theory and Methods 41, no. 18 (2012): 3301-3324.

    .. [2] Alzaatreh, Ayman, Carl Lee, and Felix Famoye. 2012. â€œOn the Discrete
       Analogues of Continuous Distributions.â€� Statistical Methodology 9 (6):
       589â€“603.


    c                 ó*   •— t         t        | �  | «      S r#   )Úsuperr   Ú__new__)ÚclsÚargsÚkwdsÚ	__class__s      €r   r£   zDiscretizedCount.__new__"  s   ø€ ô ”[ #Ñ.¨sÓ3Ð3r   c                 ó’  •— || _         || _        |j                  | _        || _        |j                  �at        |j                  j                  d«      «      | _        |rZ|j                  d|j                  dz   i«       | xj                  dz  c_        n$|r|j                  ddi«       d| _        nd| _        t        ‰| �(  di |¤Ž y )Nú,Úshapesz, sr   rn   r   r   )ÚdistrÚd_offsetÚ_ctor_paramÚ	add_scalerª   ÚlenÚsplitÚk_shapesÚupdater¢   Ú__init__)r   r«   r¬   r®   r¦   r§   s        €r   r³   zDiscretizedCount.__init__'  s©   ø€ àˆŒ
Ø ˆŒØ ×,Ñ,ˆÔØ"ˆŒØ�<‰<Ð#Ü §¡× 2Ñ 2°3Ó 7Ó8ˆDŒMÙØ—‘˜X u§|¡|°eÑ';Ð<Ô=Ø—’ Ñ"–ñ Ø—‘˜X s˜OÔ,Ø !�•à !�”ä‰ÑÑ ˜4Ó r   c                 óB   •— t         ‰| �  «       }| j                  |d<   |S )Nr«   )r¢   Ú_updated_ctor_paramr«   )r   Údicr§   s     €r   rµ   z$DiscretizedCount._updated_ctor_param<  s"   ø€ Ü‰gÑ)Ó+ˆØ—z‘zˆˆG‰Øˆ
r   c                 óB   — | j                   r|d   }|d d }||fS d}||fS )Nr‚   r   )r®   )r   r¥   Úscales      r   Ú_unpack_argszDiscretizedCount._unpack_argsA  s:   € Ø�>Š>Ø˜‘HˆEØ˜˜�9ˆDð �Uˆ{Ðð ˆEØ�Uˆ{Ðr   N)rz   Úrandom_statec          	      óÈ   — | j                  |«      \  }}|€t        | dd«      }t        j                   | j                  j
                  ||||dœŽ| j                  z   «      }|S )NÚ_sizer   )r¸   rz   rº   )r¹   Úgetattrr   Útruncr«   Úrvsr¬   )r   rz   rº   r¥   r¸   Úrvs         r   Ú_rvszDiscretizedCount._rvsI  se   € Ø×'Ñ'¨Ó-‰ˆˆeØˆ<Ü˜4 ¨!Ó,ˆDÜ�X‰X�n�d—j‘j—n‘n d°%¸dØ2>ò@à—m‘mñ$ó %ˆð ˆ	r   c                 óâ   — | j                   }| j                  dk7  r|| j                  z   }| j                  |«      \  }} |j                  |g|¢­d|iŽ |j                  |dz   g|¢­d|iŽz
  }|S )Nr   r¸   r   )r«   r¬   r¹   Úsf©r   r   r¥   r«   r¸   r   s         r   r&   zDiscretizedCount._pmfR  sy   € Ø—
‘
ˆØ�=‰=˜AÒØ�D—M‘MÑ!ˆAà×'Ñ'¨Ó-‰ˆˆeàˆU�X‰X�aÐ,˜$Ò, eÑ,ØˆU�X‰X�a˜!‘eÐ0˜dÒ0¨%Ñ0ñ1ˆàˆr   c                 ó´   — | j                   }| j                  |«      \  }}| j                  dk7  r|| j                  z   } |j                  |dz   g|¢­d|iŽ}|S ©Nr   r   r¸   )r«   r¹   r¬   rE   rÄ   s         r   rF   zDiscretizedCount._cdf]  s\   € Ø—
‘
ˆØ×'Ñ'¨Ó-‰ˆˆeØ�=‰=˜AÒØ�D—M‘MÑ!ˆAØˆE�I‰I�a˜!‘eÐ0˜dÒ0¨%Ñ0ˆØˆr   c                 ó´   — | j                   }| j                  |«      \  }}| j                  dk7  r|| j                  z   } |j                  |dz   g|¢­d|iŽ}|S rÆ   )r«   r¹   r¬   rÃ   rÄ   s         r   Ú_sfzDiscretizedCount._sfe  s\   € Ø—
‘
ˆØ×'Ñ'¨Ó-‰ˆˆeØ�=‰=˜AÒØ�D—M‘MÑ!ˆAØˆE�H‰H�Q˜‘UÐ/˜TÒ/¨Ñ/ˆØˆr   c                 óÞ   — | j                   }| j                  |«      \  }} |j                  |g|¢­d|iŽ}| j                  dk7  r|| j                  z   }t	        j
                  |dz  «      }|S ©Nr¸   r   g÷ÿÿÿÿÿï?)r«   r¹   rI   r¬   r   Úfloor©r   r   r¥   r«   r¸   ÚqcrM   s          r   rO   zDiscretizedCount._ppfm  ók   € Ø—
‘
ˆØ×'Ñ'¨Ó-‰ˆˆeàˆU�Y‰Y�qÐ-˜4Ò- uÑ-ˆØ�=‰=˜AÒØ�d—m‘mÑ#ˆBÜ�H‰H�R˜9Ñ%Ó&ˆØˆr   c                 óÞ   — | j                   }| j                  |«      \  }} |j                  |g|¢­d|iŽ}| j                  dk7  r|| j                  z   }t	        j
                  |dz  «      }|S rÊ   )r«   r¹   Úisfr¬   r   rË   rÌ   s          r   Ú_isfzDiscretizedCount._isfw  rÎ   r   )r   T)r/   r0   r1   r2   r£   r³   rµ   r¹   rÁ   r&   rF   rÈ   rO   rÑ   Ú__classcell__©r§   s   @r   r    r    ó   sB   ø„ ñ,ô\4õ
!ô*ò
ð  $°$ô ò	òòòör   r    c                   ó8   ‡ — e Zd ZdZdˆ fd„	Zd„ Zdd„Zd„ Zˆ xZS )ÚDiscretizedModelaÎ  experimental model to fit discretized distribution

    Count models based on discretized distributions can be used to model
    data that is under- or over-dispersed relative to Poisson or that has
    heavier tails.

    Parameters
    ----------
    endog : array_like, 1-D
        Univariate data for fitting the distribution.
    exog : None
        Explanatory variables are not supported. The ``exog`` argument is
        only included for consistency in the signature across models.
    distr : DiscretizedCount instance
        (required) Instance of a DiscretizedCount distribution.

    See Also
    --------
    DiscretizedCount

    Examples
    --------
    >>> from scipy import stats
    >>> from statsmodels.distributions.discrete import (
            DiscretizedCount, DiscretizedModel)

    >>> dd = DiscretizedCount(stats.gamma)
    >>> mod = DiscretizedModel(y, distr=dd)
    >>> res = mod.fit()
    >>> probs = res.predict(which="probs", k_max=5)

    c                 ób  •— |�t        d«      ‚t        ‰| �	  |||¬«       | j                  j	                  d«       t        |«      |j                  z
  | _        d| _        |j                  | _	        d| _
        |j                  | _        dt        j                  | j                  «      z  | _        y )Núexog is not supported©r«   r«   r   g      à?)Ú
ValueErrorr¢   r³   Ú
_init_keysÚappendr¯   r±   Údf_residÚdf_modelÚk_extraÚ
k_constantÚnparamsr   ÚonesÚstart_params)r   ÚendogÚexogr«   r§   s       €r   r³   zDiscretizedModel.__init__£  s�   ø€ ØÐÜÐ4Ó5Ð5ä‰Ñ˜ ¨EÐÔ2Ø�‰×Ñ˜wÔ'Ü˜E›
 U§^¡^Ñ3ˆŒØˆŒØ—~‘~ˆŒØˆŒØ—~‘~ˆŒØ¤"§'¡'¨$¯,©,Ó"7Ñ7ˆÕr   c                 óš   — |}t        j                   | j                  j                  | j                  g|¢­Ž «      }|j                  «       S r#   )r   r   r«   r&   rã   Úsum)r   Úparamsr¥   Úlls       r   ÚloglikezDiscretizedModel.loglike°  s:   € ð
 ˆÜ�V‰V�O�D—J‘J—O‘O D§J¡JÐ6°Ò6Ó7ˆØ�v‰v‹xˆr   c                 ó¤   — |�t        d«      ‚|}|dk(  r2 | j                  j                  t        j                  |«      g|¢­Ž }|S t        d«      ‚)Nr×   Úprobsz+only which="probs" is currently implemented)rÙ   r«   ra   r   Úarange)r   rç   rä   ÚwhichÚk_maxr¥   Úprs          r   ÚpredictzDiscretizedModel.predict¹  sT   € àÐÜÐ4Ó5Ð5àˆØ�GÒØ�—‘—‘¤§	¡	¨%Ó 0Ð8°4Ò8ˆBØˆIäÐJÓKÐKr   c                 ó(   — |} | j                   |Ž }|S )zCfrozen distribution instance of the discrete distribution.
        rØ   )r   rç   r¥   r«   s       r   Ú	get_distrzDiscretizedModel.get_distrÅ  s   € ð ˆØ�—
‘
˜DÐ!ˆØˆr   )NN)NNé   )	r/   r0   r1   r2   r³   ré   rð   rò   rÒ   rÓ   s   @r   rÕ   rÕ   ‚  s   ø„ ñõ@8òó
Lör   rÕ   )Únumpyr   Úscipy.statsr   r   r   Úscipy.specialr   Úscipy._lib._utilr   Ústatsmodels.base.modelr   r
   r3   r7   rY   r[   rh   rj   r}   r   r•   r—   rž   r    rÕ   r   r   r   ú<module>rù      sí   ðÛ ç 4Ñ 4Ý !Ý 'å 9ô�{ô ñ4   ^Ø)>ô@€ô'/�Kô '/ñT ˜{Ø#:ô<€	ô˜{ô ñ4 (Ø	Ø0ô2€ô
2˜[ô 2ñh " zØ:ô<€ô7˜;ô 7ñ@ (Ð-?Ø1DôFÐ ô˜+ô ñB &Ð+<Ø6ô8€ôL�{ô Lô^HÐ-õ Hr   