ó
áp7]c           @   s¦   d  Z  d d l Z d d l Z d d l m Z m Z m Z m Z d d l	 m
 Z
 e j j e j j e ƒ ƒ Z e j j e d ƒ Z d e f d „  ƒ  YZ d „  Z d S(	   s  
Lowess testing suite.

Expected outcomes are generated by R's lowess function given the same
arguments. The R script test_lowess_r_outputs.R can be used to
generate the expected outcomes.

The delta tests utilize Silverman's motorcycle collision data,
available in R's MASS package.
iÿÿÿÿN(   t   assert_almost_equalt   assert_t   assert_raisest   assert_equal(   t   lowesst   resultst
   TestLowessc           B   s’   e  Z d  „  Z d „  Z d „  Z e d d d d d d „ ƒ Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s/   d d  l  j } | j j } t t | k ƒ d  S(   Niÿÿÿÿ(   t   statsmodels.apit   apit   nonparametricR   R   (   t   selft   smt   lowess1(    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   test_import   s    c         C   s   i t  j d ƒ d 6t  j d ƒ d 6t  j d ƒ d 6} t  j | d | d g ƒ j } t | d | d ƒ } t | | d ƒ d  S(   Ni   t   xt   yt   outi   (   t   npt   aranget   zerost   arrayt   TR   R    (   R
   t	   test_datat   expected_lowesst   actual_lowess(    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt	   test_flat#   s
    3 c         C   s   i t  j d ƒ d 6t  j d ƒ d 6t  j d ƒ d 6} t  j | d | d g ƒ j } t | d | d ƒ } t | | d ƒ d  S(   Ni   R   R   R   i   (   R   R   R   R   R   R    (   R
   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt
   test_range*   s
    3 R   R   R   i   c   
      C   s´   | d  k r i  n | } t j t j j t | ƒ d d d t ƒ} |  t _	 t
 | ƒ rf | | ƒ } n  t | | | | |  } t j | | | | g ƒ j }	 t | |	 | ƒ d  S(   Nt	   delimitert   ,t   names(   t   NoneR   t
   genfromtxtt   ost   patht   joint   rpatht   TrueR    t   descriptiont   callableR   R   R   (
   t   namet   fnameR   R   R   t   kwargst   decimalt   datat   resultt   expect(    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   generate1   s    *	 c         C   s   |  j  d d ƒ d  S(   Nt   test_simples   test_lowess_simple.csv(   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR/   =   s    c      	   C   s'   |  j  d d d d d i d d 6ƒd  S(   Nt   test_iter_0s   test_lowess_iter.csvR   t   out_0R)   i    t   it(   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR0   @   s    c      	   C   s'   |  j  d d d d d i d d 6ƒd  S(   NR0   s   test_lowess_iter.csvR   t   out_3R)   i   R2   (   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   test_iter_0_3C   s    c      	   C   s+   |  j  d d d d d i d d d 6ƒd  S(	   Nt   test_frac_2_3s   test_lowess_frac.csvR   t   out_2_3R)   g       @i   t   frac(   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR5   F   s    c      	   C   s+   |  j  d d d d d i d d d 6ƒd  S(	   Nt   test_frac_1_5s   test_lowess_frac.csvR   t   out_1_5R)   g      ð?i   R7   (   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR8   I   s    c      	   C   s'   |  j  d d d d d i d d 6ƒd  S(   Nt   test_delta_0s   test_lowess_delta.csvR   R1   R)   gš™™™™™¹?R7   (   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR:   L   s    c         C   s#   |  j  d d d d d d „  ƒd  S(   Nt   test_delta_Rdefs   test_lowess_delta.csvR   t   out_RdefR)   c         S   s#   i d d 6d t  j |  d ƒ d 6S(   Ngš™™™™™¹?R7   g{®Gáz„?R   t   delta(   R   t   ptp(   R+   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   <lambda>Q   t    (   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   test_delta_rdefO   s    c      	   C   s4   |  j  d d d d d i d d 6d d
 6d d ƒd  S(   Nt   test_delta_1s   test_lowess_delta.csvR   t   out_1R)   gš™™™™™¹?R7   i   g»½×Ùß|Û=R=   R*   i
   g8ß   ð?(   R.   (   R
   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyRB   S   s    c      	   C   së  t  j j t d ƒ } t j t | d ƒ d d d t ƒ} | d | d } } | d } t j | d | d g ƒ j	 } t
 | | d	 t ƒ} t | | d
 d ƒt
 | | d	 t d d ƒ} t | | d
 d ƒt
 | d  d  d … | d  d  d … d t ƒ} t | | d  d  d … d f d
 d ƒt
 | | d t d d d	 t ƒ} t | | d  d  … d f d
 d ƒt
 t j | ƒ j t ƒ | d	 t ƒ} t
 t j | ƒ | d	 t ƒ} t | | d
 d ƒt | j t j t ƒ k ƒ t
 | t j | ƒ j t ƒ d	 t ƒ} t
 | t j | ƒ d	 t ƒ} t | | d
 d ƒt | j t j t ƒ k ƒ t j | d d g <t j | d <t j | ƒ t j | ƒ @}	 t
 | | d	 t ƒ} t
 | |	 | |	 d	 t ƒ} t | | d
 d ƒt t t
 | | d d ƒt j t | ƒ ƒ }
 t j j |
 ƒ | |
 } | |
 } t
 | | d	 t ƒ} t | | d
 d ƒt
 | | d	 t d t ƒ} t j | ƒ t j | ƒ @}	 t t j | ƒ |	 ƒ t j | ƒ } | | } | t j | ƒ } t | | d  d  … d f d
 d ƒd  S(   Ns   test_lowess_simple.csvt   rbR   R   R   R   R   R   t	   is_sortedR*   i   t   missingt   noneiÿÿÿÿt   return_sortedi   i   i   i   t   raise(   R    R!   R"   R#   R   R   t   openR$   R   R   R   R    t   Falset   roundt   astypet   intR   t   dtypet   floatt   nant   isfiniteR   t
   ValueErrorR   t   lent   randomt   shuffleR   t   isnant   argsort(   R
   t   rfileR   R   R   t   res1_fittedR   t   actual_lowess1R   t
   mask_validt   perm_idxt   ypermt   xpermt   actual_lowess2t   actual_lowess3t   sort_idxt   yhat(    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   test_optionsW   sX    
 /&	#''

	
N(   t   __name__t
   __module__R   R   R   t   staticmethodR   R.   R/   R0   R4   R5   R8   R:   RA   RB   Rd   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyR      s   											c          C   s\   d g d d g d }  t  j d ƒ } t |  | d d ƒ} t | t  j | |  f ƒ ƒ d  S(   Ni    i
   i   i   R7   gš™™™™™Ù?(   R   R   R   R    t   column_stack(   R   R   R,   (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   test_returns_inputs—   s    (   t   __doc__R    t   numpyR   t   numpy.testingR    R   R   R   t*   statsmodels.nonparametric.smoothers_lowessR   R!   t   dirnamet   abspatht   __file__t   curdirR"   R#   t   objectR   Ri   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/nonparametric/tests/test_lowess.pyt   <module>
   s   "}