
    "g$                        d Z ddlZddlmZ ddlmZmZ  G d d      Z G d de      Z	 e	       Z
 G d	 d
e      Z e       Z G d de      Z e       Z G d de      Z e       Z G d de      Z e       Z G d de      Z e       Zy)z Pickand's dependence functions as generators for EV-copulas


Created on Wed Jan 27 14:33:40 2021

Author: Josef Perktold
License: BSD-3

    N)stats)_approx_fprime_cs_scalarapprox_hessc                   $    e Zd Zd Zd Zd Zd Zy)PickandDependencec                 &     | j                   |i |S N)evaluate)selfargskwargss      h/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/distributions/copula/depfunc_ev.py__call__zPickandDependence.__call__   s    t}}d-f--    c                     t         r	   )NotImplementedErrorr   tr   s      r   r
   zPickandDependence.evaluate   s    !!r   c                 X    t        j                  |      }t        || j                        S )zkFirst derivative of the dependence function

        implemented through numerical differentiation
        )np
atleast_1dr   r
   r   s      r   derivzPickandDependence.deriv   s#    
 MM!'4==99r   c           
          t        j                  |      dk(  rt        |g| j                  |      d   }|S t        j                  |D cg c]  }t        |g| j                  |      d     c}      }|S c c}w )zlSecond derivative of the dependence function

        implemented through numerical differentiation
           )r   r   )r   r   )r   sizer   r
   array)r   r   r   d2tis        r   deriv2zPickandDependence.deriv2    sw    
 771:?aS$--d;A>B 	 %&(! 'tT]]FtL ( )B	(s   
#A6N)__name__
__module____qualname__r   r
   r   r    r   r   r   r      s    .":
r   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)AsymLogisticzasymmetric logistic model of Tawn 1988

    special case: a1=a2=1 : Gumbel

    restrictions:
     - theta in (0,1]
     - a1, a2 in [0,1]
       c                 ^    |dkD  xr |dk  }|dk\  xr |dk  }|dk\  xr |dk  }|xr |xr |S Nr   r   r#   r   a1a2thetacondthconda1conda2s          r   _check_argszAsymLogistic._check_args8   sH    !)-%1*'(a'(a+&+V+r   c                 r    d|z
  d|z
  z  }|d|z
  |z  z  }|||z  d|z  z  |d|z
  z  d|z  z  z   |z  z  }|S )Nr         ?r#   r   r   r*   r+   r,   transfs         r   r
   zAsymLogistic.evaluate>   s_    
 b&QqS!1r6Q,BFbh'21:E*BBUJJr   c                     |}|||z  d|z  dz
  z  z  ||d|z
  z  d|z  dz
  z  z  z
  ||z  d|z  z  |d|z
  z  d|z  z  z   |dz
  z  z  |z
  |z   }|S Nr   r#   )r   r   r*   r+   r,   bd1s          r   r   zAsymLogistic.derivI   s    R!VqsQw''"a!e!a/H*HHQ!A#"A,!A#!66!a%@ACEFHJK	r   c                     |}d|z
  ||z  d|z  z  z  |d|z
  z  d|z  z  z  ||z  d|z  z  |d|z
  z  d|z  z  z   |dz
  z  z  |d|z
  dz  z  |dz  z  z  }|S )Nr      r#   )r   r   r*   r+   r,   r7   r   s          r   r   zAsymLogistic.deriv2P   s    1ua1Q3'2Q<1Q3*??Q!A#"A,!A#!66!a%@Aa!eaZ!Q$&( 	r   N	r    r!   r"   __doc__k_argsr0   r
   r   r   r#   r   r   r%   r%   -   s"     F,	r   r%   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)AsymNegLogisticzasymmetric negative logistic model of Joe 1990

    special case:  a1=a2=1 : symmetric negative logistic of Galambos 1978

    restrictions:
     - theta in (0,inf)
     - a1, a2 in (0,1]
    r&   c                 P    |dkD  }|dkD  xr |dk  }|dkD  xr |dk  }|xr |xr |S r(   r#   r)   s          r   r0   zAsymNegLogistic._check_argsf   s?    !)q&'rQwq&'rQw+&+V+r   c                 P    ||}}d|d|z
  z  d|z  z  ||z  d|z  z  z   | z  z
  }|S )Nr   g      r#   r3   s         r   r
   zAsymNegLogistic.evaluatel   sN     RBrQqSzSY/AvU+,05v7 7r   c                     ||}}d|z  }|dz
  }||z  d|z
  |z  z  ||z  ||z  z  z
  |d|z
  z  |z  ||z  |z  z   | dz
  z  z  }|S )Nr   r#   )r   r   r*   r+   r,   m1m2r8   s           r   r   zAsymNegLogistic.derivu   s|    RB%Z!V
 "fA{"RVae^3q1u"b1fr\1eVaZ8A A	r   c                     |}||}}|d|z
  z  d|z  z  }||z  d|z  z  }|d|z
  z  d|z  z  }||z  d|z  z  }	|dz   |z  |z  ||	z   | z  z  }
|d|z
  dz  z  |dz  z  ||z   dz  z  }|
|z  }|S )Nr   rC   r:   r#   )r   r   r*   r+   r,   r7   a1tpa2tpa1tna2tnt1t2r   s                r   r   zAsymNegLogistic.deriv2   s    RBa!e!$Q!A#a!e1%Q"Q$!et^d"dTkaR%88!a%!^ad"dTkA%55"W	r   Nr;   r#   r   r   r?   r?   [   s"     F,
r   r?   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy)	AsymMixedzasymmetric mixed model of Tawn 1988

    special case:  k=0, theta in [0,1] : symmetric mixed model of
        Tiago de Oliveira 1980

    restrictions:
     - theta > 0
     - theta + 3*k > 0
     - theta + k <= 1
     - theta + 2*k <= 1
    r:   c                 Z    |dk\  }|d|z  z   dkD  xr ||z   dk  xr |d|z  z   dk  }||z  S )Nr   r&   r   r:   r#   )r   r,   kr-   cond1s        r   r0   zAsymMixed._check_args   sE    1*1qMuqyA~MEAaCK1<L~r   c                 @    d||z   |z  z
  ||z  |z  z   ||dz  z  z   }|S )Nr   r&   r#   )r   r   r,   rP   r4   s        r   r
   zAsymMixed.evaluate   s3    eai1_$uqy{2QAX=r   c                 <    ||z    d|z  |z  z   d|z  |dz  z  z   }|S )Nr:   r&   r#   )r   r   r,   rP   d_dts        r   r   zAsymMixed.deriv   s0    !)}q5y1},q1uq!t|;r   c                 "    d|z  d|z  |z  z   }|S )Nr:      r#   )r   r   r,   rP   d2_dt2s        r   r   zAsymMixed.deriv2   s    UQUQY&r   Nr;   r#   r   r   rN   rN      s"    
 F
r   rN   c                        e Zd ZdZdZd Zd Zy)AsymBiLogisticzbilogistic model of Coles and Tawn 1994, Joe, Smith and Weissman 1992

    restrictions:
     - (beta, delta) in (0,1)^2 or
     - (beta, delta) in (-inf,0)^2

    not vectorized because of numerical integration
    r:   c                 X    |dkD  xr |dk  xr |dkD  xr |dk  }|dk  xr |dk  }||z  S r(   r#   )r   betadeltarQ   cond2s        r   r0   zAsymBiLogistic._check_args   sB    K	K	K
*	u}r   c                 @    fd}ddl m}  ||dd      d   }|S )Nc                     dz
  t        j                  |        z  dz
  z  }dz
  t        j                  d| z
         z  z  }t        j                  ||      S r6   )r   powermaximum)wterm1term2r[   r\   r   s      r   
_integrantz+AsymBiLogistic.evaluate.<locals>._integrant   s\    X!dU!33qs;EY"((1Q3"77!;E::eU++r   r   )quadr   )scipy.integraterf   )r   r   r[   r\   re   rf   r4   s    ```   r   r
   zAsymBiLogistic.evaluate   s%    	,
 	)j!Q'*r   Nr    r!   r"   r<   r=   r0   r
   r#   r   r   rY   rY      s     F
r   rY   c                   4    e Zd ZdZdZd Zd Zd	dZd Zd Z	y)
HRzmodel of Huesler Reiss 1989

    special case:  a1=a2=1 : symmetric negative logistic of Galambos 1978

    restrictions:
     - lambda in (0,inf)
    r   c                     |dkD  }|S )Nr   r#   )r   lamdaconds      r   r0   zHR._check_args   s    	r   c                     t        j                  d|z
  |z        dz  |z  }ddlm} d|z
  |j	                  ||z         z  ||j	                  ||z
        z  z   }|S )Nr2         ?r   )normr   )r   logscipy.statsrp   _cdf)r   r   rl   termrp   r4   s         r   r
   zHR.evaluate   sa     vvrAvl#c)E1$q5DIIedl33dii--.r   c                 P   t        |t        t        j                  f      sd|v rd|v rd}nt	        d      dt        j
                  dt        j                  z        z  }|}t        j                  d|z
  |z        dz  |z  }dd|z  |dz
  z  |z  z  }d|z
  |d|z
  |z  dz  z  z  }||z   }	t        j                  j                  |	      }
t        j                  |	dz   dz        |z  }| |	z  }||z
  }t        j                  j                  |      }t        j                  |dz   dz        |z  }| |z  }|dv r|| |z  |dz
  |z  z
  z  |z   |
z
  }|dv r6|dz  ||z  |dz
  |z  z
  z  |dz
   |z  d|z  z
  |z  z   ||z  d|z  z   |z  z
  }|dk(  rS |dk(  rS |dk(  rfS y )	Nr   r:   rC   zorder should be 1, 2, or (1,2)r2   ro   )r   rC   )r:   rC   )
isinstanceintr   integer
ValueErrorsqrtpirq   r   rp   cdfexp)r   r   rl   orderdnaggd1gd2tpfpfd1pfd2ptnfnfd1nfd2nr8   r   s                      r   _derivsz
HR._derivs   s   %#rzz!23U
e !ABBRUU##FFBFa< 3&*1q5AE?Q&'Qw1Q!a//0 UZZ^^Bvvr1ufqj!B&urzUZZ^^Bvvr1ufqj!B&urzG T	QUdN23b82=BG q&AHA~56U8c>AG+t34s7QW$,-B
 A:IaZIb[8O r   c                 (    | j                  ||d      S r6   r   r   r   rl   s      r   r   zHR.deriv      ||Aua((r   c                 (    | j                  ||d      S )Nr:   r   r   s      r   r   z	HR.deriv2   r   r   N))r   r:   )
r    r!   r"   r<   r=   r0   r
   r   r   r   r#   r   r   rj   rj      s(     F
*X))r   rj   c                        e Zd ZdZdZd Zd Zy)TEVz_t-EV model of Demarta and McNeil 2005

    restrictions:
     - rho in (-1,1)
     - x > 0
    r:   c                 4    |}|dkD  }|dkD  xr |dk  }|xr |S r(   r#   )r   rhodfxrQ   r]   s         r   r0   zTEV._check_args1  s,    Qq'sQwr   c                    |}ddl m} t        j                  |d|z
  z  d|z        |z
  }t        j                  d|z
  |z  d|z        |z
  }t        j                  d|z         t        j                  d||z  z
        z  }||z  }	||z  }
||j                  |	|dz         z  d|z
  |j                  |
|dz         z  z   }|S )Nr   )r   r2   r   )rr   r   r   r`   rz   rs   )r   r   r   r   r   stats_trc   rd   term0z1z2r4   s               r   r
   zTEV.evaluate7  s     	- !RT(BqD)C/2a4(BqD)C/Q"''!c#g+"66U]U]W\\"ac**a!ew||B!7L-LLr   Nrh   r#   r   r   r   r   (  s     Fr   r   )r<   numpyr   scipyr   statsmodels.tools.numdiffr   r   r   r%   transform_tawnr?   transform_joerN   transform_tawn2rY   transform_bilogisticrj   transform_hrr   transform_tevr#   r   r   <module>r      s      K :($ (V 1' 1h  !! B +& < &' J)	 J)Z t
 @ r   