ó
áp7]c           @   s®   d  Z  d d l Z d d l Z d d l j Z d d l j Z	 d d l
 m Z m Z m Z m Z d d l m Z d d l m Z d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d S(
   s#   
Test functions for models.formula
iÿÿÿÿN(   t   assert_almost_equalt   assert_equalt   assert_t   assert_raises(   t   formula(   t   contrast_oldt   TestTermc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sJ   t  j d ƒ } d „  } t  j d | d ƒ } t t t  j d d d ƒd  S(   Nt   trivialc         S   s   |  |  S(   N(    (   t   x(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   <lambda>   t    t   not_so_trivialt   sqrt   namet   termnamei    (   R   t   TermR   t
   ValueError(   t   selft   t1R   t   t2(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt	   test_init   s    	c         C   s   t  j d ƒ } t | ƒ } d  S(   NR   (   R   R   t   str(   R   t   tt   s(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_str   s    c         C   sh   t  j d ƒ } t  j d ƒ } | | } t t | t  j ƒ ƒ t | j | ƒ ƒ t | j | ƒ ƒ d  S(   NR   R   (   R   R   R   t
   isinstancet   Formulat   hasterm(   R   R   R   t   f(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_add    s    
c         C   s©   t  j d ƒ } t  j d ƒ } | | } t t | t  j ƒ ƒ t  j d ƒ } | | } t t | ƒ t t  j | ƒ ƒ ƒ | | } t t | ƒ t t  j | ƒ ƒ ƒ d  S(   NR   R   t	   intercept(   R   R   R   R   R   R   R   (   R   R   R   R   R   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_mul(   s    

"
(   t   __name__t
   __module__R   R   R   R   (    (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyR      s   				t   TestFormulac           B   sà   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sØ   t  j d ƒ |  _ i  |  _ g  |  _ x^ t d ƒ D]P } d t j | } |  j d  d  … | f |  j | <|  j j t	 j
 | ƒ ƒ q1 W|  j d |  _	 x- t d d ƒ D] } |  j	 |  j | 7_	 q¥ W|  j |  j	 _ d  S(   Ni(   i
   s   %si    i   (   i(   i
   (   t   Rt   standard_normalt   Xt	   namespacet   termst   ranget   stringt   ascii_uppercaset   appendR   R   (   R   t   iR   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   setup8   s    		 c         C   s  i t  j d ƒ d 6t  j d ƒ d d 6} i t  j d ƒ d 6t  j d ƒ d d 6} i t  j d ƒ d 6t  j d ƒ d d 6} t j d ƒ } t j d ƒ } | | _ t | ƒ  t  j d ƒ ƒ | | _ t | ƒ  t  j d ƒ d ƒ | | } | | _ t | ƒ  j d ƒ t | ƒ  t  j d ƒ d ƒ t | ƒ  t  j d ƒ ƒ | | _ t | ƒ  j d ƒ t | ƒ  t  j d ƒ d ƒ t | ƒ  t  j d ƒ ƒ | | _ t | ƒ  j d	 ƒ t | ƒ  t  j d ƒ d ƒ t | ƒ  t  j d ƒ ƒ | d } t | ƒ  j d
 ƒ | | _ t | ƒ  j d ƒ | t j } t | ƒ  j d ƒ | | _ t | ƒ  j d ƒ | | } t | j | j ƒ | | } t | j i  ƒ i t  j d ƒ d 6t  j d ƒ d d 6| _ | | } t | j i  ƒ | j | _ | | } t | j | j ƒ d  S(   Ni2   R%   i   t   Yi   i   (   i   i2   (   i   i   (   i   i   (   i2   (   i   (   i2   (   i   (	   t   npt   arangeR   R   R&   R    R   t   shapet   I(   R   t   space1t   space2t   space3R%   R.   R   t   xx(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_namespaceF   sP    ***		
			
		

-

c   
      C   sÖ   t  j d ƒ } t  j d ƒ } | | | | } d „  } t  j g  t d d ƒ D] } d | ^ qO d d d	 | d
 | ƒ} | | 7} |  j  j | _ | _ | ƒ  } | ƒ  } | j | ƒ }	 | |	 } t | | ƒ d  S(   Nt   At   Bc         S   s*   t  j d |  d |  d d |  d g ƒ S(   Ngš™™™™™	@g‘í|?5^@i   gV-²ï@i   (   R/   t   array(   t   val(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   other‚   s    i   i   s   other%dR   R<   t   funct	   transform(   R   R   t   QuantitativeR(   R&   t   termcolumnsR    (
   R   R   R   R   R<   R,   t   qt   at   bt   c(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_termcolumns}   s    	A
		
c         C   s   t  |  j ƒ } d  S(   N(   R   R   (   R   R   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyR   Ž   s    c         C   s)   |  j  ƒ  } t t j | ƒ j d ƒ d  S(   Ni
   i(   (   i
   i(   (   R   R   R/   R:   R1   (   R   R   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt	   test_call‘   s    c         C   s#   |  j  j ƒ  } t | j d ƒ d  S(   Ni(   i
   (   i(   i
   (   R   t   designR   R1   (   R   R   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_design•   s    c         C   sÿ   |  j  d |  j  d } |  j  | } |  j | _ | j ƒ  } | d } |  j | _ | j | d t ƒ} t t j | d  d  … | f ƒ |  j d  d  … d f |  j d  d  … d f ƒ t t j | ƒ  ƒ |  j d  d  … d f |  j d  d  … d f ƒ d  S(   NR8   t   Cs   A*Ct   dicti    i   (	   R   R&   RG   R@   t   FalseR    R/   t   squeezeR%   (   R   t   prodR   R   t   pt   col(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_product™   s    
Pc         C   sj   |  j  d |  j  d } |  j t j } | j ƒ  j d ƒ } |  j | _ t | ƒ  | t j d ƒ ƒ d  S(   Ni    i   R   i(   (   i(   (	   R'   R   R2   t   namest   indexR&   R    R/   t   ones(   R   RM   R   t   icol(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_intercept1¤   s
    c         C   sU   |  j  d } |  j | _ | t  j } |  j  j | _ t t j | ƒ  ƒ | ƒ  ƒ d  S(   NR8   (   R   R&   R2   R    R/   RL   (   R   R   RM   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_intercept3«   s
    c         C   s²   |  j  d |  j  d } t j | |  j ƒ } |  j j |  j  d d t ƒ} |  j j |  j  d d t ƒ} d g d g d d g d d g d g d g } t | j | ƒ d  S(   Ni    i   RJ   i   i	   i   (   R'   t   contrastt   ContrastR   R@   RK   R    t   matrix(   R   t   termRD   t   col1t   col2t   test(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_contrast1²   s    3c         C   s„   t  j d ƒ } t j d t j ƒ |  j d <| |  j d } t j | |  j  ƒ } d g d d g d g d } t	 | j
 | ƒ d  S(   Nt   zeroi(   i   i    i   i   (   i(   (   R   R   R/   t   zerost   float64R&   R'   RW   RX   R    RY   (   R   t   dummyRZ   RD   R]   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_contrast2º   s    c         C   sÃ   |  j  j ƒ  } t j | t j | ƒ ƒ } t  j d ƒ } t j d ƒ | } t j t j | t	 j
 d ƒ ƒ ƒ |  j d <| |  j d } |  j  j | _ t j | |  j  ƒ } t | j j d ƒ d  S(   Nt   noisei(   i   i   i
   (   i(   i   (   i
   (   R   RG   R/   t   dott   Lt   pinvR   t   identityt	   transposeR#   R$   R&   R'   RW   RX   R   RY   R1   (   R   R%   t   PRb   t   residR'   RD   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_contrast3Â   s    +c         C   sH   |  j  d } | d } |  j j | _ | _ t | ƒ  d | ƒ  ƒ d  S(   Ni   (   R'   R   R&   R    (   R   R   R   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt
   test_powerÎ   s    
c         C   sa   |  j  d } t j d d | d t j ƒ} |  j j | _ | _ t t j | ƒ  ƒ | ƒ  ƒ d  S(   Ni   R   R=   R>   (   R'   R   R?   R/   t   sinR&   R    (   R   R   t   sint(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_quantitativeÕ   s    c         C   sR   d d d g d } t  j d | ƒ } i | d 6| _ t t | j ƒ  ƒ | ƒ d  S(   NRB   RC   RD   i
   t   ff(   R   t   FactorR&   R   t   listt   values(   R   R   t   fac(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_factor1Û   s    c         C   sL   d d d g d } t  j d | ƒ } i | d 6| _ t | ƒ  j d ƒ d  S(	   NRB   RC   RD   i
   Rq   i   i   (   i   i   (   R   Rr   R&   R   R1   (   R   R   Ru   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_factor2á   s    c         C   sj   d d d g d } t  j d | ƒ } i | d 6| _ | j d d ƒ } | j | _ t | ƒ  j d
 ƒ d  S(   NRB   RC   RD   i
   Rq   t	   referencei   i   i   (   i   i   (   R   Rr   R&   t   main_effectR   R1   (   R   R   Ru   t   m(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_factor3ç   s    c         C   sÅ   d d d g d } t  j d | ƒ } i | d 6| _ | j d d ƒ } | j | _ t j t j d ƒ g d ƒ } d | _ | j } t j | d
 | d | d | d g ƒ } t	 | | ƒ  ƒ d  S(   NRB   RC   RD   i
   Rq   Rx   i   i   i   i    i   (   i   i   (
   R   Rr   R&   Ry   R/   R:   Rh   R1   t   TR    (   R   R   Ru   Rz   t   rt   _m(    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_factor4ï   s    		-c         C   sÓ   d d d g d } t  j d | ƒ } i | d 6| _ t | ƒ  d d d g d d d d g d d d d g d g ƒ t | d d d d g d ƒ t | d d d d g d ƒ t | d d d d g d ƒ d  S(   NRB   RC   RD   i   Rq   i   i    (   R   Rr   R&   R   (   R   R   Ru   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_factor5û   s    c         C   s¿   d d d g d } t  j d d d d g d t ƒ} i | d 6| _ t | ƒ  d d d	 g d ƒ t | d d d d g d ƒ t | d d d d g d ƒ t | d d d d g d ƒ d  S(
   NRB   RC   RD   i   Rq   t   ordinali    i   i   (   R   Rr   t   TrueR&   R   (   R   R   Ru   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_ordinal_factor  s    !c         C   s¿   d d d g d } t  j d d d d g d t ƒ} i | d 6| _ t | ƒ  d d d	 g d ƒ t | d d	 d	 d g d ƒ t | d d d	 d	 g d ƒ t | d d	 d d	 g d ƒ d  S(
   NRC   RD   RB   i   Rq   R   i   i   i    (   R   Rr   R‚   R&   R   (   R   R   Ru   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_ordinal_factor2  s    !c         C   s[   |  j  |  j d |  j d } |  j | _ t } t j |  j d | ƒ } t | t ƒ d  S(   Ni   (   R   R'   R&   RK   RW   RX   R   (   R   R   t	   estimableRD   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_contrast4  s
    c         C   sé  t  j g  d d d g D] } t  j | ƒ ^ q ƒ } t t | j ƒ  ƒ t d d d d d d g ƒ ƒ t  j g  d d d d g D] } t  j | ƒ ^ q~ d d	 ƒ} t t | j ƒ  ƒ t d d d d d d d
 d d d d d d d g ƒ ƒ t  j g  d d d d g D] } t  j | ƒ ^ qd d d d	 g ƒ} t t | j ƒ  ƒ t d d d d d d d
 d d d d d d d g ƒ ƒ t  j g  d d d d g D] } t  j | ƒ ^ q“d d	 g ƒ} t t | j ƒ  ƒ t d d d d g ƒ ƒ d  S(   NRB   RC   RD   s   a*bs   a*cs   b*ct   dt   orderi   s   a*ds   b*ds   c*ds   a*b*cs   a*c*ds   a*b*ds   b*c*di   i   (   R   t   interactionsR   R   t   sett	   termnames(   R   t   lR   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_interactions&  s    41=IFI@c         C   sö   t  j g  d d d g D] } t  j | ƒ ^ q ƒ } | | d } t t | j ƒ  ƒ t d d d d d g ƒ ƒ | | d | d } t t | j ƒ  ƒ t d d d d g ƒ ƒ | | d | d } t t | j ƒ  ƒ t d d d d g ƒ ƒ d  S(   NRB   RC   RD   s   a*bs   a*cs   b*c(   R   R‰   R   R   RŠ   R‹   (   R   RŒ   R   Rq   (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   test_subtract4  s    4.+(   R    R!   R-   R7   RE   R   RF   RH   RP   RU   RV   R^   Rc   Rl   Rm   Rp   Rv   Rw   R{   R   R€   Rƒ   R„   R†   R   RŽ   (    (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyR"   6   s0   		7																		
	
	
	(   t   __doc__R)   t   numpyR/   t   numpy.randomt   randomR#   t   numpy.linalgt   linalgRf   t   numpy.testingR    R   R   R   t   statsmodels.sandboxR   R   RW   t   objectR   R"   (    (    (    sE   lib/python2.7/site-packages/statsmodels/sandbox/tests/test_formula.pyt   <module>   s   "%