
p7]c           @   s  d  Z  d d l Z d d l 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 d l m Z d d l m Z d d l j j Z d d l j j Z d d l Z d d l j j Z e j j e j j  e!   Z" d d f d  Z# d	   Z$ d
 e% f d     YZ& d e& f d     YZ' d   Z( d   Z) e j* j+ d    Z, d   Z- d   Z. d   Z/ d   Z0 e1 d k rd d l Z e j2 e! d d d g  n  d S(   s   Tests for Regression Diagnostics and Specification Tests

Created on Thu Feb 09 13:19:47 2012

Author: Josef Perktold
License: BSD-3

currently all tests are against R

iN(   t   assert_t   assert_almost_equalt   assert_equalt   assert_allcloset   assert_array_equal(   t   OLS(   t   add_constant(   t	   macrodatai   c      	   C   sj   t  |  d | d d d | d d d | d t  |  d | d d d | d d d | d d  S(   Ni    t	   statistict   atoli
   t   rtoli   t   pvalue(   R   (   t   spt   sp_dictt   decimal(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   compare_t_est"   s    ##c          C   s  t  j d t  j }  |  d } |  d } |  d } | } t t j | | f  } t | |  j   } d t j	 t j
 |  d   } d t j	 t j
 |  d   } |  d d  }	 |  d d  }
 | } t t j | |	 f  } t t j | |
 f  } t | |  j   } t | |  j   } t j d d	 d
 g  } t j d d d d d d d d d g	  j d d d d } t j d d d d d d d d d g	  j d d d d } t d d  d! d" d# d$ d% d& d' d(  } t d d  d! d" d# d$ d% d)  } t d d  d! d" d# d$ d% d& d' d(  } t d d* d! d+ d# d, d% d- d' d(  } t j | | d. d/ } t | | d0 d< t | d d3  t d4 d5 d6 d7 d% d8 d' d9  } t d4 d: d6 d7 d% d; d' d9  } d  S(=   Nt	   as_pandast   realinvt   realgdpt   realinti  it   tbilrateg`qgA7?g.qB?g."G@g>m]Ϳg
XB@gFm]Ϳg?'!?gÅYpgXB@g;Q)5@i   t   ordert   Fg5ʥl@g|1rֿgw+gK@gs1rֿguU:?gE)gw+gK@gE)gb"6@R   gi*@t   df1ic   t   df2ib   R   g_&VF9t   distrt   fg      ?gSU@i0   i/   g<7`&9t   splitg      ?R   i   i   t
   increasingt   statgsYpM>@t   dfi   gs5?t   tgX?g?(   i   i   (   R   t   loadt   Falset   dataR   t   npt   c_R   t   fitt   difft   logt   arrayt   reshapet   dictt   smsdiat   het_goldfeldquandtR   R   (   t   dR   R   R   t   endogt   exogt   res_ols1t   gs_l_realinvt   gs_l_realgdpt   lintR   t   endoggt   exoggt   exogg2t   res_olst   res_ols2t   paramst	   cov_hac_4t
   cov_hac_10t   het_gq_greatert   het_gq_lesst   het_gq_2sidedt   het_gq_greater_2t   gqt   harvey_colliert   harvey_collier_2(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   notyet_atst)   sP    


  				!t   TestDiagnosticGc           B   s   e  Z e 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   sD  t  j   j } d t j t j | d j   } d t j t j | d j   } | d d  j } | d d  j } | } t t j | | f  } t t j | | f  } t t j |  }	 t	 | |  j
   }
 t	 | |  j
   } t	 | |	  j
   } |
 |  _ | |  _ | |  _ |  j j j |  _ |  j j j |  _ d  S(   Ni  R   R   R   iR   (   R   t   load_pandasR"   R#   R&   R'   t   valuesR   R$   R   R%   t   rest   res2t   res3t   modelR.   R/   (   t   clsR-   R1   R2   R3   R   R4   R5   R6   t   exogg3R7   R8   t   res_ols3(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   setup_classl   s"    ##			c         C   s5   t  j d d d g  } t |  j j | d d d  S(   NgF]Н"gqk3@g+ܥR   i   (   R#   R(   R   RG   R9   (   t   selfR9   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt
   test_basic   s    c      
   C   sI  |  j  } t j d d d d d d d d d g	  j d d d	 d
 } t j d d d d d d d d d g	  j d d d	 d
 } t j | d d d t } t j |  } t | | d d t | t j	 t j
 |   d d t j | d d d t } t j |  } t | | d d t | t j	 t j
 |   d d d  S(   NgSp7+?gcCԿgIqgN?glx9?gx9?gK?i   R   R   gL0@?ge7`ҿg9Dgd7`ҿgHmۺ?gvq9?g9Dgq9?gw:?t   nlagsi   t   use_correctionR   i   i
   (   RG   R#   R(   R)   t   swt   cov_hac_simpleR!   t   se_covR   t   sqrtt   diag(   RO   RG   R:   R;   t   covt   bse_hac(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_hac   s"    					%c   	   	   C   s  t  d d d d d d d d  } t  d d d d	 d d  d d  } t  d d d d
 d d! d d  } t  d d d d d d" d d  } t  d d d d d d# d d  } |  j |  j } } t j | | d d } t | | d d$ t | d d  t j | | d d d d } t | | d d% t | d d  t j | | d d d d } t | | d d& t | d d  t j | | d d d d d d } t | | d d' t | d d  d  S((   NR   g[/ ?R   g*?t
   parametersib   R   R   gP:P?gN:`?gt&?gثV?iX   iW   g?gss?i0   i/   R   g      ?R   i   iR   t   alternativet
   decreasings	   two-sidediZ   t   dropi   (   ib   ib   (   ib   ib   (   ib   ib   (   iX   iW   (   i0   i/   (   i   i   (   i   i   (   i   i   (   i   i   (   R*   R.   R/   R+   R,   R   R   (	   RO   R<   R=   t   het_gq_two_sidedt   het_gq_two_sided_01t   het_gq_two_sided_05R4   R5   R@   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_het_goldfeldquandt   s>    			c      	   C   s\   |  j  } t d d d d d d d d  } t j | j | j j  } t | | d	 d d  S(   NR   g:EY?R   g:p?R[   i   R   R   R   i   (   i   (   i   i   (   RG   R*   R+   t   het_breuschpagant   residRJ   R/   R   (   RO   RG   t   bptestt   bp(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_het_breusch_pagan   s
    	c         C   s;   |  j  } t j | j | j j  } d } t | |  d  S(   Ngpy@@g d>g-@gA_>(   gpy@@g d>g-@gA_>(   RG   R+   t	   het_whiteRd   RJ   R/   R   (   RO   RG   t   hwt	   hw_values(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_het_white   s
    	 c      	   C   s   t  d d d d d d d d  } t  d d	 d d
 d d d d  } t j |  j j d d } t j |  j j d d } t | d  | d d t | d  | d d d  S(   NR   gUz@R   g#H9?R[   i   R   t   chi2g&K!@g$q?i   t   maxlagi   R   i   (   i   (   i   (   i   i   (   i   i   (   R*   R+   t   het_archRG   Rd   R   (   RO   t
   archtest_4t   archtest_12t   at4t   at12(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_het_arch   s    		c         C   s   |  j  j } t j | d d d d  d t } | d } t j | d d d d d t } | d } t | j j | j j d d	 t | d
  | d
  d d	 t j | d d d d } t | d
  | d
  d d	 d  S(   NRm   i   t   autolagt   storeii   t   aicR   i   i   (	   RG   Rd   R+   Rn   t   Nonet   TrueR   t   resolsR9   (   RO   Rd   t   res1t   rs1RH   t   rs2RI   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_het_arch2
  s    !
!
c      	   C   s   |  j  } t d d d d d d d d	  } t d d
 d d d d d d  } t j | d d } | d | d | d | d g } t | | d d t j | d d  } t j | d d } t | | d d d  S(   NR   g WU?R   g?R[   i   i   R   R   gjk4@goH]?Rl   RQ   R   i   i   (   i   i   (   i   (   RG   R*   R+   t   acorr_breusch_godfreyR   Rw   (   RO   RG   t   breuschgodfrey_ft   breuschgodfrey_ct   bgt   bg_rt   bg2t   bg3(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_acorr_breusch_godfrey  s    	c      	   C   s   |  j  } t d d d d d d d d  } t d d	 d d
 d d d d  } t j | j d d t \ } } } } t | d | d g | d d t | d | d g | d d d  S(   NR   gl[@R   g(	f?R[   i   R   Rl   gԞ@g>t?t	   boxpierceiR   i   (   i   (   i   (   i   i   (   i   i   (   RG   R*   R+   t   acorr_ljungboxRd   Rx   R   (   RO   RG   t   ljung_box_4t   ljung_box_bp_4t   lbt   lbpvalRf   t   bppval(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_acorr_ljung_box4  s    	!c         C   s   |  j  } t d d d d d d  } t d d d d d d  } t j | j d	 t \ } } } } t | d
 | d
 g | d d t | d
 | d
 g | d d d  S(   NR   g0O_tĄI@R   gDlV?R   Rl   g@RF@gf=e?R   iR   i   (   i   i   (   i   i   (   RG   R*   R+   R   Rd   Rx   R   (   RO   RG   t   ljung_box_nonet   ljung_box_bp_noneR   R   Rf   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt    test_acorr_ljung_box_big_defaultZ  s    			$!c      	   C   s   |  j  } t d d d d d d d d  } t d d	 d d
 d d d d  } t j | j d  d t \ } } } } t | d | d g | d d t | d | d g | d d d  S(   NR   g6{:#@R   gB"3?R[   i    R   Rl   gx@g@'6$?i   R   iR   i   (   i    (   i    (   i   i   (   i   i   (   RG   R*   R+   R   Rd   Rx   R   (   RO   RG   t   ljung_box_smallt   ljung_box_bp_smallR   R   Rf   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt"   test_acorr_ljung_box_small_defaultl  s    	(!c      	   C   sk   t  d d d d d d d d  } t  d d	 d d
 d d d d  } t j |  j  } t | | d d d  S(   NR   gTƤ?R   g ?R[   i   R   R   g5?gJ(鱅?R   i   (   i   i   (   R*   R+   t   linear_harvey_collierRG   R   (   RO   RA   RB   t   hc(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_harvey_collier  s    c      	   C   s   t  d d d d d d d d	  } t  d d
 d d d d d d	  } t  d d d d d d d d	  } t  d d d d d d d d	  } t j |  j  } t | | d d t j |  j d d } t | | d d d  S(   NR   gl?R   g1A?R[   ie   ib   R   R   g *؂%?gm?gD?gF?iz   iM   gLfR?g,(g?R   i   i   t   fracg?(   ie   ib   (   ie   ib   (   iz   iM   (   ie   ib   (   i   i   (   i   i   (   R*   R+   t   linear_rainbowRG   R   (   RO   t   raintestt   raintest_center_04t   raintest_fraction_04t   raintest_order_gdpt   rb(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_rainbow  s    c         C   s   |  j  } |  j } t d d d d d d d d d	 d  } | j |  } t | d | d d d t | d | d d d t d d d d d	 d  } | j |  } t | d | d d d t | d | d d d d  S(   Nt   loglike1g-?߇t   loglike2gMo8yt	   chi2valuegK@R   gw?R   i   i   i   i    R   i   t   fvaluegEЛ@gL%'kH~?i   i   (   i   i   i   (   i   i   i   (   RG   RI   R*   t   compare_lr_testR   t   compare_f_test(   RO   RG   RI   t   lrtestt   lrtt   waldtestt   wt(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_compare_lr  s    				c         C   s  |  j  } |  j } d3 d4 g } t j | |  } t | | d d d !d d t j | |  } t | | d d d !d d d5 d6 g } t j | |  } t | | d d d !d d t j | |  } t | | d d d !d d  d7 d8 g }	 d9 d: g }
 d  S(;   Ns   M1 + fitted(M2)g)vv?gl?g""'=@g;Mǐ?t   *s   M2 + fitted(M1)g,?g?g(8@gɁ}?s   **i    i   i   R   i   i   i   s   fitted(M1) ~ M2gdg}6_0?gznN ]gI?t    s   fitted(M2) ~ M1g6
ғg{6J!?g$qJgF͘E>s   ***i   s	   M1 vs. MEi   igo I@gʛMǐ?s	   M2 vs. MEgQ~@gɁ}?s   M1 + log(fit(M1))-fit(M2)gM%lgӖAF@g	g8+Τ>s   M2 + fit(M1)-exp(fit(M2))gJLWD?go>?gO`s+@g;Xlú9(   s   M1 + fitted(M2)g)vv?gl?g""'=@g;Mǐ?R   (   s   M2 + fitted(M1)g,?g?g(8@gɁ}?s   **(   s   fitted(M1) ~ M2gdg}6_0?gznN ]gI?R   (   s   fitted(M2) ~ M1g6
ғg{6J!?g$qJgF͘E>s   ***(   s	   M1 vs. MEi   igo I@gʛMǐ?R   (   s	   M2 vs. MEi   igQ~@gɁ}?s   **(   s   M1 + log(fit(M1))-fit(M2)gM%lgӖAF@g	g8+Τ>(   s   M2 + fit(M1)-exp(fit(M2))gJLWD?go>?gO`s+@g;Xlú9(   RG   RH   R+   t	   compare_jR   t   compare_cox(   RO   RG   RH   t   jtestt   jt1t   jt2t   coxtestt   ct1t   ct2t
   encomptestt   petest(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_compare_nonnested  s4    		  	  	  	  c      	   C   sY   t  d d d d d d d d  } d } t j |  j j d	 | } t | | d
 d d  S(   NR   g{Z?R   ge/ӳ?R[   R   t   BBi   t   ddofR   i   (    (   i   i   (   R*   R+   t   breaks_cusumolsresidRG   Rd   R   (   RO   t	   cusum_olst   k_varst   cs_ols(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_cusum_ols  s
    c      	   C   sR   t  d d d d d d d d  } t j |  j  } t | d | d d	 d
 d  S(   NR   g՞g4{?R   g]Öv?R[   R   R   i    R   i   (    (   R*   R+   t   breaks_hansenRG   R   (   RO   t   breaks_nyblom_hansent   bh(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_breaks_hansen   s    c         C   s  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) 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 dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d 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  } t j |  j d d d d } t t  j | d d d  |  t | d d t  j |  d  t | d d j	 d d  d d d t  j d d d d d g  } t  j d d d d d g  } | d \ } } t | d  | d d t | d  | d d t | d | d d t | d | d d |  j j
 j } |  j j
 j } g  }	 g  }
 xg t d d  D]V } t | |  | |   j   } |
 j | j
 j | j | |   |	 j | j  qWt | d d d !|
 d d t | d d d !| d d !|
 d d t | d d d !|	 d d d  S(   Ngh|?5gClgxgS㥛gףp=
gףp=
gvg      gvg}?5^g rhg/$gˡEgRQgKg=
ףpgK7gV-/ gM"!gT㥛 g7A`PgV- gp=
ף"gPn(gw/'g r&gzGa'gA`Т&gGzT)gv)gA`b'gB`"%g`"9(g+7(g/$*g%C'gm%g rhQ$g~jt"g$"gS㥛D!gh|?5g&1g}?5^gZdg'1ZgJ+gEgS	gMbXgd;OgMbX9gL7A`gZd;Og#~j<g/$gMbXgzGgV-g㥛  gGzgtg
ףp=
gQkgT㥛 gQgˡE}gLgzG	gQg?5^I	gSg5^IgKgV-gv/g      gQgq=
ףgVg=
ףp=gy&1gI+gtVg"~jgjtg-ֿgffffff?gn?g~jt?g|?5^?g(\gEؿg%C?gh|?5?gQ@gS@g"~	@gʡE@g r@gK7A`?g9v?gV-g!rh?g=
ףp=ҿg      gI+g-g+gtVgSgy&1g7A`g!rhgZd;OgV-glgK7Agffffff	g rgng$CgL7A`gQgngSgK7Ag?gMg333333?gjt?gRQ?g'1Z@gA`"@g(\@g?5^I@gX9@g5^I@g"~@gd;O@gʡE@gSc@g(\@gV-2@g9v@gq=
ף@gZd;OM @g
ףp=
@gMb@gn!@g @gvo!@gE#@gjt"@gR!@gJ+ @gX9!@gGz!@g
ףp= @gT㥛 @gV-@gbX9H @gMbX @gffffff@gOn@g~jt @goʡ@gZd;@g@gGz@g33333s!@gK7A!@gZd;ߏ!@g33333 @gʡE"@g&1"@g{G$@g=
ףp$@g rh%@g rh%@ǧ$@gI+$@gy&1,'@g7A`&@gQ&@gOnR'@g%C%@gbX9$@gn
%@gn@$@gB`""@g+w#@g r!@gS#@gq=
ף0%@gx&1 @g%C@gfffff@t   skipi   t   alphagffffff?i   i   i   R   gWr%@R   g2*@ga+@gK]H+@g +@g6DT+@gLHC@gg
!}C@g5C@gZC@g)&oC@i   i   ii
   i   i   i    i	   (   R#   R(   R+   t   recursive_olsresidualsRG   R   t   roundR   R&   t   stdRJ   R.   R/   t   rangeR   R%   t   appendt   predictR9   (   RO   t   reccumres_standardizet   rrt   ub0t   ub1R   t   ubR.   R/   R9   t   ypredt   it   resi(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_recursive_residuals  s^    !!'#)c      	   C   s  |  j  } t d d d d d d d d  } t d d d d	 d d d d  } t d d
 d d d d d d  } t j | j  } t j | j d  } t j | j d   } t | | d d t | | d d t | d | d d d t | | d d  t d d d d d d! d d  } t d t j d t j	 d d" d d  }	 t d d d d d d# d d  }
 t j
 | j  } t | | d d$ t j
 | j d  } t t j | d   t j
 | j d   } t | |
 d d% d  S(&   NR   gԋЄ?R   gs?R[   R   t   -g;}H?gWMR`X5gh%f?g?i   i   R   i   i   R
   g|=g\?gtaw*9?g<q,O?gG\Pk?i   i   i    i   (    (    (    (   i   i   (   i   i   (   i   i   (    (    (    (   i   i   (   i   i   (   RG   R*   R+   t
   lillieforsRd   R   R   R#   t   inft   nant	   normal_adR    t   isinf(   RO   RG   t   lilliefors1t   lilliefors2t   lilliefors3t   lf1t   lf2t   lf3t   adr1t   adr2t   adr3t   ad1t   ad2t   ad3(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_normalityE  s4    	'c         C   sw  |  j  } t j |  } t j j t d d  } t | d   } t j	 |  } Wd  QXt
 t j | d  j d d  | j   d d t
 t j | d  j d d  | j d d | j \ } } t
 | | d	 d d t
 | j | d
 d d t
 | j | d d d | j \ } }	 t
 | | d d d t
 | j | d d d d d  l }
 t j j t d  } |
 j | d d } d   } t j j t d  } t j |  } t
 | j | d  d   d  d  f d d t
 | j | d  d   d f d d t
 | | d  d   d f d d t
 | | d  d   d f d d t
 | j | d  d   d f d d d  S(   Nt   resultss   influence_lsdiag_R.jsont   rs
   cov.scaledi   R   i   s   cov.unscaledt   cookst   hats   std.rest   dfitss   stud.resis    results/influence_measures_R.csvt	   index_coli    c         S   s   |  d k r d Sd S(   Nt   TRUEi   i    (    (   t   s(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   <lambda>  t    s%   results/influence_measures_bool_R.csvi   i   i   i   (   RG   t   oit   OLSInfluencet   ost   patht   joint   cur_dirt   opent   jsonR    R   R#   R(   R)   t
   cov_paramst   normalized_cov_paramst   cooks_distancet   hat_matrix_diagt   resid_studentized_internalt   dffitst   resid_studentized_externalt   pandast   read_csvt   asarrayt   dfbetast	   cov_ratio(   RO   RG   t   inflR   t   fpt   lsdiagt   c0t   c1R   t   dffthR   t   fnt   infl_rt   convt   infl_r2(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_influencey  s<    				,&##&(   t   __name__t
   __module__t   classmethodRN   RP   RZ   Rb   Rg   Rk   Rs   R}   R   R   R   R   R   R   R   R   R   R   R   R   R  (    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyRD   j   s*   			9							&				"		*			8	4t   TestDiagnosticGPandasc           B   s   e  Z e d     Z RS(   c   	      C   s_  t  j   j } d t j | d  j   | d <d t j | d  j   | d <| d j d  | d <| d	 j d  | d	 <| j   } | |  _ | d } t	 | d d g  } t	 | d d	 g  } t	 | d g  } t
 | |  j   } t
 | |  j   } t
 | |  j   } | |  _ | |  _ | |  _ |  j j j |  _ |  j j j |  _ d  S(
   Ni  R   R1   R   R2   R   i   R3   R   (   R   RE   R"   R#   R'   R&   t   shiftt   dropnaR-   R   R   R%   RG   RH   RI   RJ   R.   R/   (	   RK   R-   R4   R5   R6   RL   R7   R8   RM   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyRN     s&    !!	
			(   R  R  R  RN   (    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyR    s   c    
   	   C   s  t  j j t d  }  d d d d g } x| D]x} t  j j |  |  } t j t j |   } | j d d } | d  d   | f } t j	 t j
 | j d d f  t j | | d  f d d } | t j | t j j | | d	 d
 d  } t j | |  }	 | d k r4t |	 d d d g d d q. | d k r_t |	 d d d g d d q. | d k rt |	 d d d g d d q. t |	 d d d g d d q. Wd  S(   NR   s
   wspec1.csvs
   wspec2.csvs
   wspec3.csvs
   wspec4.csvi   i    t   axist   rcondig5^I
@gx&?i   R   i   gHzG@g~jt?i	   g rh@guV?i   gC @gFx?i   (   R   R   R   R   R#   R  t   pdR   t   shapet   concatenatet   onest   deletet   dott   linalgt   lstsqR+   t
   spec_whiteR   (
   t   resdirt   wsfilest   filet   mdlfilet   mdlt   lastcolt   dvt   designt   residst   wsres(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_spec_white  s$    !/c          C   s   t  d d d d d d  }  d  S(	   NR   gNLo?R   gTi%4?R   i   i   (   i   i   (   R*   (   t   grangertest(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyR+    s    c         C   sG  t  t j j d d   } | j d  t j j d  } t | |  j   } t j |  } t j | d d } t	 t j
 | d d  d   d f | d d  d   d f k   t	 t j
 | d d  d   d f | d d  d   d f k   t | | d  d   d f  j   } t j | d d	 | j   } | j   d  S(
   Ni
   i   i   R   g{Gz?i   i   i    g?(   R   R#   t   randomt   randnt   sumR   R%   R   t   summary_tableR    t   allt   get_influence(   t   reset_randomstatet   xt   yRG   t   out_05t   out_01RH   R  (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_outlier_influence_funcs  s    AA%c          C   s  d d l  m }  t j   j } d t j | d  j   j   } d t j | d  j   j   } | d d  } | j	 | _	 | j	 | _	 t
 d t j |  d | d	 |  } |  | d
 d d	 d g } t | |  j   } t j |  } | j   }	 t t |	 |    t j j t d d  }
 t |
 d   } t j |  } Wd  QX| j \ } } t | | d d  t | j | d d  t | j | d d  | j \ } } t | | d d  t | j | d d  d d  l  } t j j t d  } | j  | d d } d   } t j j t d  } t j! |  } t | j" | d  d   d  d  f d d t | j# | d  d   d f d d d  S(   Ni(   t	   DataFramei  R   R   R   t   constR3   t   lrealgdpt   columnsR   s   influence_lsdiag_R.jsonR   R   i   R   s   std.resR   s   stud.ress    results/influence_measures_R.csvR   i    c         S   s   |  d k r d Sd S(   NR   i   i    (    (   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyR   C  R   s%   results/influence_measures_bool_R.csvi   R   i   i   ($   R   R8  R   RE   R"   R#   R'   R&   R  t   indexR*   t	   ones_likeR   R%   R   R   t   summary_frameR    t
   isinstanceR   R   R   R   R   R   R    R   R   R   R   R   R   R   R  R  R  (   R8  R-   R1   R2   R3   R"   R/   RG   R  R   R   R  R  R  R  R   R	  R   R
  R  R  R  (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_influence_wrapped  sB    ##$				,c          C   s   t  j d  }  t  j j d  t  j j d d  } t |  |  j   } t |  d |  j   } | j   j } | j   j } t	 | | d d t  j
 d d d	 d
 d d d d d d d d d d d d d d d d g  } t | | d d d  S(   Ni   i{   i   g      ?R
   g+=g12?goT?g@0hm?g{'?gE;?g'O/?g}0M?gp*y?g/|?g%ލG?g[)Y?g1oY?gڹYQ?gOp?gbBۜp?geEt?gg|e?gt]:Z?g{u~/?gq=٥?R   i   (   R#   R  R,  t   seedR-  R   R%   R1  R  R   R(   R   (   R4  R3  Rz   RH   t   cr1t   cr2t   cr3(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_influence_dtypeN  s    c       /   C   sI  d d d d d d d d d	 d
 d d d d d d d d d d d 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/ d0 g d. d1 d2 g d. d3 d4 g d. d5 d6 g d. d7 d0 g d. d8 d9 g d. d7 d: g d. d; d< g d. d= d> g d. d1 d0 g d. d? d@ g d. d2 dA g d. d2 dB g d. dC d9 g d. dD dE g d. d2 dF g d. dG dH g d. dI dJ g d. d? dK g d. dL dM g d. dN d1 g d. dD d5 g d. d5 dO g d. dN dP g d. d8 dQ g d. dR dS g d. dT dU g d. dV dW g d. dX dX g d. dK dY g d. dZ dN g d. d[ d[ g d. d? d\ g d. d] d^ g d. d8 dZ g d. d8 d_ g d. d` d\ g d. d` dU g d. d] da g d. db dX g d. dc dd g d. da dY g d. d[ d_ g d. dF dR g d. de dW g g- } dM df d6 d2 d6 d> d: d6 dg dh di dj dB dk dl dm d2 dT dH d4 dS dF dC d` dn dG d= di d\ dN do dZ d^ do dp dq d_ d[ dr d` ds dt de dC do g- } | | |  f S(u   Nt
   accountantt   pilott	   architectt   authort   chemistt   ministert	   professort   dentistt   reportert   engineert
   undertakert   lawyert	   physicians   welfare.workert   teachert	   conductort
   contractors   factory.owners   store.managert   bankert
   bookkeepers   mail.carriers   insurance.agents   store.clerkt	   carpentert   electricians   RR.engineert	   machinists   auto.repairmant   plumbers   gas.stn.attendants
   coal.miners   streetcar.motormans   taxi.drivers   truck.drivers   machine.operatort   barbert	   bartenders   shoe.shinert   cooks
   soda.clerkt   watchmant   janitort	   policemant   waiterg      ?g      O@g     U@g      R@g      S@g     R@g      W@g     K@g     V@g      P@g      5@g      U@g     @W@g      T@g      Y@g     P@g     U@g      E@g     R@g     X@g     @X@g     D@g      H@g     V@g      A@g     J@g     F@g      N@g      L@g      F@g     S@g     T@g      =@g     Q@g      I@g      7@g     G@g     C@g     @T@g      <@g      B@g      @@g      6@g      9@g      .@g      @g      :@g      "@g      3@g      4@g      0@g      1@g      ,@g      (@g      >@g       @g     T@g      J@g      V@g     L@g     @V@g     M@g     @R@g      C@g     @@g      $@g      *@g      8@g      @g      @g      &@(    (   t   labelsR/   R.   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   get_duncan_datab  s@    	$$$$$$$$$$$$$$*!!!!	c       -   C   sB  t    \ }  } } 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) d* d+ d, d- g- } d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ g- } d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ d d d d d d d d d g- } t j |  } d | | d k <d d d d d d d d d d d d d d d d d d d d d 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- } t j | | | f } t j | d d d | d t }	 t j	 j
 |	 j | d  t j	 j |	 j j   |  t j t j |  | f  d d j   d | }
 t j d |
  j   } t j | d d d t } t
 | j | d  t | j j   |  | j d d  } | j d g d t } t
 | j | d  t | j j   |  t | j | j  | j d d d t  } t | j j   |  | j d d d t d d  } t | j j   | d   d  S(   Ngpz~	@g.[-gZԴ>Y @g^gP$W1?gH4*g6~Cg(?gAggw?g!)K?g/Ig|\gSXEQBg;2Ts?gPc>?g'<?gӈ l?gVTg(/V??gng:D?gᓭ?g)߿gk)b	Rv޿g7ʀzۿgr\xTڿgUf0ؿg?g1>P?g2u,0?g s?gEeӿgiǿgW9>??gO1:?gZ^OgذNH?gx^sg>}L/?gxY?g{Ŗlܩ?g$H?g~~.NG?gaUj?g9?g0!I?g=N_?gL?g?gLgǏ?g' ?g`F%3f?gCR?g8?g-8j"?gJ?gs?gK */'x?g۩er?gBI0?gLb&?gh\:?g	YG?gR S?g`	
?g?g4 0k?gQ?g3m-3_?gR<ao?g@Mwv?gå#?g+린,*?g-+V?gc5?Y?g`h?gלNurm?gkȓ2F?g?g-e?guLܺ?gp }?gd[?g*O ?gS]+?g ?gNBh?gi.a?gg֭L?gc7|?gk@g@g>m@gO@gfE@g5;M@g﷯@g(@g9*@g5fK,@g~0@goؾ0@g{41@gۻØ2@g"5b3@g5KF4@gG5@g;#46@g-;@g724COw;@g&2;@g1Qi;@g*;@gXKߥ<@g{a%>@gB6>@gpJ/ j?@g3kI@@gx@@glp@CA@g,nc)A@gֿz,A@gI[-C@gc'jC@gHdĪC@ghc3D@g~U<D@g5wE@g#48E@gD4=6E@g"B`E@g>-zF@gET|F@i   RK  RN  RU  s   insurance.agentRZ  s   store.clerkRT  s   factory.owners   mail.carriers   streetcar.motormanRX  s
   coal.minerR]  RW  s
   soda.clerkRJ  s   RR.engineerRL  RY  s   gas.stn.attendants   auto.repairmanR_  RV  s   machine.operatorRM  Rb  s   shoe.shiners   welfare.workerR[  RR  RG  RO  RF  RQ  RP  R\  s   store.managers   truck.driverR^  R`  Ra  RH  RS  s   taxi.driverRI  t   methodt   bRc  R   i   R;  s   y const var1 var2R<  s   y ~ const + var1 + var2 - 0t   unadj_pt	   ascendingt   cutoffg333333?(   Rd  R   R%   R#   R(   R$   R   t   outlier_testRx   t   testingR   RF   R   R<  t   tolistR  R8  t   column_stackR   t   from_formulat   sort_valuesR   (   R.   R/   Rc  t   ndarray_modt   rstudentRg  t   bonf_pt   sorted_labelsRH   RG   R"   t   res_pdt	   res_outl2t	   res_outl1t	   res_outl3t	   res_outl4(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   test_outlier_test  s    	!	t   __main__s   -vvss   -xs   --pdb(3   t   __doc__R   t   numpyR#   R   R  t   numpy.testingR    R   R   R   R   t   pytestt#   statsmodels.regression.linear_modelR   t   statsmodels.tools.toolsR   t   statsmodels.datasetsR   t%   statsmodels.stats.sandwich_covariancet   statst   sandwich_covarianceRS   t   statsmodels.stats.diagnostict
   diagnosticR+   R   t$   statsmodels.stats.outliers_influencet   outliers_influenceR   R   t   abspatht   dirnamet   __file__R   R   RC   t   objectRD   R  R*  R+  t   markt   smokeR7  R@  RE  Rd  Ry  R  t   main(    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_diagnostic.pyt   <module>   s<   (	A  N			B		'	KK