
    M/Ph$                     h   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dS )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dS )PickandDependencec                      | j         |i |S N)evaluate)selfargskwargss      k/var/www/html/test/jupyter/venv/lib/python3.11/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                 T    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%    
 M!'4=999r   c                      t          j        |          dk    rt          |g j                  d         }n!t          j         fd|D                       }|S )zlSecond derivative of the dependence function

        implemented through numerical differentiation
           r   r   c                 L    g | ] }t          |gj                   d         !S )r   )r   r   )r   r
   ).0tir   r   s     r   
<listcomp>z,PickandDependence.deriv2.<locals>.<listcomp>(   sA     ( ( (! 'tT]FFFtL ( ( (r   )r   sizer   r
   array)r   r   r   d2s   ` ` r   deriv2zPickandDependence.deriv2    sw    
 71::??aS$-d;;;A>BB ( ( ( ( (%&( ( ( ) )B	r   N)__name__
__module____qualname__r   r
   r   r#    r   r   r   r      sP        . . ." " ": : :
 
 
 
 
r   r   c                   .    e Zd ZdZdZd Zd Zd Zd ZdS )AsymLogisticzasymmetric logistic model of Tawn 1988

    special case: a1=a2=1 : Gumbel

    restrictions:
     - theta in (0,1]
     - a1, a2 in [0,1]
       c                 V    |dk    o|dk    }|dk    o|dk    }|dk    o|dk    }|o|o|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/   r0   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/   r0   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/   r0   r;   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_argsr4   r
   r   r#   r'   r   r   r)   r)   -   sa          F, , ,	 	 	      r   r)   c                   .    e Zd ZdZdZd Zd Zd Zd ZdS )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                 J    |dk    }|dk    o|dk    }|dk    o|dk    }|o|o|S r,   r'   r-   s          r   r4   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'   r7   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/   r0   m1m2r<   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   rG   r>   r'   )r   r   r.   r/   r0   r;   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   rC   rC   [   sa          F, , ,  
 
 
    r   rC   c                   .    e Zd ZdZdZd Zd Zd Zd ZdS )	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k    o||z   dk    o|d|z  z   dk    }||z  S )Nr   r*   r   r>   r'   )r   r0   kr1   cond1s        r   r4   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   r0   rT   r8   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   r0   rT   d_dts        r   r   zAsymMixed.deriv   s0    !)}q5y1},q1uq!t|;r   c                 "    d|z  d|z  |z  z   }|S )Nr>      r'   )r   r   r0   rT   d2_dt2s        r   r#   zAsymMixed.deriv2   s    UQUQY&r   Nr?   r'   r   r   rR   rR      sa        
 
 F  
        r   rR   c                   "    e Zd ZdZdZd Zd ZdS )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                 T    |dk    o|dk    o|dk    o|dk    }|dk     o|dk     }||z  S r,   r'   )r   betadeltarU   cond2s        r   r4   zAsymBiLogistic._check_args   sB    K	K	K
*	u}r   c                 L    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 r:   )r   powermaximum)wterm1term2r_   r`   r   s      r   
_integrantz+AsymBiLogistic.evaluate.<locals>._integrant   s_    X!dU!3!33qs;EY"(1Q3"7"77!;E:eU+++r   r   )quadr   )scipy.integraterj   )r   r   r_   r`   ri   rj   r8   s    ```   r   r
   zAsymBiLogistic.evaluate   sY    	, 	, 	, 	, 	, 	, 	,
 	)(((((j!Q''*r   Nr$   r%   r&   r@   rA   r4   r
   r'   r   r   r]   r]      sC          F  
    r   r]   c                   6    e Zd ZdZdZd Zd Zd
dZd Zd Z	d	S )HRzmodel of Huesler Reiss 1989

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

    restrictions:
     - lambda in (0,inf)
    r   c                     |dk    }|S )Nr   r'   )r   lamdaconds      r   r4   zHR._check_args   s    	r   c                     t          j        d|z
  |z            dz  |z  }ddlm} d|z
  |                    ||z             z  ||                    ||z
            z  z   }|S )Nr6         ?r   )normr   )r   logscipy.statsrt   _cdf)r   r   rp   termrt   r8   s         r   r
   zHR.evaluate   sw     vrAvl##c)E1$$$$$$q5DIIedl333dii---.r   r   r>   c                 R   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	        
                    |	          }
t          j        |	dz   dz            |z  }| |	z  }||z
  }t          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 d S )	Nr   r>   rG   zorder should be 1, 2, or (1,2)r6   rs   )r   rG   )r>   rG   )
isinstanceintr   integer
ValueErrorsqrtpiru   r   rt   cdfexp)r   r   rp   orderdnaggd1gd2tpfpfd1pfd2ptnfnfd1nfd2nr<   r"   s                      r   _derivsz
HR._derivs   s   %#rz!233 	CU

e !ABBBRU###FBFa<  3&*1q5AE?Q&'Qw1Q!a//0 UZ^^Bvr1ufqj!!B&urzUZ^^Bvr1ufqj!!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aZZIb[[8O [r   c                 0    |                      ||d          S r:   r   r   r   rp   s      r   r   zHR.deriv      ||Aua(((r   c                 0    |                      ||d          S )Nr>   r   r   s      r   r#   z	HR.deriv2   r   r   N)ry   )
r$   r%   r&   r@   rA   r4   r
   r   r   r#   r'   r   r   rn   rn      sv          F  
 
 
* * * *X) ) )) ) ) ) )r   rn   c                   "    e Zd ZdZdZd Zd ZdS )TEVz_t-EV model of Demarta and McNeil 2005

    restrictions:
     - rho in (-1,1)
     - x > 0
    r>   c                 2    |}|dk    }|dk    o|dk     }|o|S r,   r'   )r   rhodfxrU   ra   s         r   r4   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  }
||                    |	|dz             z  d|z
  |                    |
|dz             z  z   }|S )Nr   )r   r6   r   )rv   r   r   rd   r   rw   )r   r   r   r   r   stats_trg   rh   term0z1z2r8   s               r   r
   zTEV.evaluate7  s     	-,,,,, !RT(BqD))C/2a4(BqD))C/Q"'!c#g+"6"66U]U]W\\"ac***a!ew||B!7L7L-LLr   Nrl   r'   r   r   r   r   (  sC          F      r   r   )r@   numpyr   scipyr   statsmodels.tools.numdiffr   r   r   r)   transform_tawnrC   transform_joerR   transform_tawn2r]   transform_bilogisticrn   transform_hrr   transform_tevr'   r   r   <module>r      s              K K K K K K K K       :( ( ( ( ($ ( ( (V 1 1 1 1 1' 1 1 1h  !!    !   B )++    &   < &~'' J) J) J) J) J)	 J) J) J)Z rtt    
   @ r   