ó
î&]\c           @` sz  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l m	 Z	 m
 Z
 m Z m Z m Z d  d l Z d  d l m Z d „  Z d „  Z e j j d „  ƒ Z e j j d	 „  ƒ Z d
 „  Z d „  Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d S(   i    (   t   divisiont   print_functiont   absolute_import(   t   statsN(   t   assert_almost_equalt   assert_t   assert_array_almost_equalt   assert_array_almost_equal_nulpt   assert_allclose(   t   raisesc          C` sÃ  t  j j d ƒ d }  t  j j |  ƒ } | j ƒ  } | j d d ƒ } t j | ƒ } t  j d d d ƒ } | j	 | ƒ } t j
 j | d | d	 | ƒ} | d | d
 } t t  j | | d ƒ | d k  ƒ | j | t  j ƒ }	 | j t  j | ƒ }
 t |	 d d d ƒt |
 d d d ƒt | j | t  j ƒ |	 d d ƒt | j t  j | ƒ |
 d d ƒt | j | ƒ | d j ƒ  | d d ƒt | j | | d ƒ | | j ƒ  | d d ƒd  S(   NiîÀ… iô  t   ddofi   iùÿÿÿi   iõ  t   loct   scalei    i   g{®Gáz„?g      à?t   decimali   (   t   npt   randomt   seedt   randnt   meant   stdR   t   gaussian_kdet   linspacet   evaluatet   normt   pdfR   t   sumt   integrate_box_1dt   infR   t   integrate_boxt   integrate_kdet   integrate_gaussian(   t   n_basesamplet   xnt   xnmeant   xnstdt   gkdet   xst   kdepdft   normpdft	   intervallt   prob1t   prob2(    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_1d   s*    %"#c          C` sø  t  j j d ƒ d }  t  j j |  ƒ } t  j j |  ƒ } t  j | d | ƒ} t  j t  j | | d d | ƒƒ } t j | d | ƒ} t  j	 d d d ƒ } | j
 | ƒ } t j j | d | d	 | ƒ} | d
 | d }	 t t  j | | d ƒ |	 d k  ƒ | j | t  j ƒ }
 | j t  j | ƒ } t |
 d d d
 ƒt | d d d
 ƒt | j | t  j ƒ |
 d d ƒt | j t  j | ƒ | d d ƒt | j | ƒ | d j ƒ  |	 d d ƒt | j | | d ƒ | | j ƒ  |	 d d ƒd  S(   NiîÀ… iô  t   weightsi   iùÿÿÿi   iõ  R   R   i   i    g{®Gáz„?g      à?R   i   (   R   R   R   R   t   randt   averaget   sqrtR   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R    t   wnR!   R"   R#   R$   R%   R&   R'   R(   R)   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_1d_weighted*   s,    &%"#c          C` s3  t  j j d ƒ d }  t  j d d g ƒ } t  j d d g d d g g ƒ } t  j j | | d |  ƒj } t j | ƒ } t  j d d	 d
 … d d	 d
 … f \ } } t  j	 | j
 ƒ  | j
 ƒ  g ƒ } | j | ƒ } | j d d ƒ } t j j t  j | | g ƒ d | d | ƒ}	 | j
 ƒ  d | j
 ƒ  d }
 t t  j | |	 d ƒ |
 d d k  ƒ d } d } | j | | d g | | g ƒ } | j | | g | | d g ƒ } t | d d d ƒt | d d d ƒt | j | ƒ | d j ƒ  |
 d d d ƒt | j | | ƒ | |	 j ƒ  |
 d d d ƒd  S(   NiîÀ… iô  g      ð?g      @g       @g      @t   sizeiùÿÿÿi   y             @@R   t   covi   i    i   g{®Gáz„?g}Ã”%­I²Ôg}Ã”%­I²Tg      à?R   (   R   R   R   t   arrayt   multivariate_normalt   TR   R   t   mgridt   vstackt   ravelR   t   reshapeR   t   dstackR   R   R   R   R   R   (   R   R   t
   covarianceR    R#   t   xt   yt   grid_coordsR%   R&   R'   t   smallt   largeR(   R)   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_2dJ   s.    !+!-)""c          C` sK  t  j j d ƒ d }  t  j d d g ƒ } t  j d d g d d g g ƒ } t  j j | | d |  ƒj } t  j j |  ƒ } t j | d | ƒ} t  j	 d	 d
 d … d	 d
 d … f \ } } t  j
 | j ƒ  | j ƒ  g ƒ } | j | ƒ }	 |	 j d d ƒ }	 t j j t  j | | g ƒ d | d | ƒ}
 | j ƒ  d | j ƒ  d } t t  j |	 |
 d ƒ | d d k  ƒ d } d } | j | | d g | | g ƒ } | j | | g | | d g ƒ } t | d d d ƒt | d d d ƒt | j | ƒ |	 d j ƒ  | d d d ƒt | j | | ƒ |	 |
 j ƒ  | d d d ƒd  S(   NiîÀ… iô  g      ð?g      @g       @g      @R1   R+   iùÿÿÿi   y             @@R   R2   i   i    i   g{®Gáz„?g}Ã”%­I²Ôg}Ã”%­I²Tg      à?R   (   R   R   R   R3   R4   R5   R,   R   R   R6   R7   R8   R   R9   R   R:   R   R   R   R   R   R   (   R   R   R;   R    R/   R#   R<   R=   R>   R%   R&   R'   R?   R@   R(   R)   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_2d_weightedq   s0    !+!-)""c    
      C` sæ   d „  }  t  j j d ƒ d } t  j j | ƒ } t j | ƒ } t j | d |  ƒ} t j | d | j ƒ} t  j d d d ƒ } | j | ƒ } | j | ƒ } t	 | | ƒ | j | ƒ }	 t	 | |	 ƒ t
 t t j | d d ƒd  S(	   Nc         S` s   t  j |  j d |  j d ƒ S(   s*   Same as default, just check that it works.g      ð¿i   (   R   t   powert   nt   d(   t   kde_obj(    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   scotts_factorš   s    iîÀ… i2   t	   bw_methodiùÿÿÿi   i3   t   wrongstring(   R   R   R   R   R   R   t   factorR   R   R   t   assert_raisest
   ValueError(
   RG   R   R    R#   t   gkde2t   gkde3R$   R%   t   kdepdf2t   kdepdf3(    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_bandwidth_method™   s    	c    
      C` sæ   d „  }  t  j j d ƒ d } t  j j | ƒ } t j | ƒ } t j | d |  ƒ} t j | d | j ƒ} t  j d d d ƒ } | j | ƒ } | j | ƒ } t	 | | ƒ | j | ƒ }	 t	 | |	 ƒ t
 t t j | d d ƒd  S(	   Nc         S` s   t  j |  j d |  j d ƒ S(   s*   Same as default, just check that it works.g      ð¿i   (   R   RC   t   neffRE   (   RF   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyRG   ´   s    iîÀ… i2   RH   iùÿÿÿi   i3   RI   (   R   R   R   R   R   R   RJ   R   R   R   RK   RL   (
   RG   R   R    R#   RM   RN   R$   R%   RO   RP   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt"   test_kde_bandwidth_method_weighted³   s    	t   _kde_subclass1c           B` s   e  Z d  „  Z RS(   c         C` sD   t  j | ƒ |  _ |  j j \ |  _ |  _ |  j |  _ |  j ƒ  d  S(   N(	   R   t
   atleast_2dt   datasett   shapeRE   RD   RG   t   covariance_factort   _compute_covariance(   t   selfRV   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   __init__Ò   s    (   t   __name__t
   __module__R[   (    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyRT   Ñ   s   t   _kde_subclass2c           B` s   e  Z d  „  Z RS(   c         C` s&   |  j  |  _ t t |  ƒ j | ƒ d  S(   N(   RG   RX   t   superR^   R[   (   RZ   RV   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyR[   Ú   s    (   R\   R]   R[   (    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyR^   Ù   s   t   _kde_subclass3c           B` s   e  Z d  „  Z d „  Z RS(   c         C` s    | |  _  t j j |  | ƒ d  S(   N(   R;   R   R   R[   (   RZ   RV   R;   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyR[   à   s    	c         C` sO   t  j j |  j ƒ |  _ t  j t  j j d t  j |  j ƒ ƒ |  j |  _	 d  S(   Ni   (
   R   t   linalgt   invR;   t   inv_covR.   t   dett   piRD   t   _norm_factor(   RZ   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyRY   ä   s    &(   R\   R]   R[   RY   (    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyR`   ß   s   	t   _kde_subclass4c           B` s   e  Z d  „  Z RS(   c         C` s   d |  j  ƒ  S(   Ng      à?(   t   silverman_factor(   RZ   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyRX   ë   s    (   R\   R]   RX   (    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyRg   ê   s   c          ` sc  t  j d d d d d g d t ƒ}  t  j d d d	 d
 ƒ} t j |  ƒ ‰  ˆ  | ƒ } t |  ƒ } | | ƒ } t | | d d ƒt |  ƒ } | | ƒ } t | | d d ƒt	 |  ˆ  j
 ƒ } | | ƒ } t | | d d ƒt |  ƒ }	 |	 |  ƒ }
 d d d d d g } t | |
 d d ƒˆ  } ‡  f d †  | _ | j ƒ  | | ƒ } t | | d d ƒd  S(   Niùÿÿÿiûÿÿÿi   i   i   t   dtypeiöÿÿÿi
   t   numi2   t   nulpgœn—,°?gÇ»e‡?°?gWÍ[3®?g¥a úà)¶?gKd8ú;´?R   i   c           ` s   ˆ  j  S(   N(   RJ   (    (   t   kde(    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   <lambda>  s    (   R   R3   t   floatR   R   R   RT   R   R^   R`   R;   Rg   R   RX   RY   (   t   x1R$   t   yst   kde1t   y1t   kde2t   y2t   kde3t   y3t   kde4t   y4t
   y_expectedt   kde5t   y5(    (   Rl   s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_gaussian_kde_subclassingï   s,    $
c          C` s£   t  j d d d d d g d t ƒ}  t  j d d d	 d ƒ} d
 d d d d g } t j |  ƒ } | j d d ƒ | j d d ƒ | | ƒ } t | | d d ƒd  S(   Niùÿÿÿiûÿÿÿi   i   i   Ri   iöÿÿÿi
   Rj   g>L\ž9™?gp4=¨?gùHŒ–êŸ«?g8(H	MT«?gÄ²™CR‘?RH   g      à?t   scottR   i   (   R   R3   Rn   R   R   R   t   set_bandwidthR   (   Ro   R$   Ry   Rl   Rt   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt$   test_gaussian_kde_covariance_caching  s    $c          C` s¥   t  j d d d d d g d t ƒ}  t  j d d d	 d
 ƒ} t j |  ƒ } | j | _ | j ƒ  | | ƒ } t j |  d d ƒ} | | ƒ } t	 | | d d ƒd S(   sÞ   Ugly, but people may rely on this.  See scipy pull request 123,
    specifically the linked ML thread "Width of the Gaussian in stats.kde".
    If it is necessary to break this later on, that is to be discussed on ML.
    iùÿÿÿiûÿÿÿi   i   i   Ri   iöÿÿÿi
   Rj   i2   RH   t	   silvermanRk   N(
   R   R3   Rn   R   R   R   Rh   RX   RY   R   (   Ro   R$   Rl   Rr   Rs   Rt   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_gaussian_kde_monkeypatch%  s    $
c          C` sP   t  j d ƒ }  t j |  ƒ } d d d d d g } t | |  ƒ | d d ƒd S(   s   Regression test for #1181.i   gB…×\AÁ?g­±øESÇ?gÔö
f§úÈ?R   i   N(   R   t   arangeR   R   R   (   Ro   Rl   Ry   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_kde_integer_input:  s    c          C` sû   t  j j d ƒ d }  t  j j |  ƒ } t j | ƒ } t  j d d d ƒ } | j | ƒ } | j | ƒ } t	 | | d d ƒt  j
 | ƒ } | j | ƒ } t	 | | d d ƒt j | ƒ } t  j
 | j | ƒ ƒ } | j | ƒ } t	 | | d d ƒd  S(   Ni   i2   iñÿÿÿi   i   R   (   R   R   R   R   R   R   R   R   R   R   t   logt   logpdf(   R   R    R#   R$   R   t   pdf2R…   t   logpdf2(    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_pdf_logpdfB  s    c    	      C` s  t  j j d ƒ d }  t  j j |  ƒ } t  j j |  ƒ } t j | d | ƒ} t  j d d d ƒ } | j | ƒ } | j	 | ƒ } t
 | | d d ƒt  j | ƒ } | j | ƒ } t
 | | d d ƒt j | ƒ } t  j | j | ƒ ƒ } | j | ƒ } t
 | | d d ƒd  S(   Ni   i2   R+   iñÿÿÿi   i   R   (   R   R   R   R   R,   R   R   R   R   R   R   R„   R…   (	   R   R    R/   R#   R$   R   R†   R…   R‡   (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_pdf_logpdf_weightedZ  s     c          C` sŽ   t  j j d ƒ t  j j d d ƒ }  t  j j d d d g d |  j ƒ} | j ƒ  } t j t  j	 |  ƒ d | ƒt
 | | d d d	 d ƒd  S(
   Ni90  R1   id   g      ð?g      $@R+   t   atolg›+¡†›„=t   rtol(   R   R   R   t	   lognormalt   choiceR1   t   copyR   R   t   log10R   (   t   valsR+   t   orig_weights(    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_weights_intacts  s    $c          C` s«   t  j j d ƒ d d d d d g }  d d d	 d
 d g } t j |  d | ƒ} t j |  d t  j | ƒ ƒ} d d d g } t | j | ƒ | j | ƒ d d d d ƒd  S(   Ni90  gš™™™™™É?g      +@g      5@g     ÀR@g     ÀX@i   i   i   i   i   R+   g333333Ó?i   iX   RŠ   g›+¡†›„=R‹   (   R   R   R   R   R   t   float64R   R   (   t   valuesR+   t   pdf_it   pdf_fR    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   test_weights_integer~  s    (&   t
   __future__R    R   R   t   scipyR   t   numpyR   t   numpy.testingR   R   R   R   R   t   pytestR	   RK   R*   R0   t   markt   slowRA   RB   RQ   RS   R   RT   R^   R`   Rg   R|   R   R   Rƒ   Rˆ   R‰   R’   R—   (    (    (    s<   lib/python2.7/site-packages/scipy/stats/tests/test_kdeoth.pyt   <module>   s.   (		 '(			&						