U
    ÃmœdÉ(  ã                   @   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dddddg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!d;d(d)„Z"ee!dd*d&ƒƒ ee!dd+d&ƒƒ ej#d,dd-d.�Z$e"e$d/d0d1�Z%ee%d0 d2d… ƒ ee%d d2d… ƒ d3d4„ Z&d5d6„ Z'e&d7e d0d&¡ ƒ\Z(Z)Z*ee(ƒ ee)ƒ ee*ƒ ee'ej+dd8�ƒ ee'ej+ej d*ddgd8�ƒ ej+j#d9d:�Z#e#e# ,¡  Z#ee# ,¡ e#e#d*k  ,¡ e#e#dk  ,¡ e#e#dk  ,¡ ƒ dS )<ze
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   úd/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/sandbox/distributions/genpareto.pyÚ	_argcheck   s    
zgenpareto2_gen._argcheckc                 C   s    t  d||  dd|  ¡}|S )Nr
   ç      ð¿r	   ©r   Úpower)r   Úxr   ZPxr   r   r   Ú_pdf   s    zgenpareto2_gen._pdfc                 C   s   dd|  t  | | ¡ S )Nr   r	   )r   Úlog1p©r   r   r   r   r   r   Ú_logpdf   s    zgenpareto2_gen._logpdfc                 C   s   dt  d||  d| ¡ S )Nr	   r
   r   r   r   r   r   Ú_cdf!   s    zgenpareto2_gen._cdfc                 C   s    d| t  d| |¡d  }|S )Nr   r
   r   )r   Úqr   Úvalsr   r   r   Ú_ppf$   s    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 d 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ÚnameÚlongnameZshapes)ç      à?r   r
   é   g{®Gáz„?gš™™™™™¹?r/   gÍÌÌÌÌÌì?g®Gáz®ï?ZpdfZcdfZsfZppfZisfZmvsk)Zmomentsc                 C   s   ||||   fS )z¯transform 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   ÚparamstopotR   s    r5   c                 C   s   ||||   fS )Nr   )r2   r3   Zscalepotr   r   r   Úparamsfrompot\   s    r6   c                 C   s   | st |dƒ d S )Nzdoes not hold)Úprint)ZcondÚmsgr   r   r   Úwarnif`   s    r9   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
   )r9   r1   r   r   r   Ú
meanexcesse   s    r:   éd   é
   Úempc           
      C   sØ   |dkr|d krÐt ‚qÐn¸|dkrÐt | ¡}|d d d…  ¡ t dt| ƒd ¡ |d d d…  }|d d d… }|rÐt |d | … |d | … ¡ |d k	rÐ|\}}	t |d | … |	|d | … |  d|  ¡ ||fS )NZestr=   r    r
   r	   )ÚNotImplementedErrorr   ÚsortÚcumsumr!   ÚlenÚpltÚplot)
ÚdataÚparamsZlidxZuidxÚmethodrC   Ú
datasortedr:   r3   r4   r   r   r   Úmeanexcess_plotp   s    
4 0rH   g      à¿éþÿÿÿç      è¿iè  )r4   Úsize)rJ   r0   r
   )rE   rC   iìÿÿÿc                 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!   rA   )rD   rG   r:   Zmeancontr   r   r   Úmeanexcess_emp“   s
    4&rM   c                    s8   t  |¡dkrˆ j|dd�S t  ‡ fdd„|D ƒ¡S d S )Nr   T©ÚlbZconditionalc                    s   g | ]}ˆ j |d d�‘qS )TrN   )Úexpect)Ú.0Zlbb©r   r   r   Ú
<listcomp>¡   s   ÿz#meanexcess_dist.<locals>.<listcomp>)r   ÚndimrP   Úarray)r   rO   ÚargsÚkwdsr   rR   r   Úmeanexcess_dist›   s
    ÿrX   r	   )rO   i † )rK   )Nr;   r<   r=   r   )-Ú__doc__Únumpyr   Zscipyr   Zscipy.specialr   Zscipy.stats.distributionsr   Zmatplotlib.pyplotZpyplotrB   r   r   r   r   r   Z
genpareto2r3   Úlocr4   r!   ÚrvZquantrF   r   r7   Úgetattrr+   Zentropyr5   r6   r9   r:   rH   ZrvsrD   ÚtmprM   rX   ZdsÚmeZmcZnormZmeanr   r   r   r   Ú<module>   sd   !þ

ü


6