U
    Kvf(                     @   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 qe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   O/tmp/pip-unpacked-wheel-2v6byqio/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{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   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rt qn|dkrt| }|d d d  tdt| d  |d d d  }|d d d }|rt|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   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!   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__Z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