ó
áp7]c           @   sÜ   d  Z  d d l Z d d l m Z d d l m Z d d l m Z m	 Z	 m
 Z
 m Z d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s>   

Created on Fri Jun 28 14:19:26 2013

Author: Josef Perktold
iÿÿÿÿN(   t   stats(   t   GenericLikelihoodModel(   t   assert_array_lesst   assert_almost_equalt   assert_allcloset   assert_t   MyParetoc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sm   Maximum Likelihood Estimation pareto distribution

    first version: iid case, with constant parameters
    c         C   s?   t  t |  ƒ j ƒ  t j d |  j j ƒ  d d g ƒ |  _ d  S(   Ng      ø?g      ð?(   t   superR   t
   initializet   npt   arrayt   endogt   mint   start_params(   t   self(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR      s    c         C   s   | | | d S(   Ni   (    (   R   t   xt   b(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   pdf   s    c         C   s   |  j  | ƒ j d ƒ S(   Ni    (   t   nloglikeobst   sum(   R   t   params(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   loglike!   s    c         C   s¢   |  j  d  k	 r! |  j | ƒ } n  | d } | d } | d } |  j } | | | } t j | ƒ | d t j | ƒ } | t j | ƒ 8} d | | d k  <| S(   Ni    i   i   g      ð?iðØÿÿ(   t   fixed_paramst   Nonet   expandparamsR   R	   t   log(   R   R   R   t   loct   scaleR   R   t   logpdf(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR   *   s    


	$(   t   __name__t
   __module__t   __doc__R   R   R   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR      s
   				t   CheckGenericMixinc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sC   |  j  j ƒ  } |  j  j r! d n d } | t | ƒ k s? t ‚ d  S(   Ns   P>|t|s   P>|z|(   t   res1t   summaryt   use_tt   strt   AssertionError(   R   t   summt	   check_str(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   test_summaryA   s    c         C   sO   |  j  j } t |  j  _ |  j  j ƒ  } d t | ƒ k s? t ‚ | |  j  _ d  S(   Ns   P>|t|(   R!   R#   t   TrueR"   R$   R%   (   R   t   orig_valR&   (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   test_use_t_summaryF   s
    c         C   s)   |  j  j t j t |  j  j ƒ ƒ ƒ d  S(   N(   R!   t   t_testR	   t   eyet   lenR   (   R   (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt
   test_ttestM   s    c         C   s  |  j  j } t j d d d g ƒ } |  j  j j d  k	 rO | |  j  j j } n  t | | d d ƒt | t j t	 | ƒ ƒ d d ƒt |  j  j
 t j t	 | ƒ ƒ d d ƒ|  j st |  j  j
 |  j  j d d d d	 ƒt |  j  j |  j  j d d d d ƒn  d  S(
   Ni   i    t   atolg      ø?i   g      à?t   rtolgš™™™™™©?g333333Ã?(   R!   R   R	   R
   t   modelt   fixed_paramsmaskR   R   t   zerosR.   t   bset   skip_bsejact   bsejact   bsejhj(   R   R   t   params_true(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   test_paramsP   s    "(	(   R   R   R(   R+   R/   R:   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR    >   s   			t   TestMyPareto1c           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   sÄ   d d d g } d } t  j j d ƒ t j j | t d | ƒ Ž  } t | ƒ } d  | _	 d  | _
 d | _ | j j d | j | _ d d d	 g | j _ | |  _ | j d
 d  ƒ |  _ t |  _ d  S(   Ni   i    id   iÒ  t   sizei   t   shapeR   R   t   disp(   R	   t   randomt   seedR    t   paretot   rvst   dictR   R   R   R3   t   df_modelR   R=   t   df_residt   datat   xnamest   modt   fitR!   R)   R6   (   t   clsR   t   nobsRB   t   mod_par(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   setup_classj   s    				c         C   sT   |  j  j } |  j  j j ƒ  } | d | d } t | | ƒ t | | d d ƒd  S(   Ni   i   t   decimal(   R!   R   R   R   R   R   (   R   R   t   x_mint   p_min(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   test_minsupport   s
    (   R   R   t   classmethodRM   RQ   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR;   h   s   t   TestMyParetoRestrictionc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sý   d d d g } d } t  j j d ƒ t j j | t d | ƒ Ž  } t | ƒ } t  j t  j	 d ƒ } d | d <| | _
 t  j | ƒ | _ | j | j | _ d | _ | j j d | j | _ d	 d
 g | j _ | |  _ | j d d  ƒ |  _ t |  _ d  S(   Ni   i    i2   iÒ  R<   i   gš™™™™™¹¿i   R=   R   R>   (   R	   R?   R@   R    RA   RB   RC   R   t   nant   onesR   t   isnanR3   R   RD   R   R=   RE   RF   RG   RH   RI   R   R!   t   FalseR6   (   RJ   R   RK   RB   RL   t   fixdf(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRM   Š   s     
			(   R   R   RR   RM   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRS   ‡   s   t   TwoPeakLLHNoExogc           B   sk   e  Z d  Z d d g Z d d d g Z d d g Z d g Z d d d d	 „ Z d
 „  Z	 d „  Z
 d „  Z RS(   s*   Fit height of signal peak over background.i
   iè  R   t   signalt
   backgroundt   n_signalt   n_backgroundt   alphac         O   s;   | |  _  | |  _ t t |  ƒ j d | d | | | Ž d  S(   NR   t   exog(   RZ   R[   R   RY   t   __init__(   R   R   R_   RZ   R[   t   argst   kwargs(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR`   ©   s    		c         C   s   |  j  | ƒ S(   N(   t   nloglike(   R   R   (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyR   ²   s    c         C   s   |  j  } |  j | | ƒ S(   N(   R   t   nlnlike(   R   R   R   (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRc   µ   s    	c   
      C   sš   | d } | d } | d k  s, | d k  r3 t  j S| | } | } |  j j | ƒ } |  j j | ƒ } t  j t  j | | | | ƒ ƒ }	 |	 | 8}	 |	 S(   Ni    i   (   R	   t   infRZ   R   R[   R   R   (
   R   R   R   t   n_sigt   n_bkgt   n_totR^   t   sigt   bkgt   sumlogl(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRd   ¹   s    


$
N(   R   R   R   R   t	   cloneattrt
   exog_namest   endog_namesR   R`   R   Rc   Rd   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRY   ¢   s   				t   TestTwoPeakLLHNoExogc           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   sÀ   t  j j d ƒ t j d d d d ƒ } t j d d d d ƒ } d } d } | | g } t  j | j d	 | ƒ | j d	 | ƒ g ƒ d  d  … t  j f } | |  _	 | |  _
 | |  _ | |  _ d  S(
   Ni*   R   i    R   i   id   i2   iÈ   R<   (   R	   R?   R@   R    t
   halfcauchyt   uniformt   concatenateRB   t   newaxist   XR   t   pdf_at   pdf_b(   RJ   Ru   Rv   t   n_at   n_bR   Rt   (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRM   É   s    			c         C   s¯   t  j j d ƒ t |  j d |  j d |  j ƒ} | j ƒ  } t | j	 |  j	 d d ƒt
 t  j | j ƒ ƒ | j d d ƒ } t | d j d	 ƒ |  j	 d d ƒ| j ƒ  d  S(
   Ni*   RZ   R[   R1   gš™™™™™¹?t   nrepi2   i   i    (   R	   R?   R@   RY   Rt   Ru   Rv   RI   R   R   R   RV   RE   t	   bootstrapt   meanR"   (   R   t
   llh_noexogt   rest   res_bs(    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   test_fitÛ   s    	#(   R   R   RR   RM   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyRo   Ç   s   (   R   t   numpyR	   t   scipyR    t   statsmodels.base.modelR   t   numpy.testingR   R   R   R   R   t   objectR    R;   RS   RY   Ro   (    (    (    sL   lib/python2.7/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyt   <module>   s   "-*%