Ë
    ¢�DjÌ  ã                   óö   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 dggdgdggdgddgd	ggd
gddgdgd	dgdggdœZ
d„ Zd„ Z ej                  dej                  z  «      Zd„ Zd„ Zd„ Z G d„ de«      Zy)é    N)ÚHermiteE)Ú	factorial)Úrv_continuous)é   r   )r   é   )r   r   )r   é   )r   r   )r   é   )r   r   )r	   r   )r   r   r   r	   c                 ól   — | dk  rt        d| z  «      ‚	 t        |    S # t        $ r t        d«      ‚w xY w)a<  
    Return all non-negative integer solutions of the diophantine equation

            n*k_n + ... + 2*k_2 + 1*k_1 = n   (1)

    Parameters
    ----------
    n : int
        the r.h.s. of Eq. (1)

    Returns
    -------
    partitions : list
        Each solution is itself a list of the form `[(m, k_m), ...]`
        for non-zero `k_m`. Notice that the index `m` is 1-based.

    Examples:
    ---------
    >>> _faa_di_bruno_partitions(2)
    [[(1, 2)], [(2, 1)]]
    >>> for p in _faa_di_bruno_partitions(4):
    ...     assert 4 == sum(m * k for (m, k) in p)
    r   z+Expected a positive integer; got %s insteadz'Higher order terms not yet implemented.)Ú
ValueErrorÚ_faa_di_bruno_cacheÚKeyErrorÚNotImplementedError)Úns    úgC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/distributions/edgeworth.pyÚ_faa_di_bruno_partitionsr      sL   € ð0 	ˆ1‚uÜÐFÈÑJÓKÐKðMÜ" 1Ñ%Ð%øÜò Mô "Ð"KÓLÐLðMús   • ž3c           	      ó   — |dk  rt        d|z  «      ‚t        | «      |k  rt        |›d|›dt        | «      ›d�«      ‚d}t        |«      D ]q  }t        d„ |D «       «      }d|dz
  z  t	        |dz
  «      z  }|D ]<  \  }}|t        j                  | |dz
     t	        |«      z  |«      t	        |«      z  z  }Œ> ||z  }Œs |t	        |«      z  }|S )	au  Compute n-th cumulant given moments.

    Parameters
    ----------
    momt : array_like
        `momt[j]` contains `(j+1)`-th moment.
        These can be raw moments around zero, or central moments
        (in which case, `momt[0]` == 0).
    n : int
        which cumulant to calculate (must be >1)

    Returns
    -------
    kappa : float
        n-th cumulant.
    r   z,Expected a positive integer. Got %s instead.z-th cumulant requires z moments, only got ú.ç        c              3   ó&   K  — | ]	  \  }}|–— Œ y ­w©N© ©Ú.0ÚmÚks      r   ú	<genexpr>z(cumulant_from_moments.<locals>.<genexpr>P   s   è ø€ Ò"‘f�q˜!”Ñ"ùó   ‚éÿÿÿÿ)r   Úlenr   Úsumr   ÚnpÚpower)Úmomtr   ÚkappaÚpÚrÚtermr   r   s           r   Úcumulant_from_momentsr(   8   sê   € ð" 	ˆ1‚uÜÐGÈ!ÑKÓLÐLÜ
ˆ4ƒy�1‚}ÜÚ+,ªa´°Tµð<ó =ð 	=à€EÜ% aÓ(ò ˆÜÑ" Ô"Ó"ˆØ�a˜!‘e‰}œy¨¨Q©Ó/Ñ/ˆØò 	K‰FˆQ�Ø”B—H‘H˜T ! a¡%™[¬9°Q«<Ñ7¸Ó;¼iÈ»lÑJÑJ‰Dð	Kà�‰‰ðð 
ŒY�q‹\Ñ€EØ€Ló    r   c                 óH   — t        j                  | dz   dz  «      t        z  S )Nr   g       @)r!   ÚexpÚ_norm_pdf_C©Úxs    r   Ú	_norm_pdfr/   [   s    € Ü�6‰6�1�a‘4�%˜‘)Óœ{Ñ*Ð*r)   c                 ó,   — t        j                  | «      S r   ©ÚspecialÚndtrr-   s    r   Ú	_norm_cdfr4   ^   s   € Ü�<‰<˜‹?Ðr)   c                 ó.   — t        j                  |  «      S r   r1   r-   s    r   Ú_norm_sfr6   a   s   € Ü�<‰<˜˜ÓÐr)   c                   ó<   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )ÚExpandedNormalav  Construct the Edgeworth expansion pdf given cumulants.

    Parameters
    ----------
    cum : array_like
        `cum[j]` contains `(j+1)`-th cumulant: cum[0] is the mean,
        cum[1] is the variance and so on.

    Notes
    -----
    This is actually an asymptotic rather than convergent series, hence
    higher orders of the expansion may or may not improve the result.
    In a strongly non-Gaussian case, it is possible that the density
    becomes negative, especially far out in the tails.

    Examples
    --------
    Construct the 4th order expansion for the chi-square distribution using
    the known values of the cumulants:

    >>> import matplotlib.pyplot as plt
    >>> from scipy import stats
    >>> from scipy.special import factorial
    >>> df = 12
    >>> chi2_c = [2**(j-1) * factorial(j-1) * df for j in range(1, 5)]
    >>> edgw_chi2 = ExpandedNormal(chi2_c, name='edgw_chi2', momtype=0)

    Calculate several moments:
    >>> m, v = edgw_chi2.stats(moments='mv')
    >>> np.allclose([m, v], [df, 2 * df])
    True

    Plot the density function:
    >>> mu, sigma = df, np.sqrt(2*df)
    >>> x = np.linspace(mu - 3*sigma, mu + 3*sigma)
    >>> fig1 = plt.plot(x, stats.chi2.pdf(x, df=df), 'g-', lw=4, alpha=0.5)
    >>> fig2 = plt.plot(x, stats.norm.pdf(x, mu, sigma), 'b--', lw=4, alpha=0.5)
    >>> fig3 = plt.plot(x, edgw_chi2.pdf(x), 'r-', lw=2)
    >>> plt.show()

    References
    ----------
    .. [*] E.A. Cornish and R.A. Fisher, Moments and cumulants in the
         specification of distributions, Revue de l'Institut Internat.
         de Statistique. 5: 307 (1938), reprinted in
         R.A. Fisher, Contributions to Mathematical Statistics. Wiley, 1950.
    .. [*] https://en.wikipedia.org/wiki/Edgeworth_series
    .. [*] S. Blinnikov and R. Moessner, Expansions for nearly Gaussian
        distributions, Astron. Astrophys. Suppl. Ser. 130, 193 (1998)
    c                 óÎ  •— t        |«      dk  rt        d«      ‚| j                  |«      \  | _        | _        | _        t        | j                  «      | _        | j                  j                  dkD  rt        | j                  dd   «      | _	        nd„ | _	        t        j                  | j                  j                  «       «      }|| j                  z
  | j
                  z  }|t        j                  |«      dk(  t        j                  |«      dk  z     j                  «       rd|z  }t!        j"                  |t$        «       |j'                  |ddœ«       t)        ‰| �T  d	i |¤Ž y )
Nr   z"At least two cumulants are needed.r   c                  ó   — y)Nr   r   r-   s    r   ú<lambda>z)ExpandedNormal.__init__.<locals>.<lambda>    s   � r)   r   r	   zPDF has zeros at %s )ÚnameÚmomtyper   )r   r   Ú_compute_coefs_pdfÚ_coefÚ_muÚ_sigmar   Ú	_herm_pdfÚsizeÚ	_herm_cdfr!   Úreal_if_closeÚrootsÚimagÚabsÚanyÚwarningsÚwarnÚRuntimeWarningÚupdateÚsuperÚ__init__)ÚselfÚcumr<   Úkwdsr&   ÚmesgÚ	__class__s         €r   rO   zExpandedNormal.__init__˜   s  ø€ Üˆs‹8�aŠ<ÜÐAÓBÐBØ,0×,CÑ,CÀCÓ,HÑ)ˆŒ
�D”H˜dœkÜ! $§*¡*Ó-ˆŒØ�:‰:�?‰?˜QÒÜ% t§z¡z°!°" ~ oÓ6ˆD�Ná)ˆDŒNô ×Ñ˜TŸ^™^×1Ñ1Ó3Ó4ˆØ�—‘‰\˜TŸ[™[Ñ(ˆØŒb�g‰g�a‹j˜A‰o¤"§&¡&¨£)¨a¡-Ñ0Ñ1×5Ñ5Ô7Ø)¨AÑ-ˆDÜ�M‰M˜$¤Ô/à�‰˜TØ !ñ#ô 	$ä‰ÑÑ ˜4Ó r)   c                 óŽ   — || j                   z
  | j                  z  }| j                  |«      t        |«      z  | j                  z  S r   )r@   rA   rB   r/   ©rP   r.   Úys      r   Ú_pdfzExpandedNormal._pdf­   s9   € Ø�—‘‰\˜TŸ[™[Ñ(ˆØ�~‰~˜aÓ ¤9¨Q£<Ñ/°$·+±+Ñ=Ð=r)   c                 óŒ   — || j                   z
  | j                  z  }t        |«      | j                  |«      t	        |«      z  z   S r   )r@   rA   r4   rD   r/   rV   s      r   Ú_cdfzExpandedNormal._cdf±   s>   € Ø�—‘‰\˜TŸ[™[Ñ(ˆÜ˜!“Ø—‘˜qÓ!¤I¨a£LÑ0ñ1ð 	2r)   c                 óŒ   — || j                   z
  | j                  z  }t        |«      | j                  |«      t	        |«      z  z
  S r   )r@   rA   r6   rD   r/   rV   s      r   Ú_sfzExpandedNormal._sf¶   s>   € Ø�—‘‰\˜TŸ[™[Ñ(ˆÜ˜“Ø—‘˜qÓ!¤I¨a£LÑ0ñ1ð 	2r)   c                 óX  — |d   t        j                  |d   «      }}t        j                  |«      }t        |«      D ]  \  }}||xx   |d   |z  z  cc<   Œ t        j                  |j
                  dz  dz
  «      }d|d<   t        |j
                  dz
  «      D ]‰  }t        |dz   «      D ]v  }	||dz   z  }
|	D ]?  \  }}|
t        j                  ||dz      t        |dz   «      z  |«      t        |«      z  z  }
ŒA t        d„ |	D «       «      }||dz   d|z  z   xx   |
z  cc<   Œx Œ‹ |||fS )Nr   r   r   é   g      ð?r   c              3   ó&   K  — | ]	  \  }}|–— Œ y ­wr   r   r   s      r   r   z4ExpandedNormal._compute_coefs_pdf.<locals>.<genexpr>É   s   è ø€ Ò*™f˜q !œÑ*ùr   )r!   ÚsqrtÚasarrayÚ	enumerateÚzerosrC   Úranger   r"   r   r    )rP   rQ   ÚmuÚsigmaÚlamÚjÚlÚcoefÚsr%   r'   r   r   r&   s                 r   r>   z!ExpandedNormal._compute_coefs_pdf»   s>  € à˜‘FœBŸG™G C¨¡F›OˆEˆÜ�j‰j˜‹oˆÜ˜c“Nò 	 ‰DˆAˆqØ�‹F�c˜!‘f˜a‘iÑŒFð	 ô �x‰x˜Ÿ™ 1™ qÑ(Ó)ˆØˆˆQ‰Ü�s—x‘x !‘|Ó$ò 	*ˆAÜ-¨a°©cÓ2ò *�Ø˜q ™s‘|�Øò R‘F�Q˜ØœBŸH™H S¨¨1©¡X´	¸!¸A¹#³Ñ%>ÀÓBÄYÈqÃ\ÑQÑQ‘DðRäÑ*¨Ô*Ó*�Ø�Q˜‘U˜Q˜q™S‘[Ó! TÑ)Ô!ñ*ð	*ð �R˜ˆÐr)   )zEdgeworth expanded normal)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rO   rX   rZ   r\   r>   Ú__classcell__)rT   s   @r   r8   r8   e   s"   ø„ ñ1õd!ò*>ò2ò
2ö
r)   r8   )rJ   Únumpyr!   Únumpy.polynomial.hermite_er   Úscipy.specialr   Úscipy.statsr   r2   r   r   r(   r`   Úpir,   r/   r4   r6   r8   r   r)   r   ú<module>rv      sª   ðÛ ã Ý /Ý #Ý %Ý ð ˆHˆ:ØˆH�v�hÐØˆH�v˜vÐ&¨¨Ð1ØˆH�v˜vÐ&¨¨°6¸6Ð2BÀVÀHÐMñ	OÐ òMòDðD ˆb�g‰g�a˜Ÿ™‘gÓ€ò+òòôf�]õ fr)   