ó
î&]\c           @` s®  d  d l  m Z m Z m Z d  d l j Z d  d l Z d  d l	 m
 Z
 d  d l Z d  d l m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z d d d	 d
 g d d d d g f Z e e j d e ƒ d g g 7Z d „  Z  e j! j" d e  ƒ  ƒ d „  ƒ Z# e j! j" d e ƒ d „  ƒ Z$ e j! j" d e ƒ d „  ƒ Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d S(   i    (   t   divisiont   print_functiont   absolute_importN(   t   xrange(   t   statsi   (   t   check_normalizationt   check_momentt   check_mean_expectt   check_var_expectt   check_skew_expectt   check_kurt_expectt   check_entropyt   check_private_entropyt   check_edge_supportt   check_named_argst   check_random_state_propertyt   check_picklingt   check_rvs_broadcast(   t   distdiscretei   i   i   gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?t   valuesc          c` sE   t  ƒ  }  x5 t D]- \ } } | | | |  k f V|  j | ƒ q Wd  S(   N(   t   setR   t   add(   t   seent   distnamet   arg(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyt   cases_test_discrete_basic   s    	s   distname,arg,first_casec         C` sÒ  y t  t |  ƒ } Wn t k
 r2 |  } d }  n Xt j j d ƒ | j d d | Œ } t j | ƒ } | j | Œ  \ } } t | | | |  d ƒ t	 | | |  ƒ t
 | | | |  d ƒ t | | ƒ d } t | | | | |  d ƒ | rÎd }	 | j | j | j | j | j g }
 i d
 d 6d d 6d	 d 6} | j |  d ƒ } t | | | |	 |
 ƒ |  d k rst | ƒ n  t | | ƒ t | | ƒ t | | |  ƒ | j j t j j k rÎt | | t j ƒ qÎn  d  S(   Ns   sample distributioniP• t   sizeiÐ  s    cdf_ppfs    othg{®Gáz„?s
    chisquarei    i   t   randinti   t	   hypergeomt	   bernoullii   (   i    (   t   getattrR   t	   TypeErrort   npt   randomt   seedt   rvst   uniquet   check_cdf_ppft   check_pmf_cdft	   check_othR   t   check_discrete_chisquaret   pmft   logpmft   cdft   logcdft   logsft   getR   t   check_scale_docstringR   R   R   t	   __class__t   _entropyt   rv_discreteR   (   R   R   t
   first_caset   distfnR#   t   suppt   mt   vt   alphat   locscale_defaultst   methst   spec_kt   k(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyt   test_discrete_basic   s<    
s   distname,argc         C` s  y t  t |  ƒ } Wn t k
 r2 |  } d }  n X| j d d | Œ \ } } } } t | | |  ƒ t | | | | |  ƒ t | | | |  ƒ t | | | | |  ƒ t | | | | | |  ƒ |  d k rä t | | | | | |  ƒ n  t	 | | | d ƒ t	 | | | | | d ƒ d  S(	   Ns   sample distributiont   momentst   mvskt   zipft	   yulesimoni   i   (   R@   RA   (
   R   R   R   R   R   R   R   R	   R
   t   check_moment_frozen(   R   R   R4   R6   R7   t   sR<   (    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyt   test_momentsD   s    
!s   dist,shape_argsc         C` s-  |  d	 k } y t  t |  ƒ } Wn- t k
 rN |  } d |  j |  j f }  n Xt j d ƒ } | j } g  } g  } xw t | ƒ D]i } | d f d
 | d }	 | | }
 | j	 |
 t j
 |	 d t j |
 ƒ j ƒƒ | j d |	 d ƒ q€ W| j	 | ƒ | j	 | j ƒ t | |  | | | t j g ƒ d  S(   Nt   skellamRA   s   rv_discrete(values=(%r, %r))i   i   i   t   dtypei    (   RE   RA   (   i   (   R   R   R   t   xkt   pkR    t   zerost   numargst   ranget   appendt   onest   arrayRF   t   insertR   R   t   int_(   t   distt
   shape_argst
   shape_onlyt   distfunct   loct   nargst   allargst   bshapeR<   t   shpt	   param_val(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyt   test_rvs_broadcast[   s$    	
,c         C` sÅ   t  j |  j |  j | | Œ | Œ | | d ƒ t  j |  j |  j | | Œ d | Œ | | d ƒ t |  d ƒ sÁ | | |  j k  } t  j |  j |  j | | Œ d | Œ | |  j | d ƒ n  d  S(   Ns
   -roundtripg:Œ0âŽyE>RG   s    ppf-cdf-next(   t   nptt   assert_array_equalt   ppfR+   t   hasattrt   bt   inc(   R4   R   R5   t   msgt   supp1(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyR%      s    !%%c   	      C` sÑ   t  |  d ƒ r |  j } n5 t |  j d | Œ d ƒ } t t | | d ƒ ƒ } |  j | | Œ } |  j | | Œ j ƒ  } d \ } } | d k r¡ d \ } } n  t	 j
 | | d | | d d	 | d
 | ƒd  S(   NRG   g{®Gáz„?i   i
   g»½×Ùß|Û=RE   gñhãˆµøä>i    t   atolt   rtol(   g»½×Ùß|Û=g»½×Ùß|Û=(   gñhãˆµøä>gñhãˆµøä>(   R_   RG   t   intR^   t   listRK   R+   R)   t   cumsumR\   t   assert_allclose(	   R4   R   R   t   indext   startindt   cdfst   pmfs_cumRd   Re   (    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyR&      s    c         C` s/   t  j |  | Œ  j | ƒ | d d d d ƒd  S(   NRd   g»½×Ùß|Û=Re   (   R\   Ri   t   moment(   R4   R   R6   R<   (    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyRB      s    c         C` sá   t  j |  j | | Œ d |  j | | Œ d d d d ƒt j d d d ƒ } t  j |  j | | Œ |  j d | | Œ d d d d ƒ|  j d | Œ } t  j |  j | d	 | Œ d k ƒ t  j |  j | d	 | Œ d k ƒ d  S(
   Ng      ð?Rd   g»½×Ùß|Û=Re   g{®Gáz„?g®Gáz®ï?i   g      à?i   (	   R\   Ri   t   sfR+   R    t   linspacet   isfR^   t   assert_(   R4   R   R5   Rb   t   qt	   median_sf(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyR'   ¢   s    ++#c         C` s¬  d } t  t |  j d ƒ ƒ } t | t  t |  j d ƒ ƒ d ƒ } d } | g }	 g  }
 xo | D]g } |  j | | Œ } | | | d k r_ |	 j | ƒ |
 j | | ƒ | } | d | k rÆ PqÆ q_ q_ W|	 d |  j k  r|	 j |  j ƒ |
 j d | ƒ n  t j	 |	 ƒ }	 t j	 |
 ƒ }
 |	 d } |  j | d <t j
 | | ƒ \ } } t j t j	 | ƒ t | ƒ |
 ƒ \ } } t j | | k d	 | t | ƒ t | ƒ f ƒ d
 S(   ss  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    gš™™™™™©?iüÿÿiè  i   i    g›+¡†›„=iÿÿÿÿg:Œ0âŽyE>s2   chisquare - test for %s at arg = %s with pval = %sN(   Rf   t   maxt   aR   t   minR`   R+   RL   R    RN   t	   histogramR   t	   chisquaret   lenR\   Rr   t   str(   R4   R   R#   R8   Rb   t   wsuppt   lot   distsupportt   lastt   distsuppt   distmasst   iit   currentt   histsuppt   freqt   hsuppt   chist   pval(    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyR(   °   s4    %	
+c         C` s,   |  j  d  k	 r( t j d |  j  k ƒ n  d  S(   Nt   scale(   t   __doc__t   NoneR\   Rr   (   R4   (    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyR/   æ   s    (    (,   t
   __future__R    R   R   t   numpy.testingt   testingR\   t   numpyR    t   scipy._lib.sixR   t   pytestt   scipyR   t   common_testsR   R   R   R   R	   R
   R   R   R   R   R   R   R   t   scipy.stats._distr_paramsR   t   valsR2   R   t   markt   parametrizeR=   RD   R[   R%   R&   RB   R'   R(   R/   (    (    (    sD   lib/python2.7/site-packages/scipy/stats/tests/test_discrete_basic.pyt   <module>   s&   X$	!($					6