ó
áp7]c           @  sĂ  d  Z  d d l m Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 d d l j Z d d l m Z m Z d d l m Z d	 e
 f d
     YZ e d d d d d d d d d d  Z d: \ Z Z Z e j d  Z d d d d d g Z x d e f d e f d e f d  e f d! e f g D]T \ Z Z e e e e  e e e e   e e e j e  e e e e   q+We e j e e e d" d#  e e j j e e e d" d#  e e j e e e   e e j j e e e   d$   Z  d%   Z! d&   Z" d'   Z# d d( d) d* d d+  Z% e e# d d, d)   e e# d d- d)   e j& d. d/ d d0 d1 Z' e% e' d2 d; d3 d Z( e e( d d4  e e( d d4  d5   Z) d6   Z* e) d7 e j d d)   \ Z+ Z, Z- e e+  e e,  e e-  e e* e j. d8 d  e e* e j. d8 e j d, d d g  e j. j& d0 d9  Z& e& e& j/   Z& e e& j/   e& e& d, k j/   e& e& d k j/   e& e& d k j/    d S(<   se   
Created on Thu Aug 12 14:59:03 2010

Warning: not tried out or tested yet, Done

Author: josef-pktd
i˙˙˙˙(   t   print_functionN(   t   stats(   t   comb(   t   rv_continuous(   t   wheret   inf(   t   abst   genpareto2_genc           B  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C  sJ   t  j |  } t | d k d t |  t  |  _ t | d k d d  S(   Ni    g      đ?i   (   t   npt   asarrayR   t   np_absR   t   b(   t   selft   c(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt	   _argcheck   s    %c         C  s&   t  j d | | d d |  } | S(   Ni   g      đżg      đ?(   R   t   power(   R   t   xR   t   Px(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   _pdf   s    "c         C  s   d d | t  j | |  S(   Ng      đżg      đ?(   R   t   log1p(   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   _logpdf   s    c         C  s    d t  j d | | d |  S(   Ng      đ?i   (   R   R   (   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   _cdf   s    c         C  s&   d | t  j d | |  d } | S(   Ng      đżi   (   R   R   (   R   t   qR   t   vals(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   _ppf    s    "c         C  sn   t  j d | d  } d | | t  j t | |  d | d | | d d } t | | d k | t  S(   Ni    i   g      đ?i˙˙˙˙t   axis(   R   t   aranget   sumR   R   R   (   R   t   nR   t   kt   val(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   _munp#   s    >c         C  s5   | d k  r d | Sd | |  _  t j |  |  Sd  S(   Ni    i   g      đ?(   R   R   t   _entropy(   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyR    '   s    (	   t   __name__t
   __module__R   R   R   R   R   R   R    (    (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyR      s   						t   ag        t   namet	   genparetot   longnames   A generalized Paretot   shapesR   t   extradocs   

Generalized Pareto distribution

genpareto2.pdf(x,c) = (1+c*x)**(-1-1/c)
for c != 0, and for x >= 0 for all c, and x < 1/abs(c) for c < 0.
g      ŕ?i    i   i   g{ŽGáz?gš?gÍĚĚĚĚĚě?gŽGázŽď?t   pdft   cdft   sft   ppft   isft   momentst   mvskc         C  s   | | | |  f S(   sŻ   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
    (    (   t   thresht   shapet   scale(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   paramstopotI   s    c         C  s   | | | |  f S(   N(    (   R0   R1   t   scalepot(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   paramsfrompotR   s    c         C  s   |  s t  | d  n  d  S(   Ns   does not hold(   t   print(   t   condt   msg(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   warnifU   s    c         C  sU   t  | d k d  t  |  d k d  t  | | |  d k d  | | |  d | S(   se   mean excess function of genpareto

    assert are inequality conditions in de Zea Bermudez, Kotz
    i˙˙˙˙s
   shape > -1i    s   thresh >= 0s   (scale - shape*thresh) > 0i   (   R9   (   R0   R1   R2   (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt
   meanexcessY   s    id   i
   t   empc   
      C  s  | d k r$ | d  k rt  qnÝ | d k rt j |   } | d  d  d  j   t j d t |   d  | d  d  d  } | d  d  d  } | rt j | |  | |   | d  k	 rţ | \ } }	 t j | |  |	 | |  | d |  qţ qn  | | f S(   Nt   estR;   i˙˙˙˙i   g      đ?(	   t   Nonet   NotImplementedErrorR   t   sortt   cumsumR   t   lent   pltt   plot(
   t   datat   paramst   lidxt   uidxt   methodRC   t
   datasortedR:   R1   R2   (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   meanexcess_plotd   s    	D3g      ŕżiţ˙˙˙g      čżR2   t   sizeič  RE   RC   iě˙˙˙c         C  sź   t  j |   j t  } | d  d  d  j   t  j d t |   d  | d  d  d  } | d  d  d  j   t  j d t |   d  } | d  d  d  } | | | d  d  d  f S(   Ni˙˙˙˙i   (   R   R?   t   astypet   floatR@   R   RA   (   RD   RI   R:   t   meancont(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   meanexcess_emp   s
    D3c         O  sa   t  j |  d k r+ |  j d | d t  St  j g  | D] } |  j d | d t  ^ q8  Sd  S(   Ni    t   lbt   conditional(   R   t   ndimt   expectt   Truet   array(   R   RP   t   argst   kwdst   lbb(    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   meanexcess_dist   s    	g      đ?RP   i  (   g      ŕ?i    i   (   g      čżi   (0   t   __doc__t
   __future__R    t   numpyR   t   scipyR   t   scipy.specialR   t   scipy.stats.distributionsR   t   matplotlib.pyplott   pyplotRB   R   R   R   R
   R   t
   genpareto2R1   t   locR2   R   t   rvt   quantRH   R   R6   t   getattrR%   t   entropyR3   R5   R9   R:   R=   RJ   t   rvsRD   t   tmpRO   RY   t   dst   met   mct   normt   mean(    (    (    sJ   lib/python2.7/site-packages/statsmodels/sandbox/distributions/genpareto.pyt   <module>   sd   				"*#								%


)IM