
    M/Ph                         d Z ddlZddlZddlmZmZ  G d d          Z G d de          Z G d d	e          Z	 G d
 de          Z
 G d de          Z G d de          ZdS )z Transformation Classes as generators for Archimedean copulas


Created on Wed Jan 27 14:33:40 2021

Author: Josef Perktold
License: BSD-3

    N)expm1gammac                        e Zd Zd Zd Zd ZdS )
Transformsc                     d S N )selfs    k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/distributions/copula/transforms.py__init__zTransforms.__init__   s        c                     |                      ||          }|                     ||          }|                     ||          }t          j        ||dz  z            S )N   )inversederivderiv2npabs)r
   phiargstphi_d1phi_d2s         r   deriv2_inversezTransforms.deriv2_inverse   sT    LLd##At$$Q%%vfvqy()))r   c                      t          d          )Nznot yet implemented)NotImplementedError)r
   kr   thetas       r   derivk_inversezTransforms.derivk_inverse   s    !"7888r   N)__name__
__module____qualname__r   r   r   r	   r   r   r   r      sA          * * *9 9 9 9 9r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TransfFrankc                 N   t          j        |          }t          j                    5  t          j        dt
                     t          j        t          | |z                       t          j        t          |                      z
   }d d d            n# 1 swxY w Y   |S )Nignore)r   asarraywarningscatch_warningssimplefilterRuntimeWarninglogr   )r
   r   r   vals       r   evaluatezTransfFrank.evaluate!   s    JqMM$&& 	G 	G!(N;;;FE5&(OO+,,rvueV}}n/E/EEFC	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 
s   A&BB!Bc                     t          j        |          }t          j        t          j        |           t	          |           z             |z  S r   )r   r'   log1pexpr   r
   r   r   s      r   r   zTransfFrank.inverse)   s>    joouf5666>>r   c                 r    t          j        |          }t          j        | |z            }| |z  |dz
  z  S N   r   r'   r1   )r
   r   r   tmps       r   r   zTransfFrank.deriv-   s9    JqMMfaRXv|S1W%%r   c                     t          j        |          }t          j        ||z            }|dz   |z  |dz
  dz  z  }|S N   r5   r6   )r
   r   r   r7   d2s        r   r   zTransfFrank.deriv22   sD    JqMMfUQYaxZ#q1,	r   c                     t          j        |          }t          j        ||z             }|dz
  |z  |||z
  dz   dz  z  z  }|S Nr5   r:   r   r1   )r
   r   r   eteptr;   s         r   r   zTransfFrank.deriv2_inverse8   sK    VE]]fS5[!!1f^ub1q'889	r   c                     t          j        |          }t          j        ||z             }|dz
  |z  ||z   dz
  z  |||z
  dz   dz  z  z   }|S )Nr5   r   r>   )r
   r   r   r?   r@   d3s         r   deriv3_inversezTransfFrank.deriv3_inverse?   s`    VE]]fS5[!!a3#(Q,/rA))+ ,	r   c                 R   t          j        |          }t          j        ||z             }|}|}|dz
  |z  d|z  t          j        d||z   z            z   dt          j        |d|z  z             z  z   d|z  z
  t          j        d|z            z   dz   z  |||z
  dz   dz  z  z  }|S )Nr5   r:      r>   )r
   r   r   r?   r@   pbd4s           r   deriv4_inversezTransfFrank.deriv4_inverseF   s    VE]]fS5[!!AvnCx"&a!e---BF1q1u94E4E0EE2vq1u&()*+ b1q((*
 	r   c                 (    |d|z  cxk    odk     nc S )Nr   r5   r	   r
   r   s     r   is_completly_monotonicz"TransfFrank.is_completly_monotonicR   s(    q5y$$$$1$$$$$r   N)r    r!   r"   r.   r   r   r   r   rC   rJ   rM   r	   r   r   r$   r$      s          ? ? ?& & &
      
 
 
% % % % %r   r$   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TransfClaytonc                     |dk    S Nr   r	   rL   s     r   
_checkargszTransfClayton._checkargsY       qyr   c                 4    t          j        ||           dz
  S N      ?r   powerr
   r   r   s      r   r.   zTransfClayton.evaluate\   s    xE6""R''r   c                 8    t          j        d|z   d|z            S Nr5   rW   r2   s      r   r   zTransfClayton.inverse_   s    xCE***r   c                 <    | t          j        || dz
            z  S r4   rW   rY   s      r   r   zTransfClayton.derivb   s!    vUF1H----r   c                 F    ||dz   z  t          j        || dz
            z  S r=   rW   rY   s      r   r   zTransfClayton.deriv2e   s(    	"RXa%%:%:::r   c                 (    d|z   |dz    |z  z   |z  S r4   r	   r2   s      r   deriv_inversezTransfClayton.deriv_inverseh   s$    SeaiL5011E99r   c                 6    |dz   d|z   d|z  dz
  z  z  |dz  z  S )Nr5   r\   r:   r	   r2   s      r   r   zTransfClayton.deriv2_inversek   s+    q3w"u*q.99UAXEEr   c                 R    |}d|z   dd|z  z   z  |dz  z  d|z   d|z  dz
  z  z   }|S )Nr5   r:   r   r\   r	   )r
   r   r   thrB   s        r   rC   zTransfClayton.deriv3_inversen   sD    B1q2v:&Q.!c'R"Wq[1IIJ	r   c                 b    |}d|z   dd|z  z   z  dd|z  z   z  |dz  z  d|z   d|z  dz
  z  z  }|S )Nr5   r:   r   rF   r\   r	   )r
   r   r   rc   rI   s        r   rJ   zTransfClayton.deriv4_inverses   sQ    2v!a"f*%QV4r1u<s7b2gk*+	r   c                 z    d|z  }d|z  t          ||z             z  t          |          z  d|z   ||z    z  z  }|S r[   )r   )r
   r   r   r   thirI   s         r   r   zTransfClayton.derivk_inversey   sG    %i1WuQW~~%c

2a#g1s75LL	r   c                     |dk    S rQ   r	   rL   s     r   rM   z$TransfClayton.is_completly_monotonic~   rS   r   N)r    r!   r"   rR   r.   r   r   r   r`   r   rC   rJ   r   rM   r	   r   r   rO   rO   W   s          ( ( (+ + +. . .; ; ;: : :F F F  
    
    r   rO   c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TransfGumbelz
    requires theta >=1
    c                     |dk    S r4   r	   rL   s     r   rR   zTransfGumbel._checkargs   s    zr   c                 R    t          j        t          j        |           |          S r   )r   rX   r,   rY   s      r   r.   zTransfGumbel.evaluate   s    x
E***r   c                 X    t          j        t          j        |d|z                       S rU   )r   r1   rX   r2   s      r   r   zTransfGumbel.inverse   s%    vrxR%Z000111r   c                 F    | t          j        |           |dz
  z  z  |z  S r4   r   r,   rY   s      r   r   zTransfGumbel.deriv   s'    w26!99*	22Q66r   c                     t          j        |          }|dd|z   z  z  ||dz
  z  z  d|z
  z  |dd|z   z  z  ||z  z  z   |dz  |z  z  }|S )Nr\   r5   r:   rn   )r
   r   r   tmp1r;   s        r   r   zTransfGumbel.deriv2   sn    vayyR1u9%%uQw71u9ER1u9%%dEk1245qDI?
 	r   c                     |}|d|z  z  |dz
  |d|z  z  z  z   |dz  |dz  z  z  }|t          j        |d|z  z             z  }|S r9   r>   )r
   r   r   rc   r;   s        r   r   zTransfGumbel.deriv2_inverse   s^    AFmrAvq2v6636BE>J
bfcAFm^$$$	r   c                     |}|}|d|z  z   dd|z  z
  |d|z  z  z  z   dd|z  z
  |z  dz
  |d|z  z  z  z   ||z  dz  z  }|t          j        |d|z  z             z  }|S )Nr   r:   r5   r>   )r
   r   r   rG   rH   rB   s         r   rC   zTransfGumbel.deriv3_inverse   s    1q5zkQQY!a!e*44AE	Q"a!a%j01q51* 	bfa!a%j[!!!	r   c                    |}|}d|dz  z  d|dz  z  z
  d|z  z   dz
  |d|z  z  z  d|dz  z  d|z  z
  dz   |d|z  z  z  z   d|dz
  z  |d|z  z  z  z   |d	|z  z  z   ||z  d	z  z  }|t          j        |d|z  z             z  }|S )
N   r      r:   g      @r5         rF   r>   )r
   r   r   rG   rH   rI   s         r   rJ   zTransfGumbel.deriv4_inverse   s    1a4x"q!t)#b1f,q0AAJ>AqDy26!A%QU34AE{a!a%j() !a%j q51*	 	bfa!a%j[!!!	r   c                     |dk    S r4   r	   rL   s     r   rM   z#TransfGumbel.is_completly_monotonic   rS   r   N)r    r!   r"   __doc__rR   r.   r   r   r   r   rC   rJ   rM   r	   r   r   ri   ri      s           + + +2 2 27 7 7      
 
 
    r   ri   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TransfIndepc                 T    t          j        |          }t          j        |           S r   )r   r'   r,   r
   r   r   s      r   r.   zTransfIndep.evaluate   s    JqMMq		zr   c                 T    t          j        |          }t          j        |           S r   r6   r
   r   r   s      r   r   zTransfIndep.inverse   s    joovsd||r   c                 4    t          j        |          }d|z  S )Ng      r   r'   r}   s      r   r   zTransfIndep.deriv   s    JqMMAvr   c                 :    t          j        |          }d|dz  z  S )NrV   r:   r   r}   s      r   r   zTransfIndep.deriv2   s    JqMMAqDyr   c                 ,    t          j        |           S r   r>   r   s      r   r   zTransfIndep.deriv2_inverse       vsd||r   c                 .    t          j        |            S r   r>   r   s      r   rC   zTransfIndep.deriv3_inverse   s    t}r   c                 ,    t          j        |           S r   r>   r   s      r   rJ   zTransfIndep.deriv4_inverse   r   r   N)
r    r!   r"   r.   r   r   r   r   rC   rJ   r	   r   r   r{   r{      s}                        r   r{   c                   $    e Zd ZdZd Zd Zd ZdS )_TransfPowerzgeneric multivariate Archimedean copula with additional power transforms

    Nelson p.144, equ. 4.5.2

    experimental, not yet tested and used
    c                     || _         d S r   )	transform)r
   r   s     r   r   z_TransfPower.__init__   s    "r   c                     t          j        |          }t          j         | j        j        t          j        ||          g|R  |          }|S r   )r   r'   rX   r   r.   )r
   r   alphabetatr_argsr   s         r   r.   z_TransfPower.evaluate   sN    JqMMh.t~.rx5/A/ALGLLL 
r   c           	          t          j        |          }| j        }t          j         |j        t          j        |d|z            g|R  d|z            }|S rU   )r   r'   r   rX   r.   )r
   r   r   r   r   transfphi_invs          r   r   z_TransfPower.inverse   sY    joo(?6?28Cd+C+CNgNNN:' 'r   N)r    r!   r"   ry   r   r.   r   r	   r   r   r   r      sK         # # #      r   r   )ry   r(   numpyr   scipy.specialr   r   r   r$   rO   ri   r{   r   r	   r   r   <module>r      sE         & & & & & & & &9 9 9 9 9 9 9 95% 5% 5% 5% 5%* 5% 5% 5%p( ( ( ( (J ( ( (V6 6 6 6 6: 6 6 6r    *   8    :     r   