Ë
    ¢�Djc:  ã                   óÀ   — d Z ddlZ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 d„ Zd	„ Zd
„ Zd„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)zM
Created on Fri Jan 29 19:19:45 2021

Author: Josef Perktold
License: BSD-3

é    N)ÚstatsÚ	integrateÚoptimizeé   )Ú
transforms)ÚCopula)Úcheck_random_statec                 óÐ   — t        j                  t         j                  «      j                  dz  }d„ }t        j                  | «      }t        j                  |||«      d   |z  }|S )Néd   c                 ó^   — t        j                  | t        j                  | «      dz
  z  «      S ©Nr   )ÚnpÚsqueezeÚexp)Úts    úpC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels/distributions/copula/archimedean.pyÚ	integrandz_debye.<locals>.integrand   s"   € Ü�z‰z˜!œrŸv™v a›y¨1™}Ñ-Ó.Ð.ó    r   )r   ÚfinfoÚfloat64Úepsr   r   Úquad)ÚalphaÚEPSILONr   Ú_alphaÚdebye_values        r   Ú_debyer      sT   € ä�h‰h”r—z‘zÓ"×&Ñ&¨Ñ,€Gò/ä�Z‰Z˜Ó€FÜ—.‘. ¨G°VÓ<¸QÑ?À&ÑH€KØÐr   c                 ó®   — t        j                  | «      } |  dz  | dz  dz  z   | dz  dz  z
  | dz  dz  z   | dz  dz  z
  | d	z  d
z  z   | dz  dz  dz  z
  }|S )z^Debye function minus 1, Taylor series approximation around zero

    function is not used
    é   é   é$   i  é   ià: é   i ¦ é
   i âgé   é³  l    x"Ø=©r   Úasarray)ÚxÚdm1s     r   Ú_debyem1_expansionr+      sy   € ô
 	�
‰
�1‹€Aàˆ2ˆa‰4�!�Q‘$�r‘'‰>˜A˜q™D ™IÑ%¨¨1©¨V©Ñ3°a¸±d¸8±mÑCØˆb‰5�‰?ñØ ™U S™[¨Ñ7ñ8€Cà€Jr   c                 ó\   — | dk  rt        | «      }|S t        | «      }dd|dz
  z  | z  z   }|S )a  Kendall's tau for Frank Copula

    This uses Taylor series expansion for theta <= 1.

    Parameters
    ----------
    theta : float
        Parameter of the Frank copula. (not vectorized)

    Returns
    -------
    tau : float, tau for given theta
    r   r   )Ú_tau_frank_expansionr   )ÚthetaÚtaur   s      r   Ú	tau_frankr0   )   sD   € ð �‚zÜ" 5Ó)ˆð
 €Jô ˜U“mˆØ�!�{ Q‘Ñ'¨%Ñ/Ñ/ˆà€Jr   c                 óš   — t        j                  | «      } | dz  | dz  dz  z
  | dz  dz  z   | dz  dz  z
  | dz  dz  z   | d	z  d
z  dz  z
  }|S )Né	   é   i„  é   i¸Î  é   i@‡) i€øÙé   r&   l    ^‡vr'   )r)   r/   s     r   r-   r-   A   sg   € Ü
�
‰
�1‹€Að ˆQ‰3��A‘�c‘‰>˜A˜q™D ™JÑ&¨¨A©¨g©Ñ5¸¸1¹¸Y¹ÑFØˆb‰5�3‰;�}Ñ$ñ%€Cà€Jr   c                   óN   ‡ — e Zd ZdZd	ˆ fd„	Zd„ Zd„ Zd
d„Zd
d„Zd
d„Z	d„ Z
ˆ xZS )ÚArchimedeanCopulaaN  Base class for Archimedean copulas

    Parameters
    ----------
    transform : instance of transformation class
        Archimedean generator with required methods including first and second
        derivatives
    args : tuple
        Optional copula parameters. Copula parameters can be either provided
        when creating the instance or as arguments when calling methods.
    k_dim : int
        Dimension, number of components in the multivariate random variable.
        Currently only bivariate copulas are verified. Support for more than
        2 dimension is incomplete.
    c                 óP   •— t         ‰| �  |¬«       || _        || _        d| _        y )N)Úk_dimr   )ÚsuperÚ__init__ÚargsÚ	transformÚk_args)Úselfr>   r=   r:   Ú	__class__s       €r   r<   zArchimedeanCopula.__init__[   s(   ø€ Ü‰Ñ˜uÐÔ%ØˆŒ	Ø"ˆŒØˆ�r   c                 ó´   — t        |t        j                  «      rt        |«      }t        |t        «      s|f}t	        |«      dk(  s|dk(  r| j
                  }|S )Nr   ©N)Ú
isinstancer   ÚndarrayÚtupleÚlenr=   )r@   r=   s     r   Ú_handle_argszArchimedeanCopula._handle_argsa   sK   € ô �dœBŸJ™JÔ'Ü˜“;ˆDÜ˜$¤Ô&à�7ˆDÜˆt‹9˜Š>˜T Wš_à—9‘9ˆDàˆr   c                 óœ   — t        j                  |«      }|j                  d   | j                  k7  rdd l}|j                  dt        «       |S )Néÿÿÿÿr   zRu has different dimension than k_dim. This will raise exception in future versions)r   r(   Úshaper:   ÚwarningsÚwarnÚFutureWarning)r@   ÚurL   s      r   Ú	_handle_uzArchimedeanCopula._handle_uo   sB   € Ü�J‰J�q‹MˆØ�7‰7�2‰;˜$Ÿ*™*Ò$ÛØ�M‰Mð Iä'ô)ð ˆr   c                 óR  — | j                  |«      }| j                  |«      }d}| j                  j                  }| j                  j                  } | ||g|¢­Ž j                  |«      g|¢­Ž }t        |t        j                  «      r|nd}t        j                  |dd|¬«      }|S )z#Evaluate cdf of Archimedean copula.rJ   Ng        ç      ð?)Úout)
rH   rP   r>   ÚevaluateÚinverseÚsumrD   r   rE   Úclip)r@   rO   r=   ÚaxisÚphiÚphi_invÚcdfvrS   s           r   ÚcdfzArchimedeanCopula.cdfy   s’   € à× Ñ  Ó&ˆØ�N‰N˜1ÓˆØˆØ�n‰n×%Ñ%ˆØ—.‘.×(Ñ(ˆÙ‘s˜1�}˜t’}×(Ñ(¨Ó.Ð6°Ò6ˆä  ¤r§z¡zÔ2‰d¸ˆÜ�w‰w�t˜R ¨Ô-ˆØˆr   c                 ón  ‡ ‡— ‰ j                  |«      }‰ j                  |«      }d}‰ j                  j                  }|j                  d   dk(  r‰ j                  j
                  }ng|j                  d   dk(  r‰ j                  j                  }n>|j                  d   dk(  r‰ j                  j                  }n|j                  d   Šˆˆ fd„} ‰ j                  j                  |g|¢­Ž j                  |«      }t        j                   ||g|¢­Ž |«      }| ||g|¢­Ž z  }t        j                  |«      S )z#Evaluate pdf of Archimedean copula.rJ   r    r3   r   c                  ó>   •—  ‰j                   j                  ‰g| ¢­Ž S rC   ©r>   Úderivk_inverse©r=   Úkr@   s    €€r   Úpsi_dz$ArchimedeanCopula.pdf.<locals>.psi_d—   ó   ø€ Ø4�t—~‘~×4Ñ4°QÐ>¸Ò>Ð>r   )rP   rH   r>   ÚderivrK   Úderiv2_inverseÚderiv3_inverseÚderiv4_inverserT   rV   r   ÚprodÚabs)	r@   rO   r=   rX   Úphi_d1rc   ÚpsiÚpdfvrb   s	   `       @r   ÚpdfzArchimedeanCopula.pdf†   s  ù€ à�N‰N˜1ÓˆØ× Ñ  Ó&ˆØˆà—‘×%Ñ%ˆØ�7‰7�2‰;˜!ÒØ—N‘N×1Ñ1‰EØ�W‰W�R‰[˜AÒØ—N‘N×1Ñ1‰EØ�W‰W�R‰[˜AÒØ—N‘N×1Ñ1‰Eð —‘˜‘ˆAõ?ð &ˆd�n‰n×%Ñ% aÐ/¨$Ò/×3Ñ3°DÓ9ˆä�w‰w‘v˜aÐ' $Ò'¨Ó.ˆØ‘�sÐ"˜TÒ"Ñ#ˆô �v‰v�d‹|Ðr   c           
      óà  ‡ ‡— ‰ j                  |«      }‰ j                  |«      }d}‰ j                  j                  }|j                  d   dk(  r‰ j                  j
                  }ng|j                  d   dk(  r‰ j                  j                  }n>|j                  d   dk(  r‰ j                  j                  }n|j                  d   Šˆˆ fd„} ‰ j                  j                  |g|¢­Ž j                  |«      }t        j                  t        j                  t        j                   ||g|¢­Ž «      «      |«      }|t        j                  t        j                   ||g|¢­Ž «      «      z  }|S )z4Evaluate log pdf of multivariate Archimedean copula.rJ   r    r3   r   c                  ó>   •—  ‰j                   j                  ‰g| ¢­Ž S rC   r_   ra   s    €€r   rc   z'ArchimedeanCopula.logpdf.<locals>.psi_d´   rd   r   )rP   rH   r>   re   rK   rf   rg   rh   rT   rV   r   Úlogrj   )	r@   rO   r=   rX   rk   rc   rl   Úlogpdfvrb   s	   `       @r   ÚlogpdfzArchimedeanCopula.logpdf¢   s)  ù€ ð �N‰N˜1ÓˆØ× Ñ  Ó&ˆØˆà—‘×%Ñ%ˆØ�7‰7�2‰;˜!ÒØ—N‘N×1Ñ1‰EØ�W‰W�R‰[˜AÒØ—N‘N×1Ñ1‰EØ�W‰W�R‰[˜AÒØ—N‘N×1Ñ1‰Eð —‘˜‘ˆAõ?ð &ˆd�n‰n×%Ñ% aÐ/¨$Ò/×3Ñ3°DÓ9ˆô —&‘&œŸ™¤§¡¡v¨aÐ'7°$Ò'7Ó 8Ó9¸4Ó@ˆØ”2—6‘6œ"Ÿ&™&¡ sÐ!2¨TÒ!2Ó3Ó4Ñ4ˆàˆr   c                 ó$   — | j                  |«      S rC   )Útheta_from_tau©r@   r/   s     r   Ú_arg_from_tauzArchimedeanCopula._arg_from_tauÀ   s   € à×"Ñ" 3Ó'Ð'r   )© r    ©rx   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   rH   rP   r\   rn   rs   rw   Ú__classcell__©rA   s   @r   r8   r8   J   s+   ø„ ñõ òòóóó8ö<(r   r8   c                   óZ   ‡ — e Zd ZdZd	ˆ fd„	Zd
d„Zdˆ fd„	Zdˆ fd„	Zdd„Zdd„Z	d„ Z
ˆ xZS )ÚClaytonCopulaa  Clayton copula.

    Dependence is greater in the negative tail than in the positive.

    .. math::

        C_\theta(u,v) = \left[ \max\left\{ u^{-\theta} + v^{-\theta} -1 ;
        0 \right\} \right]^{-1/\theta}

    with :math:`\theta\in[-1,\infty)\backslash\{0\}`.

    c                 óš   •— |�|f}nd}t         ‰| �  t        j                  «       ||¬«       |�|dk  s|dk(  rt	        d«      ‚|| _        y )Nrx   ©r=   r:   rJ   r   zTheta must be > -1 and !=0)r;   r<   r   ÚTransfClaytonÚ
ValueErrorr.   ©r@   r.   r:   r=   rA   s       €r   r<   zClaytonCopula.__init__Ó   sX   ø€ ØÐØ�8‰DàˆDÜ‰Ñœ×1Ñ1Ó3¸$ÀeÐÔLàÐØ˜Š{˜e qšjÜ Ð!=Ó>Ð>Øˆ�
r   c                 óœ  — t        |«      }| j                  |«      \  }|j                  || j                  f«      }t	        j
                  d|z  «      j                  |df|¬«      }| j                  dk7  r#dt        j                  |«      |z  z
  d|z  z  }|S | j                  j                  t        j                  |«       |z  |«      }|S )NrR   r   ©ÚsizeÚrandom_stater    ç      ð¿)r	   rH   Úrandomr:   r   ÚgammaÚrvsr   rq   r>   rU   ©	r@   Únobsr=   rŠ   ÚrngÚthr)   ÚvÚrvs	            r   rŽ   zClaytonCopula.rvsß   s·   € Ü  Ó.ˆØ×Ñ Ó%‰ˆØ�J‰J˜˜dŸj™jÐ)Ó*ˆÜ�K‰K˜˜R™Ó ×$Ñ$¨4°¨)À#Ð$ÓFˆØ�:‰:˜Š?Ø”b—f‘f˜Q“i !‘mÑ#¨¨r©Ñ2ˆBð ˆ	ð —‘×'Ñ'¬"¯&©&°«)¨°a©¸Ó<ˆBØˆ	r   c                 ó<  •— | j                  |«      }| j                  |«      \  }|j                  d   dk(  rV|dz   t        j                  |d¬«      |dz    z  z  }t        j
                  || z  d¬«      dz
  }d|z  dz    |z  }|||z  z  S t        ‰| �  ||«      S )NrJ   r    r   ©rX   )rP   rH   rK   r   ri   rV   r;   rn   )r@   rO   r=   r’   ÚaÚbÚcrA   s          €r   rn   zClaytonCopula.pdfê   s¥   ø€ Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�7‰7�2‰;˜!ÒØ�a‘œ2Ÿ7™7 1¨2Ô.°B¸±F°)Ñ;Ñ;ˆAÜ—‘�q˜R˜C‘x bÔ)¨AÑ-ˆAØ�b‘&˜1‘*� Ñ"ˆAØ�q˜A‘v‘:Ðä‘7‘;˜q $Ó'Ð'r   c                 ó&   •— t         ‰| �  ||¬«      S ©N)r=   ©r;   rs   ©r@   rO   r=   rA   s      €r   rs   zClaytonCopula.logpdfõ   ó   ø€ ä‰w‰~˜a dˆ~Ó+Ð+r   c                 ó¶   — | j                  |«      }| j                  |«      \  }|j                  d   }t        j                  || z  d¬«      |z
  dz   d|z  z  S )NrJ   r–   r   r‹   )rP   rH   rK   r   rV   )r@   rO   r=   r’   Úds        r   r\   zClaytonCopula.cdfù   sY   € Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�G‰G�B‰KˆÜ—‘�q˜b˜S‘z¨Ô+¨aÑ/°!Ñ3¸À¹ÑCÐCr   c                 ó.   — |€| j                   }||dz   z  S ©Nr    ©r.   ©r@   r.   s     r   r/   zClaytonCopula.tauÿ   s   € àˆ=Ø—J‘JˆEà˜ ™	Ñ"Ð"r   c                 ó   — d|z  d|z
  z  S )Nr    r   rx   rv   s     r   ru   zClaytonCopula.theta_from_tau  s   € Ø�3‰w˜!˜c™'Ñ"Ð"r   r¢   ©r   rx   Nry   rC   )rz   r{   r|   r}   r<   rŽ   rn   rs   r\   r/   ru   r~   r   s   @r   r�   r�   Å   s,   ø„ ñõ
ó	õ	(õ,óDó#ö#r   r�   c                   ój   ‡ — e Zd ZdZdˆ fd„	Zdd„Zdˆ fd„	Zdd„Zdˆ fd„	Zdd„Z	dd„Z
dd	„Zd
„ Zˆ xZS )ÚFrankCopulaa2  Frank copula.

    Dependence is symmetric.

    .. math::

        C_\theta(\mathbf{u}) = -\frac{1}{\theta} \log \left[ 1-
        \frac{ \prod_j (1-\exp(- \theta u_j)) }{ (1 - \exp(-\theta)-1)^{d -
        1} } \right]

    with :math:`\theta\in \mathbb{R}\backslash\{0\}, \mathbf{u} \in [0, 1]^d`.

    c                 ó�   •— |�|f}nd}t         ‰| �  t        j                  «       ||¬«       |�|dk(  rt	        d«      ‚|| _        y )Nrx   rƒ   r   zTheta must be !=0)r;   r<   r   ÚTransfFrankr…   r.   r†   s       €r   r<   zFrankCopula.__init__  sR   ø€ ØÐØ�8‰DàˆDÜ‰Ñœ×/Ñ/Ó1¸ÀEÐÔJàÐØ˜ŠzÜ Ð!4Ó5Ð5Øˆ�
r   c           	      ó´  — t        |«      }| j                  |«      \  }|j                  || j                  f«      }t        j
                  j                  dt        j                  | «      z
  |df|¬«      }d|z  t        j                  dt        j                  t        j                  |«       |z   «      t        j                  | «      dz
  z  z   «      z  S )NrR   r   rˆ   r‹   )
r	   rH   rŒ   r:   r   ÚlogserrŽ   r   r   rq   )r@   r�   r=   rŠ   r‘   r’   r)   r“   s           r   rŽ   zFrankCopula.rvs%  sÀ   € Ü  Ó.ˆØ×Ñ Ó%‰ˆØ�J‰J˜˜dŸj™jÐ)Ó*ˆÜ�L‰L×Ñ˜R¤"§&¡&¨"¨£+Ñ-Ø#'¨ )¸#ð ó ?ˆð �R‰xœ"Ÿ&™& ¤b§f¡f´·±°q³	¨z¸A©~Ð->Ó&?Ü$&§F¡F¨B¨3£K°"Ñ$4ñ'6ñ "6ó 7ñ 7ð 	7r   c                 ó¸  •— | j                  |«      }| j                  |«      \  }|j                  d   dk7  rt        ‰	| �  ||«      S t        j                  | t        j                  |d¬«      z  «      dz
  }t        j                  | «      dz
  }| |z  d|z   z  }t        j                  t        j                  | |z  «      dz
  d¬«      |z   }|dz  }||z  S )NrJ   r    r–   r   )	rP   rH   rK   r;   rn   r   r   rV   ri   )
r@   rO   r=   r’   Úg_Úg1ÚnumÚauxÚdenrA   s
            €r   rn   zFrankCopula.pdf2  sË   ø€ Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�7‰7�2‰;˜!ÒÜ‘7‘;˜q "Ó%Ð%ä�V‰V�R�Cœ"Ÿ&™& ¨Ô,Ñ,Ó-°Ñ1ˆÜ�V‰V�R�C‹[˜1‰_ˆàˆc�B‰h˜!˜b™&Ñ!ˆÜ�g‰g”b—f‘f˜b˜S 1™W“o¨Ñ)°Ô3°bÑ8ˆØ�Q‰hˆØ�S‰yÐr   c                 óJ  — | j                  |«      }| j                  |«      \  }|j                  d   }t        j                  dt        j
                  | |z  «      z
  d¬«      }dt        j
                  | «      z
  |dz
  z  }d|z  t        j                  d||z  z
  «      z  S )NrJ   r   r–   r‹   )rP   rH   rK   r   ri   r   rq   )r@   rO   r=   r’   Údimr°   r²   s          r   r\   zFrankCopula.cdf@  s�   € Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�g‰g�b‰kˆä�g‰g�aœ"Ÿ&™& 2 ¨¡Ó*Ñ*°Ô4ˆØ”2—6‘6˜2˜#“;‰ C¨!¡GÑ,ˆà�b‰yœ2Ÿ6™6 ! c¨C¡i¡-Ó0Ñ0Ð0r   c                 óÆ  •— | j                  |«      }| j                  |«      \  }|j                  d   dk(  r›|d   |d   }}dt        j                  | «      z
  }t        j
                  ||z  «      |||z   z  z
  }|dt        j
                  |dt        j                  | |z  «      z
  dt        j                  | |z  «      z
  z  z
  «      z  z  }|S t        ‰| �  ||«      S )NrJ   r    ©.r   ©.r   r   )rP   rH   rK   r   r   rq   r;   rs   )	r@   rO   r=   r’   Úu1Úu2r˜   rn   rA   s	           €r   rs   zFrankCopula.logpdfJ  sâ   ø€ Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�7‰7�2‰;˜!Òà�v‘Y  &¡	�ˆBØ”B—F‘F˜B˜3“K‘ˆAÜ—&‘&˜˜a™“. 2¨¨b©¡>Ñ1ˆCØ�1”r—v‘v˜a 1¤r§v¡v°¨d°R©iÓ'8Ñ#8Ø ¤2§6¡6¨B¨$°©)Ó#4Ñ4ñ#6ñ 6ó 7ñ 7ñ 7ˆCàˆJô ‘7‘> ! TÓ*Ð*r   c                 óh  — | j                  |«      }| j                  |«      \  }|j                  d   dk(  rr|d   |d   }}t        j                  | |z  «      }|t        j
                  | «      t        j
                  | |z  «      z  t        j
                  | |z  «      z   z  }|S t        d«      ‚)zFConditional cdf of second component given the value of first.
        rJ   r    r¶   r·   ú#u needs to be bivariate (2 columns))rP   rH   rK   r   r   Úexpm1ÚNotImplementedError)r@   rO   r=   r’   r¸   r¹   Úcdfcs          r   Úcdfcond_2g1zFrankCopula.cdfcond_2g1Z  s¦   € ð �N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�7‰7�2‰;˜!Òà�v‘Y  &¡	�ˆBÜ—6‘6˜B˜$ ™)Ó$ˆDØ”B—H‘H˜b˜S“M¤B§H¡H¨r¨T°B©YÓ$7Ñ7¼"¿(¹(ÀRÀ4È"Á9Ó:MÑMÑMˆDØˆKä%Ð&KÓLÐLr   c           	      ó<  — t        j                  |«      }| j                  |«      \  }|j                  d   dk(  rXt        j                  dt        j
                  | «      d|z  dz
  t        j                  | |z  «      z  dz   z  z   «       |z  }|S t        d«      ‚)zFConditional pdf of second component given the value of first.
        rJ   r   r»   )r   r(   rH   rK   rq   r¼   r   r½   )r@   Úqr¸   r=   r’   Úppfcs         r   Úppfcond_2g1zFrankCopula.ppfcond_2g1h  s¢   € ô �Z‰Z˜‹^ˆØ×Ñ Ó%‰ˆØ�8‰8�B‰<˜1Òä—V‘V˜A¤§¡¨2¨£Ø !™e a™i¬2¯6©6°2°#¸±(Ó+;Ñ;¸aÑ?ñ!Añ Aó Bð BØDFñGˆDð ˆKä%Ð&KÓLÐLr   c                 ó4   — |€| j                   }t        |«      S rC   )r.   r0   r¤   s     r   r/   zFrankCopula.tauv  s   € àˆ=Ø—J‘JˆEä˜ÓÐr   c                 ó.  ‡ ‡— t        j                  t        j                  j                  «      }t        j                  t        j                  j
                  «      }ˆ ˆfd„}‰dk  rdnd}t        j                  ||||f¬«      }|j                  d   }|S )Nc                 ó.   •— ‰j                  | ¬«      ‰z
  S )Nr£   )r/   )r   r@   r/   s    €€r   Ú_theta_from_tauz3FrankCopula.theta_from_tau.<locals>._theta_from_tau�  s   ø€ Ø—8‘8 %�8Ó(¨3Ñ.Ð.r   g)\�Âõ(¼?g      à?r    )Úboundsr   )	r   rq   ÚsysÚ
float_infoÚminÚmaxr   Úleast_squaresr)   )r@   r/   ÚMIN_FLOAT_LOGÚMAX_FLOAT_LOGrÇ   ÚstartÚresultr.   s   ``      r   ru   zFrankCopula.theta_from_tau}  sx   ù€ ÜŸ™œsŸ~™~×1Ñ1Ó2ˆÜŸ™œsŸ~™~×1Ñ1Ó2ˆõ	/ð ˜T’z‘ qˆä×'Ñ'¨¸Ø˜=ðH*ô +ˆà—‘˜‘ˆØˆr   r¢   r¦   ry   rC   )rz   r{   r|   r}   r<   rŽ   rn   r\   rs   r¿   rÃ   r/   ru   r~   r   s   @r   r¨   r¨   
  s7   ø„ ñõ
ó7õó1õ+ó MóMó ör   r¨   c                   óZ   ‡ — e Zd ZdZd	ˆ fd„	Zd
d„Zdˆ fd„	Zdd„Zdˆ fd„	Zdd„Z	d„ Z
ˆ xZS )ÚGumbelCopulaa  Gumbel copula.

    Dependence is greater in the positive tail than in the negative.

    .. math::

        C_\theta(u,v) = \exp\!\left[ -\left( (-\log(u))^\theta +
        (-\log(v))^\theta \right)^{1/\theta} \right]

    with :math:`\theta\in[1,\infty)`.

    c                 ó�   •— |�|f}nd}t         ‰| �  t        j                  «       ||¬«       |�|dk  rt	        d«      ‚|| _        y )Nrx   rƒ   r   zTheta must be > 1)r;   r<   r   ÚTransfGumbelr…   r.   r†   s       €r   r<   zGumbelCopula.__init__›  sR   ø€ ØÐØ�8‰DàˆDÜ‰Ñœ×0Ñ0Ó2¸ÀUÐÔKàÐØ˜ŠzÜ Ð!4Ó5Ð5Øˆ�
r   c           
      ó  — t        |«      }| j                  |«      \  }|j                  || j                  f«      }t        j
                  j                  d|z  ddt        j                  t        j                  d|z  z  «      |z  |df|¬«      }| j                  dk7  r5t        j                  t        j                  |«       |z  d|z  z   «      }|S | j                  j                  t        j                  |«       |z  |«      }|S )NrR   r   r    r   rˆ   )r	   rH   rŒ   r:   r   Úlevy_stablerŽ   r   ÚcosÚpir   rq   r>   rU   r�   s	            r   rŽ   zGumbelCopula.rvs§  sé   € Ü  Ó.ˆØ×Ñ Ó%‰ˆØ�J‰J˜˜dŸj™jÐ)Ó*ˆÜ×Ñ×!Ñ!Ø�‰G�R˜Ü�F‰F”2—5‘5˜A ™FÑ#Ó$¨Ñ*Ø˜�¨ð "ó 
ˆð �:‰:˜Š?Ü—‘œ2Ÿ6™6 !›9˜* q™.¨b°2©gÑ6Ð6Ó7ˆBð ˆ	ð —‘×'Ñ'¬"¯&©&°«)¨°a©¸Ó<ˆBØˆ	r   c                 óà  •— | j                  |«      }| j                  |«      \  }|j                  d   dk(  r¨t        j                  |«       }||z  }t        j
                  |d¬«      }|d|z  z  }t        j                  | «      }||z   dz
  }	|d|z  dz
  z  }
t        j                  |d¬«      |dz
  z  }t        j                  |d¬«      dz  }||	z  |
z  |z  |z  S t        ‰| �%  ||«      S )NrJ   r    r–   rR   r‹   )
rP   rH   rK   r   rq   rV   r   ri   r;   rn   )r@   rO   r=   r’   ÚxyÚxy_thetaÚsum_xy_thetaÚsum_xy_theta_thetar—   r˜   r™   r    ÚerA   s                €r   rn   zGumbelCopula.pdf·  só   ø€ Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆØ�7‰7�2‰;˜!ÒÜ—&‘&˜“)�ˆBØ˜R‘xˆHäŸ6™6 (°Ô4ˆLØ!-°#¸±(Ñ!;Ðä—‘Ð*Ð*Ó+ˆAØ" RÑ'¨#Ñ-ˆAØ  r¡¨A¡Ñ.ˆAÜ—‘˜ Ô$¨¨c©Ñ2ˆAÜ—‘˜ Ô#¨Ñ.ˆAà�q‘5˜1‘9˜q‘= 1Ñ$Ð$ä‘7‘;˜q $Ó'Ð'r   c                 óâ   — | j                  |«      }| j                  |«      \  }t        j                  t        j                  |«       |z  d¬«      }t        j
                  |d|z  z   «      }|S )NrJ   r–   rR   )rP   rH   r   rV   rq   r   )r@   rO   r=   r’   Úhr\   s         r   r\   zGumbelCopula.cdfË  s_   € Ø�N‰N˜1ÓˆØ×Ñ Ó%‰ˆÜ�F‰F”R—V‘V˜A“Y�J 2Ñ%¨BÔ/ˆÜ�f‰f�a˜C "™H‘oÐ%Ó&ˆØˆ
r   c                 ó&   •— t         ‰| �  ||¬«      S r›   rœ   r�   s      €r   rs   zGumbelCopula.logpdfÒ  rž   r   c                 ó.   — |€| j                   }|dz
  |z  S r   r£   r¤   s     r   r/   zGumbelCopula.tauÖ  s   € àˆ=Ø—J‘JˆEà˜‘	˜UÑ"Ð"r   c                 ó   — dd|z
  z  S r   rx   rv   s     r   ru   zGumbelCopula.theta_from_tauÝ  s   € Ø�A˜‘G‰}Ðr   r¢   r¦   ry   rC   )rz   r{   r|   r}   r<   rŽ   rn   r\   rs   r/   ru   r~   r   s   @r   rÓ   rÓ   �  s+   ø„ ñõ
óõ (ó(õ,ó#ör   rÓ   )r}   rÉ   Únumpyr   Úscipyr   r   r   Ú r   Úcopulasr   Ústatsmodels.tools.rng_qrngr	   r   r+   r0   r-   r8   r�   r¨   rÓ   rx   r   r   ú<module>rê      ss   ðñó ã ß ,Ñ ,å Ý Ý 9òò	òò0ôx(˜ô x(ôvB#Ð%ô B#ôJ@Ð#ô @ôFQÐ$õ Qr   