ó
áp7]c           @   s=  d  d l  m Z d  d l 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 m Z m Z m Z m Z d  d l m Z d  d l m Z m Z d  d l Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z e j j  d „  ƒ Z! e j j  d „  ƒ Z" d „  Z# d S(   iÿÿÿÿ(   t   PY37N(   t   assert_equal(   t   testing(   t   sparse(   t   dummy_sparset   Groupingt   Groupt   combine_indicest
   group_sums(   t   categorical(   t   grunfeldt   anes96t   CheckGroupingc           B   sž   e  Z e j j d  „  ƒ Z d „  Z d „  Z e j j d e	 d d ƒ d „  ƒ Z
 e j j d e	 d d ƒ d „  ƒ Z d „  Z e j j d	 „  ƒ Z d
 „  Z RS(   c         C   s   |  j  j |  j  j ƒ d  S(   N(   t   groupingt   reindext   index(   t   self(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_reindex   s    c         C   s3   |  j  j d d ƒ t j j |  j  j |  j ƒ d  S(   Nt   leveli    (   R   t   count_categoriest   npR   R   t   countst   expected_counts(   R   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_count_categories   s    c         C   së  |  j  j |  j ƒ \ } } |  j j ƒ  } t j | | ƒ t j j t	 | t
 j ƒ ƒ t j j | j |  j  j ƒ ƒ t | d ƒ r¥ t j j | j |  j ƒ ƒ n  |  j  j |  j j ƒ \ } } t j j | | j ƒ t j j t	 | t j ƒ ƒ |  j |  j j d } |  j  j | ƒ \ } } | j ƒ  } t j | | ƒ t j j t	 | t
 j ƒ ƒ t | d ƒ rˆt j j | j | ƒ ƒ n  | j } |  j  j | ƒ \ } } | j ƒ  j } t j j | | ƒ t j j t	 | t j ƒ ƒ d  S(   Nt   equalsi    (   R   t   sortt   datat
   sort_indext   tmt   assert_frame_equalR   R   t   assert_t
   isinstancet   pdt	   DataFrameR   R   t   hasattrt   valuest   assert_array_equalt   ndarrayt   columnst   assert_series_equalt   Series(   R   t   sorted_dataR   t   expected_sorted_datat   seriest   array(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt	   test_sort   s.      
	t	   conditiont   reasons/   Unexplained conversion to complex on Python 3.7c         C   s  |  j  j j } |  j j |  j  d „  d d ƒ} |  j  j ƒ  j | d ƒ } | j d „  ƒ |  j  j } t	 j
 j | | j ƒ t | ƒ d k r|  j j |  j  d „  d d ƒ} |  j  j ƒ  j | d ƒ } | j d „  ƒ |  j  j } t	 j
 j | | j ƒ n  d  S(   Nc         S   s
   |  j  ƒ  S(   N(   t   mean(   t   x(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   <lambda>F   t    R   i    c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   I   R3   i   c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   O   R3   c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   R   R3   (   R   R   t   namesR   t   transform_dataframet   reset_indext   groupbyt   applyR&   R   R   R$   R#   t   len(   R   R4   t   transformed_dataframet   groupedt   expected(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_transform_dataframe@   s"    			
		c         C   s  |  j  j j } |  j j |  j  j d „  d d ƒ} |  j  j ƒ  j | d ƒ } | j d „  ƒ |  j  j	 } t
 j j | | j ƒ t | ƒ d k r|  j j |  j  j d „  d d ƒ} |  j  j ƒ  j | d ƒ } | j d „  ƒ |  j  j	 } t
 j j | | j ƒ n  d  S(   Nc         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   \   R3   R   i    c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   _   R3   i   c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   f   R3   c         S   s
   |  j  ƒ  S(   N(   R0   (   R1   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   h   R3   (   R   R   R4   R   t   transform_arrayR#   R6   R7   R8   R&   R   R   R$   R9   (   R   R4   t   transformed_arrayR;   R<   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_transform_arrayV   s"    				
		c         C   s  |  j  j j } |  j j |  j  j d „  d d ƒ} |  j  j ƒ  j | d ƒ j ƒ  |  j  j	 } t
 j j | | j d d d d ƒt | ƒ d k r|  j j |  j  j d	 „  d d ƒ} |  j  j ƒ  j | d ƒ j ƒ  |  j  j	 } t
 j j | | j d d d d ƒn  d  S(
   Nc         S   s   |  j  d ƒ S(   Ni    (   R0   (   R1   t   idx(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   q   R3   R   i    t   rtolgê-™—q=t   atolgÙ}ÚõÐò¾:i   c         S   s   |  j  d ƒ S(   Ni    (   R0   (   R1   RA   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR2   {   R3   (   R   R   R4   R   t   transform_slicesR#   R6   R7   R0   R&   R   R   t   assert_allcloseR9   (   R   R4   t   transformed_slicesR<   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_transform_slicesm   s$    								c         C   s?   |  j  j ƒ  t |  j  j ƒ d k r; |  j  j d d ƒ n  d  S(   Ni   R   (   R   t   dummies_groupsR9   t   group_names(   R   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_dummies_groupsƒ   s    c         C   sÈ   |  j  } |  j j ƒ  t | j j d ƒ j d t ƒ} t j	 j
 |  j j j ƒ  | ƒ t |  j j ƒ d k rÄ |  j j d d ƒ t | j j d ƒ j d t ƒ} t j	 j
 |  j j j ƒ  | ƒ n  d  S(   Ni    t   dropi   R   (   R   R   R   R	   R   t   get_level_valuesR#   t   TrueR   R   R   t   _dummiest   toarrayR9   RI   (   R   R   R<   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_dummy_sparse‹   s    			(   t   __name__t
   __module__t   pytestt   markt   smokeR   R   R-   t   xfailR    R=   R@   RG   RJ   RP   (    (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR      s   		%	t   TestMultiIndexGroupingc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sY   t  j ƒ  j } | j d d g ƒ } | j } t | ƒ |  _ | |  _ d g d |  _ d  S(   Nt   firmt   yeari   i   (   R
   t   load_pandasR   t	   set_indexR   R   R   R   (   t   clst	   grun_datat   multi_index_datat   multi_index_panel(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   setup_class›   s    		(   RQ   RR   t   classmethodR`   (    (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyRW   š   s   t   TestIndexGroupingc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sV   t  j ƒ  j } | j d g ƒ } | j } t | ƒ |  _ | |  _ d g d |  _ d  S(   NRX   i   i   (   R
   RZ   R   R[   R   R   R   R   (   R\   R]   t
   index_datat   index_group(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyR`   §   s    		(   RQ   RR   Ra   R`   (    (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyRb   ¦   s   c    	   ß   C   sÃ  t  j ƒ  j }  |  j d d g ƒ j } t | ƒ } t j j | j	 d d g ƒ t j j | j
 d" ƒ t j j | j d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d	 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d
 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d gÜ d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d d d	 d d d d d d
 d d d d d d d d d d d d gÜ g ƒ t | d d d g ƒ} t j j | j	 d d g ƒ t j ƒ  j } | j d d d g ƒ j } t | ƒ } t j j | j	 d d d g ƒ t j j | j
 d# ƒ | j ƒ  } t | d d d g ƒ} t j j | j	 d d g ƒ t j j | j
 d$ ƒ | j ƒ  } t | d d d d g ƒ} t j j | j	 d d d g ƒ t j j | j
 d% ƒ | j d ƒ } t | ƒ } t j j | j	 d g ƒ t j j | j
 d& ƒ | j d ƒ j ƒ  } t | ƒ } t j j | j	 d g ƒ t j j | j
 d' ƒ t | ƒ } t j j | j	 d d  d! g ƒ d  S((   NRX   RY   i   i   i   i   i   i   i   i   i	   i
   i   i   i    i   i   i   i   i   i   i   i   R4   t   firmst   educt   incomet   TVnewsi   iÜ   t   group0t   group1t   group2(   i   i   (   i   i   i   (   i   i   (   i   i   i   (   iÜ   iÜ   (   R
   RZ   R   R[   R   R   R   R   R$   RI   t   index_shapet   labelsR   t   tolistRL   (	   R]   R_   R   t	   anes_datat   multi_index_groupst
   list_panelt   list_groupsRd   t
   list_group(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_init_api²   sz    3333333333333333333333333:c    	      C   s|  t  j j d ƒ t  j j d d d d ƒ}  t |  d t ƒ\ } } } } t |  d d d	 d
 d t ƒ\ } } } } t  j d d g ƒ |  d  d  … d f } t  j d d g ƒ |  d  d  … d f } t | | f d d d	 d
 d t ƒ\ } } } } t | | f d d d	 d d t ƒ\ } } } } t  j | ƒ | } t  j d d d d d d d d d d g
 d d ƒ} t | | ƒ d  S(   Ni	 i    i   t   sizei
   t   return_labelst   prefixs   g1,g2=t   sept   ,t   sector0t   sector1t   region0t   region1i   s   sector,region=R3   t   .s   sector1.region0s   sector0.region1s   sector0.region0s   sector1.region1t   dtypes   |U15(   i
   i   (   R   t   randomt   seedt   randintR   RM   R,   R   (	   t   groupst   uvt   uxt   ut   labelRi   Rj   t   group_jointt   group_joint_expected(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_combine_indices  s*    ))	c       	   C   s  t  j d d d d d d d d g ƒ }  t t  j t |  ƒ d d ƒ j t |  ƒ d d ƒ |  d t ƒj t t  j t |  ƒ d d ƒ j t |  ƒ d d ƒ d  d  … d  d  … d f |  ƒ t t  j t |  ƒ d d ƒ j t |  ƒ d d ƒ d  d  … d  d  … d f |  ƒ d  S(   Ni    i   i   i   t   use_bincount(   R   R,   R   t   arangeR9   t   reshapet   Falset   T(   t   g(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_group_sums  s
    '8
Rc       	   C   s†   t  j d d d d d d d d g ƒ }  t  j t |  ƒ d ƒ j t |  ƒ d d d ƒ} t |  ƒ } | j | j | ƒ | j ƒ  d  S(   Ni    i   i   i   t   ordert   F(	   R   R,   RŒ   R9   R   R   t	   group_intR   Rm   (   R   R1   t   mygroup(    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   test_group_class)  s    '1c       
   C   sz  t  j d d d d d d d g ƒ }  t |  ƒ } t | t j j ƒ sK t ‚ | j ƒ  } t  j	 d d d g d d d g d d d g d d d g d d d g d d d g d d d g g d t  j
 ƒ} t | | ƒ t  j d d d d d d g ƒ }  t |  ƒ } | j ƒ  } t  j	 d d d g d d d g d d d g d d d g d d d g d d d g g d t  j
 ƒ} t | | ƒ d  S(   Ni    i   i   R   (   R   R,   R   R   R   t   csrt
   csr_matrixt   AssertionErrort   todenset   matrixt   int8R   (   R   t   indit   resultR<   (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyRP   6  s,    $!($   t   statsmodels.compat.pythonR    t   numpyR   t   numpy.testingR   t   pandasR    t   pandas.utilR   R   t   scipyR   t   statsmodels.tools.grouputilsR   R   R   R   R   t   statsmodels.tools.toolsR	   t   statsmodels.datasetsR
   R   RS   t   objectR   RW   Rb   Rt   RŠ   RT   RU   R‘   R–   RP   (    (    (    sF   lib/python2.7/site-packages/statsmodels/tools/tests/test_grouputils.pyt   <module>   s"   (‰	R	