o
    0Gf(                     @   s  d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z ddlmZmZ ddlmZ G dd	 d	eZed
ddddZd\ZZZedZg dZdefdefdefdefdeffD ]\ZZeeeeeeee eeejeee ee q[eejeeedd eejje eedd eeeee eeje ee dd Zdd Zdd Z dd  Z!d8d$d%Z"ee!dd&d" ee!dd'd" ej#d(dd)d*Z$e"e$d+d,d-Z%ee%d, d.d  ee%d d.d  d/d0 Z&d1d2 Z'e&d3ed,d" \Z(Z)Z*ee( ee) ee* ee'ej+d4d5 ee'ej+ej d&dd4gd5 ej+j#d6d7Z#e#e#,  Z#ee#, e#e#d&k , e#e#dk , e#e#d4k ,  dS )9ze
Created on Thu Aug 12 14:59:03 2010

Warning: not tried out or tested yet, Done

Author: josef-pktd
    N)stats)comb)rv_continuous)whereinf)absc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )genpareto2_genc                 C   s4   t |}t|dkdt| t| _t|dkddS )Nr         ?   )npZasarrayr   np_absr   bselfc r   Klib/python3.10/site-packages/statsmodels/sandbox/distributions/genpareto.py	_argcheck   s   
zgenpareto2_gen._argcheckc                 C   s    t d||  dd|  }|S )Nr
         r	   r   Zpower)r   xr   ZPxr   r   r   _pdf      zgenpareto2_gen._pdfc                 C   s   dd|  t | |  S )Nr   r	   )r   Zlog1pr   r   r   r   r   r   _logpdf      zgenpareto2_gen._logpdfc                 C   s   dt d||  d|  S )Nr	   r
   r   r   r   r   r   _cdf    r   zgenpareto2_gen._cdfc                 C   s    d| t d| |d  }|S )Nr   r
   r   )r   qr   Zvalsr   r   r   _ppf#   r   zgenpareto2_gen._ppfc                 C   sX   t d|d }d| | t jt||d|  d||   dd }t|| dk|tS )Nr   r
   r	   )Zaxis)r   arangesumr   r   r   )r   nr   kvalr   r   r   _munp'   s   4zgenpareto2_gen._munpc                 C   s&   |dk rd| S d| | _ t| |S )Nr   r
   r	   )r   r   _entropyr   r   r   r   r&   ,   s   
zgenpareto2_gen._entropyN)
__name__
__module____qualname__r   r   r   r   r   r%   r&   r   r   r   r   r      s    r   g        	genparetozA generalized Paretor   )anameZlongnameZshapes)      ?r   r
      )g{Gz?g?r-   g?gGz?ZpdfZcdfZsfZppfZisfZmvsk)Zmomentsc                 C   s   ||||   fS )ztransform shape scale for peak over threshold

    y = x-u|x>u ~ GPD(k, sigma-k*u) if x ~ GPD(k, sigma)
    notation of de Zea Bermudez, Kotz
    k, sigma is shape, scale
    r   threshshapescaler   r   r   paramstopotQ   s   r3   c                 C   s   ||||   fS )Nr   )r0   r1   Zscalepotr   r   r   paramsfrompot[   s   r4   c                 C   s   | s	t |d d S d S )Nzdoes not hold)print)Zcondmsgr   r   r   warnif_   s   r7   c                 C   sF   t |dkd t | dkd t |||   dkd |||   d|  S )zemean excess function of genpareto

    assert are inequality conditions in de Zea Bermudez, Kotz
    r   z
shape > -1r   zthresh >= 0z(scale - shape*thresh) > 0r
   )r7   r/   r   r   r   
meanexcessd   s   r8   d   
   empc           
      C   s   |dkr|d u r
t 	 ||fS |dkrkt| }|d d d  tdt| d  |d d d  }|d d d }|rkt|d |  |d |   |d urk|\}}	t|d |  |	|d |  |  d|   ||fS )NZestr;   r   r
   r	   )NotImplementedErrorr   sortcumsumr    lenpltplot)
dataparamsZlidxZuidxmethodrA   
datasortedr8   r1   r2   r   r   r   meanexcess_ploto   s   
4 0rF   g            i  )r2   size)rH   r.   r
   )rC   rA   ic                 C   s   t | t}|d d d  t dt| d  |d d d  }|d d d  t dt| d  }|d d d }|||d d d fS )Nr   r
   )r   r=   Zastypefloatr>   r    r?   )rB   rE   r8   Zmeancontr   r   r   meanexcess_emp   s
   4&rK   c                    s4   t |dkr j|ddS t  fdd|D S )Nr   TlbZconditionalc                    s   g | ]	} j |d dqS )TrL   )expect).0Zlbbr   r   r   
<listcomp>   s    z#meanexcess_dist.<locals>.<listcomp>)r   ndimrN   Zarray)r   rM   argskwdsr   rP   r   meanexcess_dist   s
   rU   r	   r-   )rM   i )rI   )Nr9   r:   r;   r   )-__doc__Znumpyr   Zscipyr   Zscipy.specialr   Zscipy.stats.distributionsr   Zmatplotlib.pyplotZpyplotr@   r   r   r   r   r   Z
genpareto2r1   locr2   r    ZrvZquantrD   r   r5   getattrr*   Zentropyr3   r4   r7   r8   rF   ZrvsrB   tmprK   rU   ZdsmeZmcZnormZmeanr   r   r   r   <module>   sf    !




6