ó
áp7]c           @  s¿  d  Z  d d l m Z d d l Z d d l Z d d l m Z d d l m	 Z	 m
 Z
 d d l m Z m Z m Z m Z e d „  ƒ e	 j j _ d „  Z e e	 j j _ d	 „  Z e e	 j j _ d
 Z d e f d „  ƒ  YZ e d k r»e ƒ  Z e j ƒ  e j  ƒ  d Z! e! r»e" e j# d d d g ƒ ƒ e" e	 j$ j# d d d g d ƒ ƒ e" e j% ƒ e" e j& ƒ e" e j	 d d ƒ ƒ e" e	 j d ƒ j	 d d ƒ ƒ e" e	 j' j	 d d ƒ ƒ q»n  d S(   sÈ  


Created on Sun May 09 22:35:21 2010
Author: josef-pktd
License: BSD

todo:
change moment calculation, (currently uses default _ppf method - I think)
>>> lognormalg.moment(4)
Warning: The algorithm does not converge.  Roundoff error is detected
  in the extrapolation table.  It is assumed that the requested tolerance
  cannot be achieved, and that the returned result (if full_output = 1) is
  the best which can be obtained.
array(2981.0032380193438)
iÿÿÿÿ(   t   print_functionN(   t   assert_almost_equal(   t   statst   special(   t   squarenormalgt
   absnormalgt   negsquarenormalgt   squaretgc         C  s
   |  j  j S(   N(   t   distt   name(   t   self(    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   <lambda>   t    c         C  sl  t  j t  j t  j t  j t  j f \ } } } } } | | d ƒ } | | d ƒ }	 | | d k | | | d ƒ | ƒ }
 d | | | |	 d |	 | d d | d } | | d k | | ƒ } d | d |	 d | d t  j d | d |	 | |	 d ƒ } | | d k | | ƒ } d d | d	 d
 | | | d } | | d
 k | | ƒ } |
 | | | f S(   Ng      ð?i   i   g       @g      @g      @i   i   i   i   (   t   npt   arrayt   wheret   inft   sqrtt   nan(   R
   t   dfnt   dfdt   arrR   R   R   R   t   v2t   v1t   mut   mu2t   g1t   g2(    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   f_stats"   s    3&2C&c         C  s  t  j t  j t  j t  j t  j f \ } } } } } t  j } t  j } t j	 | | d ƒ ƒ }	 | d | ƒ | d | | ƒ | |	 }
 | | d |
 |
 } | | } | d | ƒ | d | ƒ d | | | ƒ d | d } | d | |	 d | | ƒ d	 | d | ƒ | | | d ƒ |	 | | |	 |	 d 7} | | | d
 :} | | d | d	 d | d |
 |
 d	 |
 d } | d | | d ƒ |
 | d | ƒ | d | | d	 | | d ƒ |	 8} | | d :} | d 8} |
 | | | f S(   Ni   g       @g      à¿i   g      ø¿i   g      ð?i   i   g      ø?g      @(
   R   R   R   R   R   R   t   expt   piR   t   erf(   R
   t   cR   R   R   R   R   R   R   t   facR   R   t   c2R   R   (    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   foldnorm_stats6   s     3		*
<E6Q
i   t   Test_Transf2c           B  s)   e  Z e d  „  ƒ Z d „  Z d „  Z RS(   c         C  sš   t  t j d ƒ f t t j f t t j d ƒ f t d ƒ t j d d ƒ f g |  _ d \ } } d d d g |  _	 d	 d d
 g |  _
 d d d g |  _ d  S(   Ni   gñhãˆµøä>i
   g        g      ð?gš™™™™™¹?g      à?gÍÌÌÌÌÌì?gffffffî?gš™™™™™ñ?gffffffî¿g      ð¿gš™™™™™ñ¿(   g        g      ð?(   R   R   t   chi2R   t   halfnormt   foldnormR   t   ft   dist_equivalentst   ppfqt   xxt   nxx(   t   clst   lt   s(    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   setup_classT   s    $c   	   	   C  sE  |  j  |  j } } x+|  j D] \ } } t | j | ƒ | j | ƒ d d | j ƒt | j | ƒ | j | ƒ d d | j | j ƒt | j | ƒ | j | ƒ d d | j | j ƒt | j | ƒ | j | ƒ d d | j | j ƒt | j	 | ƒ | j	 | ƒ d d | j | j ƒ| |  _
 | |  _ t | d ƒ r]| j j d | j Œ } n | j d ƒ } t | j d ƒ | t d d	 | j | j ƒt j } t j d
 ƒ z( | j d d ƒ } | j d d ƒ } Wd  | t _ Xt | d  | d  d d | j | j ƒt | d | d d d d d | j | j ƒq Wd  S(   Nt   err_msgt   cdfs   pdf s   sf s   ppq s   isf R   i   s   moment t   ignoret   momentst   mvski   s   stats t   decimal(   R+   R*   R)   R   R2   R	   t   pdft   sft   ppft   isft   d1t   d2t   hasattrR   t   momentt   argst   DECIMALt   warningst   filterst   simplefilterR   (	   R
   R+   R*   R;   R<   t   d2momt   orig_filtert   s1t   s2(    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   test_equivalentg   s<    ,		

c   	      C  s  |  j  |  j |  j } } } t t j d ƒ } } t | j | ƒ d | j | ƒ d d | j ƒt | j	 | ƒ | j	 | ƒ ƒ t | j
 | ƒ d | j
 | ƒ ƒ t | j | ƒ | j | ƒ d  d  d … ƒ t | j | ƒ | j | ƒ d  d  d … ƒ t | j d ƒ | j d ƒ ƒ g  t | j d d ƒ ƒ D] \ } } | d | d ^ q8} t | j d d ƒ | d d | j | j ƒd  S(	   Ni   R1   R2   iÿÿÿÿi   R4   R5   s   stats (   R+   R,   R*   R   R   R%   R   R2   R	   R7   R8   R9   R:   R>   t	   enumerate(	   R
   R+   R,   R*   R;   R<   t   it   vt	   ch2oddneg(    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   test_equivalent_negsq“   s    0#-- :(   t   __name__t
   __module__t   classmethodR0   RH   RM   (    (    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyR$   R   s   	,t   __main__i    gš™™™™™¹?g      à?gÍÌÌÌÌÌì?i   R4   R5   g»½×Ùß|Û=((   t   __doc__t
   __future__R    RA   t   numpyR   t   numpy.testingR   t   scipyR   R   t(   statsmodels.sandbox.distributions.extrasR   R   R   R   t   propertyt   distributionst	   rv_frozenR	   R   R(   t	   __class__t   _statsR#   R'   R@   t   objectR$   RN   t   ttRH   RM   t   debugt   printR9   R%   t   at   bR&   (    (    (    sR   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/test_transf.pyt   <module>   s4   "		T	

"