
    "g                         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y)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y)
Transformsc                      y N )selfs    h/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/distributions/copula/transforms.py__init__zTransforms.__init__   s        c                     | j                  ||      }| j                  ||      }| j                  ||      }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   sJ    LLd#At$Q%vvfvqy())r   c                     t        d      )Nznot yet implemented)NotImplementedError)r
   kr   thetas       r   derivk_inversezTransforms.derivk_inverse   s    !"788r   N)__name__
__module____qualname__r   r   r   r	   r   r   r   r      s    *9r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TransfFrankc                 B   t        j                  |      }t        j                         5  t        j                  dt
               t        j                  t        | |z               t        j                  t        |              z
   }d d d        |S # 1 sw Y   S xY w)Nignore)r   asarraywarningscatch_warningssimplefilterRuntimeWarninglogr   )r
   r   r   vals       r   evaluatezTransfFrank.evaluate!   s    JJqM$$& 	G!!(N;FFE5&(O+,rvvueV}n/EEFC	G 
	G 
s   A 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;    jjouf566>>r   c                 v    t        j                  |      }t        j                  | |z        }| |z  |dz
  z  S N   r   r'   r1   )r
   r   r   tmps       r   r   zTransfFrank.deriv-   s8    JJqMffaR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   sC    JJqMffUQY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   sJ    VVE]ffS5[!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_    VVE]ffS5[!a3#(Q,/rA))+ ,	r   c                 \   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    VVE]ffS5[!AvnCx"&&a!e--BFF1q1u94E0EE2vq1u&()*+ b1q((*
 	r   c                 (    |d|z  cxkD  xr dk  S 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                   N    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y)TransfClaytonc                     |dkD  S Nr   r	   rL   s     r   
_checkargszTransfClayton._checkargsY       qyr   c                 6    t        j                  ||       dz
  S N      ?r   powerr
   r   r   s      r   r.   zTransfClayton.evaluate\   s    xxE6"R''r   c                 :    t        j                  d|z   d|z        S Nr5   rW   r2   s      r   r   zTransfClayton.inverse_   s    xxCE**r   c                 >    | t        j                  || dz
        z  S r4   rW   rY   s      r   r   zTransfClayton.derivb   s     vUF1H---r   c                 H    ||dz   z  t        j                  || dz
        z  S r=   rW   rY   s      r   r   zTransfClayton.deriv2e   s'    	"RXXa%%:::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                 j    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   sC    %i1WuQW~%c
2a#g1s75LL	r   c                     |dkD  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

r   rO   c                   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)TransfGumbelz
    requires theta >=1
    c                     |dk\  S r4   r	   rL   s     r   rR   zTransfGumbel._checkargs   s    zr   c                 V    t        j                  t        j                  |       |      S r   )r   rX   r,   rY   s      r   r.   zTransfGumbel.evaluate   s    xx
E**r   c                 \    t        j                  t        j                  |d|z               S rU   )r   r1   rX   r2   s      r   r   zTransfGumbel.inverse   s#    vvrxxR%Z0011r   c                 H    | t        j                  |       |dz
  z  z  |z  S r4   r   r,   rY   s      r   r   zTransfGumbel.deriv   s'    w266!9*	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    vvay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
bffcA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* 	bffa!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*	 	bffa!a%j[!!	r   c                     |dkD  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      s4    +27
r   ri   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TransfIndepc                 X    t        j                  |      }t        j                  |       S r   )r   r'   r,   r
   r   r   s      r   r.   zTransfIndep.evaluate   s    JJqMq	zr   c                 X    t        j                  |      }t        j                  |       S r   r6   r
   r   r   s      r   r   zTransfIndep.inverse   s    jjovvsd|r   c                 6    t        j                  |      }d|z  S )Ng      r   r'   r}   s      r   r   zTransfIndep.deriv   s    JJqMAvr   c                 <    t        j                  |      }d|dz  z  S )NrV   r:   r   r}   s      r   r   zTransfIndep.deriv2   s    JJqMAqDyr   c                 .    t        j                  |       S r   r>   r   s      r   r   zTransfIndep.deriv2_inverse       vvsd|r   c                 0    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y)_TransfPowerzgeneric multivariate Archimedean copula with additional power transforms

    Nelson p.144, equ. 4.5.2

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