
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
 i i d d	 6d
 6Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z i  Z g  Z g  Z g  Z g  Z d   Z d   Z e d k re   g  e e  D]k \ Z Z e j e d d e d d  d k r e j e d d  r e e d d e d d f ^ q Z g  e e  D]k \ Z Z e j e d d e d d  d k rse j e d d  rse e d d e d d f ^ qsZ  g  e e  D]k \ Z Z e j e d d e d d  d k re j e d d  re e d d e d d f ^ qZ! g  e e  D]k \ Z Z e j e d d e d d  d k roe j e d d  roe e d d e d d f ^ qoZ" d d l# m$ Z$ e% e  d k r$d GHe$ e d d d d g GHn  d  GHe$ e  d d d d g GHd! GHe$ e! d d d d g GHd" GHe$ e" d d d d g GHn  d S(#   s   script to test expect and moments in distributions.stats method

not written as a test, prints results, renamed to prevent test runner from running it


i(   t	   iteritemsN(   t   stats(   t	   expect_v2i   (   t   distconti  t   ubt   ncfc         C   sR   |  \ } } } } t  j | | d  } t  j | | d  d } | | | | f S(   s>   convert central moments to mean, variance, skew, kurtosis
    g      ?g       @g      @(   t   npt   divide(   t   argst   mct   mc2t   mc3t   mc4t   skewt   kurt(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mc2mvsk   s    c   	      C   s   |  \ } } } } | } | | | } | d | | | d } | d | | d | | | | d } t  | | | | f  S(   s>   convert central moments to mean, variance, skew, kurtosis
    i   i   i   (   R   (	   R   t   mnct   mnc2t   mnc3t   mnc4R	   R
   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mnc2mvsk   s    *c         C   s   d S(   Ng      ?(    (   t   x(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mom_nc0'   s    c         C   s   |  S(   N(    (   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mom_nc1*   s    c         C   s   |  |  S(   N(    (   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mom_nc2-   s    c         C   s   |  |  |  S(   N(    (   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mom_nc30   s    c         C   s   t  j |  d  S(   Ni   (   R   t   power(   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   mom_nc43   s    c       	      s  x{t  D]r\ }  } t t |       j | t d d    \ } } } } t j | | | | g  } t j |  } | j   d k  r t j	 |   n  |  GH  j
 }   f d   } t j |  i   }	 | t d | |	 }
 | d | |	  } | t d | |	 } | t d | |	 } | t d | |	 } | d | d d d d	 |	  } y( t | | | | f  \ } } } } WnY d
 | | | | | f GHt j g d \ } } } } | j d k rt j	 |   qn Xt j | | | | g  } | | | | } | | d d	 | f GHt j |  d k rTt j t j |   d k rTt j	 |   n t j	 |   |
 | | | | g t |  <q Wd  S(   Nt   momentst   mvski   c             s   t    |  |  S(   N(   R   (   R   t   kwds(   t   distfn(    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   <lambda>Q   t    R   t   loci   t   scalei   t	   exceptioni    gMbP?(   R   t   getattrR   t   dictR   t   arrayt   isfinitet   sumt   distnonfinitet   appendt   expectt   specialcasest   getR   R   R   R   R   t   nant   sizet   distext   maxt   abst   distlowt   distokt   res(   t   distnamet   distargst   mt   vt   st   kt   stt   maskR,   t   special_kwdst   mnc0t   mnc1R   R   R   t   mnc1_lct   met   vet   set   ket   emt   diff(    (   R   sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   check_cont_basic<   s>    '	(3c          C   s"  d d l  m }  d } |  t j j d d d	 d
 | d d t j d g  } t j d d g  } t j d d g  } t j d d d g  } d } | j   } | | t j d d g  j   } | | t j d d g  j   }	 t j d d d g  }
 } t | | |	 |
 f  } d S(   s   test for incorrect kurtosis of nct

    D. Hogben, R. S. Pinkham, M. B. Wilk: The Moments of the Non-Central
    t-DistributionAuthor(s): Biometrika, Vol. 48, No. 3/4 (Dec., 1961),
    pp. 465-468
    i(   t   assert_almost_equalgV`V?gso5?g*s?ga?i
   i   R   R   t   decimali   g8WV?g      ?gEd~?gl%?gu*'ȥ?gmn?g      @i   i    i   N(   gV`V?gso5?g*s?ga?(	   t   numpy.testingRJ   R   t   nctR   R'   t   itemR)   R   (   RJ   t	   mvsk_10_1t   c1t   c2t   c3t   c4t   nct   mc1R
   R   R   t   mvsk_nc(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   nct_kurt_bugq   s    (##t   __main__i    i   gư>g{Gz?i   (   t   SimpleTables   
Mean difference at least 1e-6t   headersR7   t	   diststatsR,   s"   
Variance difference at least 1e-2s   
Skew difference at least 1e-2s"   
Kurtosis difference at least 1e-2(&   t   __doc__t   statsmodels.compat.pythonR    t   numpyR   t   scipyR   t)   statsmodels.sandbox.distributions.sppatchR   t
   distparamsR   R-   R   R   R   R   R   R   R   R6   R1   R4   R5   R*   RI   RW   t   __name__R<   R:   R3   R(   t   mean_t   var_R   R   t   statsmodels.iolibRY   t   len(    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/tests/check_moments.pyt   <module>   sP   								5	eeee