
p7]c           @   s6  d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z d d l	 m
 Z
 m Z d d l m Z d e f d     YZ d e f d	     YZ d
 e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d S(   s=   
Created on Mon May 05 17:29:56 2014

Author: Josef Perktold
iN(   t   assert_allclose(   t   OLSt   GLS(   t   TheilGLSt   TestTheilTextilec           B   sG   e  Z e d     Z d   Z d   Z d   Z e j j	 d    Z
 RS(   c         C   s  t  j j t  j j t   } t  j j | d d  } t j | d d |  _ d j	   } t
 j d j	   t  j d d  } | d  d   d	 f } t
 j | d  d   d
 d   f t
 j | j d  f  } t
 j d	 d d g d d	 d g g  } d	 d g } t
 j d d g d d g g  }	 t | | | d | d |	 }
 |
 j d d d t  |  _ d |  j j d <d	 d l m } | j |  _ d  S(   Nt   resultss   theil_textile_predict.csvt   sept   ,s   year	lconsump	lincome	lprices_          1923	1.99651	1.98543	2.00432
        1924	1.99564	1.99167	2.00043
        1925	2	2	2
        1926	2.04766	2.02078	1.95713
        1927	2.08707	2.02078	1.93702
        1928	2.07041	2.03941	1.95279
        1929	2.08314	2.04454	1.95713
        1930	2.13354	2.05038	1.91803
        1931	2.18808	2.03862	1.84572
        1932	2.18639	2.02243	1.81558
        1933	2.20003	2.00732	1.78746
        1934	2.14799	1.97955	1.79588
        1935	2.13418	1.98408	1.80346
        1936	2.22531	1.98945	1.72099
        1937	2.18837	2.0103	1.77597
        1938	2.17319	2.00689	1.77452
        1939	2.2188	2.0162	1.78746ii   i   i   i    gffffffg333333?g{Gzt   q_matrixt   sigma_priort   cov_types
   data-priort   use_tg{:(?t   scale(   t   results_theil_textileg
ףp=
?g
ףp=
?(   t   ost   patht   dirnamet   abspatht   __file__t   joint   pdt   read_csvt   res_predictt   splitt   npt   arrayt   floatt   reshapet   column_stackt   onest   shapeR   t   fitt   Truet   res1t   _cacheR   R   t   res2(   t   clst   cur_dirt   filepatht   namest   datat   endogt   exogt   r_matrixt   r_meant   cov_rt   modt	   resmodule(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   setup_class   s"    	;'!c   
      C   s|  |  j  j d  d   d  d  f j } | \ } } } } } } t |  j j | d d d } d } d } t |  j j | | d d t |  j j | | d d |  j j   }	 t |	 d  d   d f | d d t |	 d  d   d f | d d t |  j j	 |  j  j
 d d |  j j |  j  j } t t j |  j j |  |  j  j d d t |  j j |  j d	 d
 d d  S(   Ni   t   rtolg>gd64y?g_l)?i   i    g{Gz?t   fittedvaluest   atolg    ׇA(   R#   t   params_tablet   TR    R!   t   paramst   bset   tvaluest   conf_intt   rsquaredt   r2t   df_residt   df_rR   t   sqrtt	   mse_residt   rmseR2   R   (
   t   selft   ptt   params2t   bse2t   tvalues2t   pvalues2t   ci_lowt   ci_uppt	   corr_factt   ci(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt
   test_basicF   s"    %##c         C   s   |  j  j   } t t j | d  |  j j d d t t j | d  |  j j d d |  j  j   } t | d d d d  S(   Ni    R1   g>i   gCcn(B:?(	   R!   t   test_compatibilityR    R   t   squeezeR#   t   compatt   pvaluet
   share_data(   RA   t   tct   frac(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt
   test_otherd   s
    &&c         C   s{   t  |  j j j |  j j j  j   } |  j j j d d d d  } t | j | j d d t | j | j d d d  S(   Nt
   pen_weighti    R
   s
   data-priorR1   g|=(	   R   R!   t   modelR)   R*   R   R    R6   R7   (   RA   t   res_olst	   res_theil(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   test_no_penalizationr   s    'c         C   s'   t  j t   |  j j   Wd  QXd  S(   N(   t   pytestt   warnst   UserWarningR!   t   summary(   RA   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   test_summaryx   s    (   t   __name__t
   __module__t   classmethodR0   RK   RS   RX   RY   t   markt   smokeR]   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s
   /			t   CheckEquivalenceMixinc           B   s-   e  Z i d d 6Z e d    Z d   Z RS(   g-C6?g#B;t   defaultc         C   s   t  j j d  d	 \ } } d t  j d d d d d g  } t  j j | |  } d | d  d   d f <t  j | |  d t  j j |  } | | f S(
   Ni@ i   i   g      ?g?i   i    i   (   i   i   (   R   t   randomt   seedR   t   randnt   dot(   R$   t   nobst   k_varst   betat   xt   y(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt
   get_sample   s    "&c      
   C   s]  d d d d d d d g } d d	 d
 g } d d  l  } | j  |  } t |  d t  sg | j |  n  x | D] } t |  j |  } t |  j |  } t j |  d k s | t |   } n  |  j	 j
 | |  j	 d  \ } }	 d | }
 t | | d | d |	 d |
 qn Wt |  j j |  j j d d d d t |  j j |  j j d d d d d  S(   NR6   R:   R<   t   df_modelt   llft   aict   bicR7   R8   t   pvaluesit   skip_inferencei   Rd   s   attribute: R1   R3   t   err_msggMbP?g-C6?(   t   copyt   getattrt   Falset   extendR!   R#   R   t   sizet   lent   tolt   getR    R2   t   resid(   RA   t   attributes_fitt   attributes_inferenceRv   t
   attributest   attt   r1R;   R1   R3   t   message(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   test_attributes   s&    "
#(   g-C6?g#B;(   R^   R_   R|   R`   Rn   R   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyRc   ~   s   
t
   TestTheil1c           B   s   e  Z e d     Z RS(   c         C   sw   |  j    \ } } t | | d d d d d g } | j d  |  _ t | | d  d   d  d  f  j   |  _ d  S(   NR	   i    g      ?i@ i   (   Rn   R   R   R!   R   R#   (   R$   Rm   Rl   t   mod1(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    !(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t
   TestTheil2c           B   s   e  Z e d     Z RS(   c         C   sa   |  j    \ } } t | | d d d d d g } | j d  |  _ t | |  j   |  _ d  S(   NR	   i    g      ?(   Rn   R   R   R!   R   R#   (   R$   Rm   Rl   R   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    !(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t
   TestTheil3c           B   s   e  Z e d     Z RS(   c         C   s   t  |  _ |  j   \ } } t j | | f  } t j d d d  } t | | d | } | j d d d |  _ t	 | |  j   |  _
 d  S(   Ni   i
   R+   gMbP?R
   s
   data-prior(   R    Rt   Rn   R   R   t   eyeR   R   R!   R   R#   (   R$   Rm   Rl   t   xdR+   R   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    	(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t   TestTheilGLSc           B   s   e  Z e d     Z RS(   c      
   C   s   |  j    \ } } t |  } t j |  | d k  d } t | | d | d d d d d g } | j d  |  _ t | | d  d   d  d  f d | j   |  _ d  S(	   Ni   g      ?t   sigmaR	   i    g      ?i@ i   (	   Rn   R{   R   t   arangeR   R   R!   R   R#   (   R$   Rm   Rl   Ri   t   weightsR   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    '(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t   TestTheilLinRestrictionc           B   s   e  Z e d     Z RS(   c         C   s   |  j    \ } } | d  d   d  d  f j   } | d  d   d f c | d  d   d f 7<t | | d  d   d  d  f d d d d g g } | j d  |  _ t | |  j   |  _ i d d
 6d d 6} | j |  j  | |  _ d  S(   Ni   i   i   R+   i    ii@ g-C6?gH׊>Rs   gMb@?R8   (   g-C6?gH׊>(   gMb@?i    (	   Rn   Rv   R   R   R!   R   R#   t   updateR|   (   R$   Rm   Rl   t   x2R   R|   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    ",7

(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t   TestTheilLinRestrictionApproxc           B   s   e  Z e d     Z RS(   c         C   s  |  j    \ } } | d  d   d  d  f j   } | d  d   d f c | d  d   d f 7<t | | d  d   d  d  f d d d d g g } | j d  |  _ t | |  j   |  _ d d  l } | j |  j  } i d d	 6d d 6d d 6} | j |  | |  _ d  S(   Ni   i   i   R+   i    iid   g333333?Rd   g?R6   g{Gz?gMbP?Rs   (   g333333?i    (   g?i    (   g{Gz?gMbP?(	   Rn   Rv   R   R   R!   R   R#   R|   R   (   R$   Rm   Rl   R   R   Rv   R|   t   tol2(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0      s    ",7

(   R^   R_   R`   R0   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR      s   t   TestTheilPanelc           B   s)   e  Z e d     Z d   Z d   Z RS(   c   	      C   s   d } d } | | } d } d d l  m } | | | | d d } d | j j |  | _ d | j f GH| j   } t j | j	 d  d   d	 d   f | j
 d  d   d  f t j |  k f  } | |  _ | |  _ | |  _	 t | |  j   |  _ d  S(
   Ni,  i   i   i(   t   PanelSampleRf   iɠ i   i   (   t&   statsmodels.sandbox.panel.random_panelR   t   random_stateRg   t   group_meansRf   t   generate_panelR   R   R*   t   groupst   NoneR   t   dgpR)   R   R   RV   (	   R$   Ri   t   nobs_it   n_groupsRj   R   R   Rm   Rl   (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR0     s    
".			c      ?   C   sk  |  j  } |  j } |  j j |  j j } } t j | d  d | t j | d | d f  } t j t j	 | d | f  | f } t j	 | d  } d | d  d   | d f <d } t
 | | d | d | d | }	 |	 j   }
 t 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/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD g>  } t |
 j |  |	 j dE dF  } |	 j dE dG  } |	 j dE dH  } |	 j dE dI  } t | | dJ dK t | dL dJ dM t | dN dJ dM t | dO dJ dM t | dP dJ dM d  S(Q   Ni   g      ?iR+   R   R	   gUG4?g$?gw3?gS?d @g;ۣ@gZ8@gq?g:_@gpp@gDTק	@ge?.@g$d@g30@ga)y@gYr>	@gFbz@gSi<@g@$~@g D,(@gx@gV4JUb@g}?B@g!@g7@g>{V@g2f"@gk^4;]	@gl~4@g{CCY@g!Hc@g?gd?gpC9@gҚ|^?g6g@go&X@gcF	@gx*gs@gK@g\23y ?gW@@gwƚ@gܤ?	@g<Z@g'U<@gں'Q'{@gn@g>({*3@g &B!@gcAJ-@gƉ^@grC|@g+WOZ@g&Ϧ@geY@g9M%@g"4Ə	@gW3|UxA@g$,_ @g|]@gOyL@gF}@t   methodt   aicct   gcvt   cvRr   R1   g?g%f@g-C6?gfffff@g "@g2gf?(   R)   R*   R   R   Rj   R   R   R   t   c_t   zerosR   R   R   R    R6   t   select_pen_weight(   RA   Rm   Rl   R   Rj   t   Rgt   Rt   rt   lambdR.   t   rest   params1t   pen_weight_aicct   pen_weight_gcvt   pen_weight_cvt   pen_weight_bic(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   test_regression"  sF    		&!c         C   s  |  j  } |  j } t |  } | d } t j j d  t j j t j |   } | | } | | } d } t | |  | d  |  d  |  f  j	   }	 t | | | | d   d  |  f  j	   }
 |
 j
 |	 j
 } t | | | | d   d  |  f d t j |  d |	 j d | |	 j   } | j	 d d  } | j	 d d	  } t | | d  d   d  |  f  j	   } t | j | j d
 d t j | j
 | j
  } t | j | j | d
 d t j d d d d d d d d d d g
  } t | j | d
 d d  S(   Ni   i i
   R+   R   R	   R
   s
   data-priort   sandwichR1   g&.>gMbP?gYf{?g#|?gԒ?gKe7?gW:%?g]U?gNlp.?g:->?gˤ]w?g*A?gHz>(   R)   R*   R{   R   Re   Rf   t   permutationR   R   R   R   R   R   R6   t
   cov_paramsR    R>   R7   R   (   RA   R)   R*   Ri   t   n05t   shuffle_idxt   yst   xst   kt   res_ols0t   res_ols1t   wt   mod_1t   res_1pt   res_1st   res_olsfRI   t   bse1(    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   test_combine_subset_regressionM  s2    		


//5	+(   R^   R_   R`   R0   R   R   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyR     s   	+(   t   __doc__R   t   numpyR   t   pandasR   RY   t   numpy.testingR    t#   statsmodels.regression.linear_modelR   R   t(   statsmodels.sandbox.regression.penalizedR   t   objectR   Rc   R   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/statsmodels/regression/tests/test_theil.pyt   <module>   s    i-
