U
    Kvf                     @   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ZddlmZmZ ddlmZ ddlm  mZ ddlm  mZ ddlm  mZ ddlm Z m!Z! ddl"m#Z# dd	l$m%Z% ej&'ej&(e)Z*ej+d
ddd Z,ddddZ-dd Z.G dd dZ/G dd de/Z0dd Z1dd Z2dd Z3dd Z4ej5j6dd  Z7d!d" Z8d#d$ Z9d%d& Z:d'd( Z;d)d* Z<d+d, Z=d-d. Z>d/d0 Z?d1d2 Z@ej5Ad3d4d5gd6d7 ZBd8d9 ZCej5j6ej5Ad:d;d<gej5Ad=d>d?d@gej5AdAdBdCgej5AdDeDd4i dEeDd5i dEgdFdG ZEej5j6ej5AdHdBdCgej5AdIdd;gej5AdDeDd4i dEeDd5i dEgdJdK ZFdLdM ZGej5AdNdOdPdQgej5AdRdeHdSejIjJdSdSdCdTdUdUdVggdWdX ZKej5AdYddZd[gd\d] ZLd^d_ ZMd`da ZNej5j6dbdc ZOdS )ezTests 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

    N)assert_assert_allcloseassert_almost_equalassert_array_equalassert_equal)assert_frame_equal)	macrodatasunspots)OLS)Bunchadd_constant)AutoReg)ARIMAmodule)Zscopec                  C   s`   t jd} | d}| d}|d| }t |}tjt j|||f ddddd	gd
}|S )NiX[  r         ycx1x2x3columns)	nprandomRandomStatestandard_normalsum	ones_likepd	DataFramec_)rsexr   r   data r(   K/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_diagnostic.pydiagnostic_data'   s    


$r*      r,   c                 C   s\   t | d |d d|d   d|d   d t | d |d d|d   d|d   d d S )Nr   	statistic
   )atolrtolr   pvalue)r   )spZsp_dictdecimalr(   r(   r)   compare_to_reference3   s    r4   c                  C   sz   t  j} | d }| d }| d }|}ttj||f }tdddddd	}tj||d
d}t	||dd t
|d d d S )Nrealinvrealgdprealintgi*@c   b   g_&VF9f)r-   Zdf1Zdf2r1   distr      ?splitr+   r3   
increasing)r   loadr'   r   r   r#   dictsmsdiahet_goldfeldquandtr4   r   )dr5   r6   r7   endogexoghet_gq_greatergqr(   r(   r)   test_gqB   s     
rK   c                   @   s,  e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejd-ejejgd.d/ Z ejd-ejejgd0d1 Z!d2d3 Z"d4d5 Z#d6d7 Z$d8d9 Z%d:d; Z&d<d= Z'd>S )?TestDiagnosticGc                 C   s   t  j}dtt|d j }dtt|d j }|d d d j}|d d d j}|}ttj||f }ttj||f }ttj| }	t	||
 }
t	||
 }t	||	
 }|
| _|| _|| _| jjj| _| jjj| _d S )N  r5   r6   r7   r@   tbilrate)r   load_pandasr'   r   difflogvaluesr   r#   r
   fitresres2res3modelrG   rH   )clsrF   gs_l_realinvgs_l_realgdplintrN   endoggexoggexogg2exogg3res_olsres_ols2res_ols3r(   r(   r)   setup_classZ   s"    
zTestDiagnosticG.setup_classc                 C   s&   t dddg}t| jj|dd d S )NgF]Н"gqk3@g+ܥr,   r?   )r   arrayr   rT   params)selfre   r(   r(   r)   
test_basics   s    zTestDiagnosticG.test_basicc                 C   s   | j }tdddddddddg	jdd	d
}tdddddddddg	jdd	d
}tj|ddd}t|}t||dd t|tt	|dd tj|ddd}t|}t||dd t|tt	|dd d S )NgSp7+?gcCԿgIqgN?glx9?gx9?gK?)r   r   F)ordergL0@?ge7`ҿg9Dgd7`ҿgHmۺ?gvq9?g9Dgq9?gw:?   F)nlagsZuse_correctionr,   r?   r.   )
rT   r   rd   reshapeswZcov_hac_simpleZse_covr   sqrtZdiag)rf   rT   Z	cov_hac_4Z
cov_hac_10covZbse_hacr(   r(   r)   test_hac|   sN      

zTestDiagnosticG.test_hacc                 C   s
  t ddddd}t ddddd}t ddddd}t dd	d
dd}| j| j }}tj||dd}t||dd t|d d tj||ddd}t||dd t|d d tj||ddd}t||dd t|d d tj||dddd}t||dd t|d d d S )Ng[/ ?g*?)r9   r9   r:   r-   r1   
parametersr;   gP:P?gN:`?gt&?gثV?)X   W   r<   r=   r+   r?   r@   rA   Z
decreasing)r>   alternativez	two-sidedZ      )r>   Zdropru   )rC   rG   rH   rD   rE   r4   r   )rf   rI   Zhet_gq_lessZhet_gq_two_sidedZhet_gq_two_sided_01r\   r]   rJ   r(   r(   r)   test_het_goldfeldquandt   sj    			          z'TestDiagnosticG.test_het_goldfeldquandtc                 C   s:   | j }tddddd}t|j|jj}t||dd d S )Ng:EY?g:p?   r:   rq   r+   r?   rT   rC   rD   het_breuschpaganresidrW   rH   r4   rf   rT   ZbptestZbpr(   r(   r)   test_het_breusch_pagan   s    z&TestDiagnosticG.test_het_breusch_paganc              	   C   s   | j }t|jjd d df }tjtdd t	|j
| W 5 Q R X t|}tjtdd t	|j
| W 5 Q R X t|jj }d|d d df< tjtdd t	|j
| W 5 Q R X d S )Nr@   zThe Breusch-Paganmatchr   )rT   r   asarrayrW   rH   pytestraises
ValueErrorrD   r|   r}   r    copy)rf   rT   r&   r(   r(   r)   test_het_breusch_pagan_1d_err   s    
z-TestDiagnosticG.test_het_breusch_pagan_1d_errc                 C   s>   | j }tddddd}tj|j|jjdd}t||dd	 d S )
Ng }ٲ?gZdK?ry   r:   rq   F)Zrobustr+   r?   r{   r~   r(   r(   r)    test_het_breusch_pagan_nonrobust  s    z0TestDiagnosticG.test_het_breusch_pagan_nonrobustc                 C   s*   | j }t|j|jj}d}t|| d S )N)gpy@@g d>g-@gA_>)rT   rD   	het_whiter}   rW   rH   r   )rf   rT   ZhwZ	hw_valuesr(   r(   r)   test_het_white  s    zTestDiagnosticG.test_het_whitec              	   C   sF   | j }tjtdd( t|j|jjd d d df  W 5 Q R X d S )NzWhite's heteroskedasticityr   r   )	rT   r   r   r   rD   r   r}   rW   rH   rf   rT   r(   r(   r)   test_het_white_error  s    z$TestDiagnosticG.test_het_white_errorc                 C   st   t ddddd}t ddddd}tj| jjd	d
}tj| jjdd
}t|d d |dd t|d d |dd d S )NgUz@g#H9?rj   chi2rq   g&K!@g$q?)r,   rj   rk   r,   rz   )r,      r?   )rC   rD   het_archrT   r}   r4   )rf   Z
archtest_4Zarchtest_12Zat4Zat12r(   r(   r)   test_het_arch$  s     	zTestDiagnosticG.test_het_archc                 C   s   | j j}tj|ddd}|d }tj|ddd}|d }t|jj|jjdd t|d d |d d dd tj|dd}t|d d |d d dd d S )	N   T)rk   storer@   r,   r?   rj   r   )rT   r}   rD   r   r   Zresolsre   )rf   r}   res1Zrs1rU   Zrs2rV   r(   r(   r)   test_het_arch2>  s    zTestDiagnosticG.test_het_arch2c                 C   s   | j }tddddd}t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 )Ng WU?g?)rj      r:   rq   gjk4@goH]?r   r   rj   r   r-   r1      r?   r.   r,   )rT   rC   rD   acorr_breusch_godfreyr   )rf   rT   Zbreuschgodfrey_fZbreuschgodfrey_cbgZbg_rZbg2Zbg3r(   r(   r)   test_acorr_breusch_godfreyO  s.    z*TestDiagnosticG.test_acorr_breusch_godfreyc              	   C   s8   t tdd}tjtdd t| W 5 Q R X d S )Nd   rz   )r}   zModel resid must be a 1d arrayr   )r   r   emptyr   r   r   rD   r   r   r(   r(   r)   #test_acorr_breusch_godfrey_multidimt  s    z3TestDiagnosticG.test_acorr_breusch_godfrey_multidimc                 C   s2   t  jd }t|ddd }tj|dd d S )NSUNACTIVITY)r   r   r   n)ri   Ztrendr   r   )r	   rO   r'   r   rS   rD   r   )rf   r'   rT   r(   r(   r)    test_acorr_breusch_godfrey_exogsy  s    z0TestDiagnosticG.test_acorr_breusch_godfrey_exogsc                 C   sx   | j }tddddd}tddddd}tj|jdd	d
}t|jd |jd g|dd t|jd |jd g|dd d S )Ngl[@g(	f?r   r   rq   gԞ@g>t?rj   T	boxpierce)rj   lb_stat)rj   	lb_pvaluer+   r?   )rj   bp_stat)rj   	bp_pvalue)rT   rC   rD   acorr_ljungboxr}   r4   loc)rf   rT   Zljung_box_4Zljung_box_bp_4dfr(   r(   r)   test_acorr_ljung_box~  s0    	z$TestDiagnosticG.test_acorr_ljung_boxc                 C   s   | j }tdddd}tdddd}td|jjd d	 d	 }tj|jd
|d}|j }t	|j
|df |j
|df g|dd t	|j
|df |j
|df g|dd d S )Ng0O_tĄI@gDlV?r   )r-   r1   r;   g@RF@gf=e?(   r   rz   Tr   lagsr   r   r+   r?   r   r   )rT   rC   minr}   shaperD   r   indexmaxr4   r   )rf   rT   Zljung_box_noneZljung_box_bp_noner   r   idxr(   r(   r)    test_acorr_ljung_box_big_default  s0        
z0TestDiagnosticG.test_acorr_ljung_box_big_defaultc                 C   s   | j }tddddd}tddddd}t|jtjrD|jd d }n|jjd d }tj|d	d
d}|j	
 }t|j|df |j|df g|dd t|j|df |j|df g|dd d S )Ng6{:#@gB"3?)r   r   rq   gx@g@'6$?   Tr   r   r   r   r+   r?   r   r   )rT   rC   
isinstancer}   r   ndarrayilocrD   r   r   r   r4   r   )rf   rT   Zljung_box_smallZljung_box_bp_smallr}   r   r   r(   r(   r)   "test_acorr_ljung_box_small_default  s@    	  
z2TestDiagnosticG.test_acorr_ljung_box_small_defaultc                 C   s  t jd}|d}|d}t |}|d |d< tddD ]0}d||d   d||d    ||  ||< q@|dd  }d	dd
gdddgdddgg}dddgdddgdddgg}t|d}	t|d}
tdD ]\}}|	j	| }t
|| d |j	d dd t
|| d |j	d dd |
j	| }t
|| d |j	d dd t
|| d |j	d dd qtj|ddd}t
|j	d d dd t
|j	d! d"dd tj|dddd#}t
|j	d! d$dd d S )%Ni? r      r   r   r<   皙?ig2U0*?g1%?gu@r   g,eX?gjt%@r.   g`vOj?g @g<?g]m{@gX9v?gMO @g3?)r   r   r.   r   gMbP?r0   rz   r   Tr   )r.   r   gm@)r.   r   g r?)r   model_dfgo?)r   r   r   r   Z
zeros_likerangerD   r   	enumerater   r   )rf   reset_randomstater$   y1r%   y2iZr_results_y1_lbZr_results_y2_lbZres_y1Zres_y2r   rowrT   r(   r(   r)   test_acorr_ljung_box_against_r  s\    


.

  
  

  
  z.TestDiagnosticG.test_acorr_ljung_box_against_rc                 C   sV   t ddddd}t| j}t||dd tj| jdd	}t|d
 |d
 rRtd S )NgTƤ?g ?   trq   r+   r?      )skipr   )rC   rD   linear_harvey_collierrT   r4   r   ZallcloseAssertionError)rf   Zharvey_collierZhcZhc_skipr(   r(   r)   test_harvey_collier   s    z#TestDiagnosticG.test_harvey_collierc                 C   s\   t ddddd}t ddddd}t| j}t||d	d
 tj| jdd}t||d	d
 d S )Ngl?g1A?)e   r9   r:   rq   gD?gF?)z   M   r+   r?   r   )frac)rC   rD   linear_rainbowrT   r4   )rf   ZraintestZraintest_fraction_04rbr(   r(   r)   test_rainbow/  s     	zTestDiagnosticG.test_rainbowc                 C   s   | j }| j}tdddddd}||}t|d |d d	d
 t|d |d d	d
 tdddd}||}t|d |d d	d
 t|d |d d	d
 d S )Ng-?߇gMo8ygK@gw?)rj   r   r   )Zloglike1Zloglike2	chi2valuer1   r   r   r   r   r?   r   r1   gEЛ@gL%'kH~?)      r   fvaluer1   r   r   )rT   rV   rC   Zcompare_lr_testr   Zcompare_f_test)rf   rT   rV   ZlrtestZlrtZwaldtestwtr(   r(   r)   test_compare_lrH  s(    

zTestDiagnosticG.test_compare_lrc                 C   sd   | j }| j}ddg}t||}t||d dd dd t||}t||d dd dd d S )	N)zM1 + fitted(M2)g)vv?gl?g""'=@g;Mǐ?*)zM2 + fitted(M1)g,?g?g(8@gɁ}?z**r   r   r   r,   r?   r   )rT   rU   rD   	compare_jr   )rf   rT   rU   ZjtestZjt1Zjt2r(   r(   r)   test_compare_je  s    zTestDiagnosticG.test_compare_jcompc              	   C   s\   |}t |j|ddg  }t |j|ddg  }tjtdd ||| W 5 Q R X d S )Nr   r   r   zendogenous variablesr   )r
   r   rS   r   r   r   r   rf   r   r*   r'   r   rU   r(   r(   r)   test_compare_error  s
    z"TestDiagnosticG.test_compare_errorc              	   C   s   |}t |j|ddg  }t |j|dddg  }tjtdd ||| W 5 Q R X tjtdd ||| W 5 Q R X d S )Nr   r   r   The exog in results_xr   )r
   r   rS   r   r   r   r   r(   r(   r)   test_compare_nested  s    z#TestDiagnosticG.test_compare_nestedc                 C   s   | j }| j}ddg}t||}t||d dd dd t||}t||d dd dd tj||d	d
\}}}t|tjstd S )N)zfitted(M1) ~ M2gdg}6_0?gznN ]gI? )zfitted(M2) ~ M1g6
ғg{6J!?g$qJgF͘E>z***r   r   r   r,   r?   r   T)r   )rT   rU   rD   compare_coxr   r   ZResultsStorer   )rf   rT   rU   ZcoxtestZct1Zct2_r   r(   r(   r)   test_compare_cox  s    z TestDiagnosticG.test_compare_coxc                 C   s8   t ddddd}d}tj| jj|d}t||dd	 d S )
Ng{Z?ge/ӳ?r(   BBrq   r   ddofr+   r?   )rC   rD   breaks_cusumolsresidrT   r}   r4   )rf   Z	cusum_olsZk_varsZcs_olsr(   r(   r)   test_cusum_ols  s    zTestDiagnosticG.test_cusum_olsc                 C   s6   t ddddd}t| j}t|d |d dd	 d S )
Ng՞g4{?g]Öv?r(   r   rq   r   r-   r,   r?   )rC   rD   breaks_hansenrT   r   )rf   Zbreaks_nyblom_hansenZbhr(   r(   r)   test_breaks_hansen  s      z"TestDiagnosticG.test_breaks_hansenc                 C   s  t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddgǡ}tj| jdddɍ}tt |d dd  dǡ| t|d dd  t |dǃ t|d dd  j	dd͍dddύ t 
| jjjjd }tj| jdd|dэ}t|d |d ddӍ t dddddg}t dddddg}|d \}}t|d dʅ |ddύ t|d dʅ | ddύ t|dd  |ddύ t|dd  | ddύ | jjj}	| jjj}
g }g }tddD ]J}t|	d | |
d |  }||j|j|
|  ||j qt|d dd |ddύ t|d dd |	dd | ddύ t|d dd |ddύ 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@r   gffffff?)r   alphar   r   rj   r   gWr%@r?   r   )r   r   order_bygư>r/   g2*@ga+@gK]H+@g +@g6DT+@gLHC@gg
!}C@g5C@gZC@g)&oC@      r.   rz   r,   	   )r   rd   rD   recursive_olsresidualsrT   r   roundr   rP   ZstdarangerW   rG   r   r   rH   r   r
   rS   appendZpredictre   )rf   Zreccumres_standardizerrri   Zrr_orderZub0Zub1ZlbZubrG   rH   re   Zypredr   Zresir(   r(   r)   test_recursive_residuals  s     M "   

&z(TestDiagnosticG.test_recursive_residualsc                 C   sN  | j }tddddd}tddddd}tdd	ddd}tj|jd
d}tj|jd d
d}t|jtjrx|jd d }n|jjd d }tj|d
d}t	||dd t	||dd t
|d |d dd t	||dd tddddd}	tddddd}
t|j}t	||	dd t|jd }tt|d  t|}t	||
dd d S )NgԋЄ?gs?r(   -rq   g;}H?gWMR`X5gh%f?gw)?Zapprox)Z
pvalmethodrz   r   r+   r?   r   r1   g|=r   )r,   r   g\?gtaw*9?g<q,O?gG\Pk?)r   r   r   )r   r,   )rT   rC   rD   Z
lillieforsr}   r   r   r   r   r4   r   Z	normal_adr   isinf)rf   rT   Zlilliefors1Zlilliefors2Zlilliefors3Zlf1Zlf2r}   Zlf3Zadr1Zadr3Zad1Zad2Zad3r(   r(   r)   test_normality  sf    		  
zTestDiagnosticG.test_normalityc              	   C   s  | j }t|}tjtdd}t|ddd}t	|}W 5 Q R X t
t|d dd| dd	 t
t|d
 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	 tjtd}
tj|
dd}t|}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 )Nresultsinfluence_lsdiag_R.jsonrutf-8encodingz
cov.scaledr   r,   r?   zcov.unscaledcookshatstd.resdfitsstud.res results/influence_measures_R.csvr   Z	index_colrj   r   r   )rT   oiOLSInfluenceospathjoincur_diropenjsonrB   r   r   rd   rl   Z
cov_paramsZnormalized_cov_paramscooks_distancehat_matrix_diagresid_studentized_internaldffitsresid_studentized_externalr!   read_csvr   dfbetas	cov_ratio)rf   rT   inflr  fplsdiagc0c1r  dffthfninfl_rinfl_r2r(   r(   r)   test_influence  sL    

  
  
 zTestDiagnosticG.test_influenceN)(__name__
__module____qualname__classmethodrc   rg   rp   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizerD   r   r   r   r   r   r   r   r   r   r%  r(   r(   r(   r)   rL   Y   sD   
	-A%0'/

	  vKrL   c                   @   s   e Zd Zedd ZdS )TestDiagnosticGPandasc           	      C   s   t  j}dt|d   |d< dt|d   |d< |d d|d< |d	 d|d	< | }|| _|d }t	|ddg }t	|dd	g }t	|dg }t
|| }t
|| }t
|| }|| _|| _|| _| jjj| _| jjj| _d S )
NrM   r5   rY   r6   rZ   r7   r   r[   rN   )r   rO   r'   r   rQ   rP   shiftdropnarF   r   r
   rS   rT   rU   rV   rW   rG   rH   )	rX   rF   r\   r]   r^   r_   r`   ra   rb   r(   r(   r)   rc   U  s&    
z!TestDiagnosticGPandas.setup_classN)r&  r'  r(  r)  rc   r(   r(   r(   r)   r,  T  s   r,  c            
   
   C   s0  t jtd} ddddg}|D ]
}t j| |}tt|}|jd d }|d d |f }tj	t
|jd dft||dfdd}|t|tjj||d	d
d  }t||}	|dkrt|	dddgdd q|dkrt|	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d S )Nr   z
wspec1.csvz
wspec2.csvz
wspec3.csvz
wspec4.csvr   r   )Zaxisr@   )Zrcondg5^I
@gx&?r   r   r?   gHzG@g~jt?r   g rh@guV?r   gC @gFx?r   )r  r  r  r  r   r   r!   r  r   ZconcatenateonesdeletedotZlinalgZlstsqrD   
spec_whiter   )
ZresdirZwsfilesfileZmdlfileZmdlZlastcolZdvZdesignZresidsZwsresr(   r(   r)   test_spec_whiteq  s(    
  "
r4  c              	   C   sp   t jtdd" ttjdtjd W 5 Q R X t jtdd" ttjdtjd W 5 Q R X d S )NzWhite's specification test r   r   )r   r   r   )r   r   r   rD   r2  r   r   r   )r   r(   r(   r)   test_spec_white_error  s    
 

 
r5  c                 C   s   t jd}tt jd}t|| }t|j|}t 	||d d dd f d g}t|j| }|j
|jd  }t|d | d S )Nr   r   r   rz   r   )r   r   r   r   r
   rS   rD   	linear_lmr}   hstackZrsquaredr   r   )r   rG   rH   rT   Zlm_resaugZres_augstatr(   r(   r)   test_linear_lm_direct  s    "r:  c                   C   s   t dddd d S )NgNLo?gTi%4?)r      r   )rC   r(   r(   r(   r)   grangertest  s    r<  c                 C   s   t tjdd}|dtjd }t|| }t|}tj|dd}t	t
|d d d df |d d d df k t	t
|d d d df |d d d df k t||d d df  }tj|d	d | }|  d S )
Nr.   rz   r   g{Gz?)r   r   r   r   g?)r   r   r   randnr   r
   rS   r  Zsummary_tabler   allget_influence)r   r&   r   rT   Zout_05Zout_01rU   r  r(   r(   r)   test_outlier_influence_funcs  s    
22r@  c               	   C   s  ddl m}  t j}dt|d    }dt|d    }|d d d }|j	|_	|j	|_	t
t|||d}| |d	d
dgd}t|| }t|}| }	tt|	|  tjtdd}
t|
ddd}t|}W 5 Q R X |j\}}t||d d t|j|d d t|j|d d |j\}}t||d d t|j|d d tjtd}t j!|dd}t"|}t|j#|d d d df dd t|j$|d d df dd d S )Nr   )r"   rM   r5   r6   r7   r@   )constr[   lrealgdprA  rB  r[   r   r   r   r  r  r  r  r,   r  r  r  r	  r
  r  r   r?   rj   )%pandasr"   r   rO   r'   r   rQ   rP   r.  r   rC   r    r
   rS   r  r  Zsummary_framer   r   r  r  r  r  r  r  rB   r  r   r  r  r  r  r!   r  r   r  r  )r"   rF   rY   rZ   r[   r'   rH   rT   r  r   r  r  r  r  r   r  r!  r"  r#  r$  r(   r(   r)   test_influence_wrapped  s@    
	


  
 rD  c                  C   s   t d} t jd t jdd}t| | }t| d | }| j}| j}t	||dd t 
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 )Nr   {   r         ?g+=r   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?   )r   r/  r   seedr=  r
   rS   r?  r  r   rd   r   )r   r&   r   rU   Zcr1Zcr2Zcr3r(   r(   r)   test_influence_dtype  s@    


rI  c               /   C   s2  ddddddddd	d
ddddddddddd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/d0gd.d1d2gd.d3d4gd.d5d6gd.d7d0gd.d8d9gd.d7d:gd.d;d<gd.d=d>gd.d1d0gd.d?d@gd.d2dAgd.d2dBgd.dCd9gd.dDdEgd.d2dFgd.dGdHgd.dIdJgd.d?dKgd.dLdMgd.dNd1gd.dDd5gd.d5dOgd.dNdPgd.d8dQgd.dRdSgd.dTdUgd.dVdWgd.dXdXgd.dKdYgd.dZdNgd.d[d[gd.d?d\gd.d]d^gd.d8dZgd.d8d_gd.d`d\gd.d`dUgd.d]dagd.dbdXgd.dcddgd.dadYgd.d[d_gd.dFdRgd.dedWgg-}dMdfd6d2d6d>d:d6dgdhdidjdBdkdldmd2dTdHd4dSdFdCd`dndGd=did\dNdodZd^dodpdqd_d[drd`dsdtdedCdog-}||| fS )uN
accountantpilot	architectauthorchemistminister	professordentistreporterengineer
undertakerlawyer	physicianwelfare.workerteacher	conductor
contractorfactory.ownerstore.managerbanker
bookkeepermail.carrierinsurance.agentstore.clerk	carpenterelectricianRR.engineer	machinistauto.repairmanplumbergas.stn.attendant
coal.minerstreetcar.motormantaxi.drivertruck.drivermachine.operatorbarber	bartendershoe.shinercook
soda.clerkwatchmanjanitor	policemanwaiterrF  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      &@r(   )labelsrH   rG   r(   r(   r)   get_duncan_data%  s   100rx  c               -   C   s  t  \} }}t| | }ddddddddd	d
ddddddddddd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/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZg-}d[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddg-}t|}d||dk< dddddddddddddddddddddddddddddddddddddddddddddg-}tj|||f }tj|d|dd}	tj	|	j
|d tj|	j | tjt| |fd |d}
td|
 }tj|ddd}t	|j
|d t|j | |jdd}|jdgdd}t	|j
|d t|j | t|j|j |jddd}t|j | |jdddd}t|j |d 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@r   rO  rR  rZ  r`  re  ra  rY  r[  r_  rj  rb  ri  ro  r^  rr  rN  rd  rP  rc  rh  rf  rs  r]  rm  rQ  rv  rp  rW  rg  rV  rK  rS  rJ  rU  rT  rn  r\  rl  rq  rt  ru  rL  rX  rk  rM  bT)methodrw  ri   r   zy const var1 var2)r   r   zy ~ const + var1 + var2 - 0)rz  ri   )rz  unadj_p)Z	ascendingg333333?)rz  ri   cutoff)rx  r
   rS   r   rd   r#   r  Zoutlier_testZtestingr   rR   r   r   tolistr!   r"   Zcolumn_stackr>   Zfrom_formulaZsort_valuesr   )rG   rH   rw  Zndarray_modZrstudentr{  Zbonf_pZsorted_labelsrU   rT   r'   Zres_pdZ	res_outl2Z	res_outl1Z	res_outl3Z	res_outl4r(   r(   r)   test_outlier_test  s   00/
0 r~  c                  C   s   t  jd } t| ddd }|j}tj|dd}tj|ddd}t|j	d d df |j	d d df  t
t
|j	d dd	f stt
|j	dd d	f |j	dd d	f kstd S )
Nr   rj   FZ	old_namesr.   r   )r   r   r   r   )r	   rO   r'   r   rS   r}   rD   r   r   r   r   r>  isnanr   )r'   rT   r}   r   rU   r(   r(   r)   test_ljungbox_dof_adj  s    &"r  c                 C   s   t  jd }t|ddd }|j}tj|dd}tj|ddd}t|j	d d df |j	d d df  |j
d d	ks|t|j
d d	ksttt|j	d dd	f stt|j	dd d	f |j	dd d	f kstd S )
Nr   rj   Fr  Tauto_lag)r   r  r   r   )r	   rO   r'   r   rS   r}   rD   r   r   r   r   r   r   r>  r  )r   r'   rT   r}   r   rU   r(   r(   r)    test_ljungbox_auto_lag_selection  s    &"r  c                 C   s0   t jd}tj|dd}|jd dks,td S )N  Tr  r   r   )r   r   r=  rD   r   r   r   )r   r'   rT   r(   r(   r)   !test_ljungbox_auto_lag_whitenoise  s    r  c               	   C   s   t  jd } tjtdd tj| dd W 5 Q R X tjtdd tj| ddd W 5 Q R X tjtdd tj| dd	d W 5 Q R X t|  tj| d
d}t|t	j
std S )Nr   zmodel_df mustr   r@   )r   zperiod mustr   )r   periodr.   r  )r	   rO   r'   r   r   r   rD   r   r   r!   r"   r   )r'   retr(   r(   r)   test_ljungbox_errors_warnings  s    
r  c                  C   sN   t  jd } t| ddd }tj|jdd}tj|jdd}t|| d S )	Nr   rj   Fr  r   )r     r  )	r	   rO   r'   r   rS   rD   r   r}   r   )r'   Zar_resrT   rU   r(   r(   r)   test_ljungbox_period  s
    r  cov_typeZ	nonrobustZHC0c              	   C   s  t jd}t jd}t jd}t jd}|t d | }t |d d d df |g}t ||g}t|| }	t|| }
tj|	|
| d}t|t ||d d dd f |gj| d}t 	d}t 
d|d d d	d f< |j|d
d
d}tt |jtt |jt|jt|jf}tt |jd |dd t|t ||gj| d}t 	d}t 
d|d d dd f< |j|d
d
d}tt |jtt |jt|jt|jf}tt |jd |dd d S )Nr   rz   r   r   r   rz   r   r   )r  )rj   r   rj   T)use_fZscalarr&   g:0yE>r   )rz   r   rz   r  z)r   r   r   r/  r7  r
   rS   rD   compare_encompassingzerosZeyeZ	wald_testfloatZsqueezer-   r1   intZdf_numZdf_denomr   r   r   )r  r   r&   r%   Zx_extraz_extrar   r   Zz1r   rU   r   Zdirect1Zr1Zdirect_test_1expectedZdirect2Zr2Zdirect_test_2r(   r(   r)   test_encompasing_direct  s<    .

r  c              	   C   s   t jd}t jd}t jd}|t d | }t ||g}t|| }t|| }tjt	dd t
|| W 5 Q R X tjtdd t
|d W 5 Q R X tjtd	d t
d
d W 5 Q R X d S )Nr  r  r   r  r   r   z!results_z must come from a linearrz   z!results_x must come from a linearrj   )r   r   r   r/  r7  r
   rS   r   r   r   rD   r  	TypeError)r   r&   r%   r  r   r  r   rU   r(   r(   r)   test_encompasing_error  s    r  powerrz   r   	test_typefittedrH   princompr  TFro   )r  Z
cov_kwargsc           	      C   s   t tjd}tjd}t||d d dd f d g}|td | }t||d d d df  }tj	|f| ||d| d S )N)r  r   )r  r   r   rz   )r   r   rj   )r  r  r  )
r   r   r   r   r7  r/  r
   rS   rD   linear_reset)	r  r  r  ro   r   r&   r%   r   rT   r(   r(   r)   test_reset_smoke
  s    "  r  r   r   c                 C   sF   t jd}tj|fd| |d| tj|fd | d|d| d S )N   r   rk   r   r   r,   )rk   r   r  r   r   r   r   rD   acorr_lm)r   r   ro   r   r%   r(   r(   r)   test_acorr_lm_smoke   s    r  c                 C   s"   t jd}tj|dddd d S )Nr  r   Fr   r  r  )r   r%   r(   r(   r)   test_acorr_lm_smoke_no_autolag1  s    r  r   g      ?r<   g      ?r   r   )sizereplacex0r   c                 C   sj   t tjd}t jtjddd tdD d}|td | }t|| }t	j
|| |d d S )	Nr  r   c                 S   s   g | ]}d  |qS zx{0}format.0r   r(   r(   r)   
<listcomp>E  s     z/test_rainbow_smoke_order_by.<locals>.<listcomp>r   r   r   r   )r   r   r!   r"   r   r   r   r   r/  r
   rS   rD   r   )r   r   r   r%   r&   r   rT   r(   r(   r)   test_rainbow_smoke_order_by6  s    
r  centergQ?i,  c                 C   sj   t tjd}t jtjddd tdD d}|td | }t|| }t	j
|d| d	 d S )
Nr  r   c                 S   s   g | ]}d  |qS r  r  r  r(   r(   r)   r  Q  s     z/test_rainbow_smoke_centered.<locals>.<listcomp>r   r   r  T)Zuse_distancer  r  )r  r   r%   r&   r   rT   r(   r(   r)   test_rainbow_smoke_centeredL  s    
r  c              	   C   s   t tjd}t jtjddd tdD d}|td | }t|| }t	j
tdd	 tj|d
d W 5 Q R X tt|t| }t	j
tdd	 tj|dd W 5 Q R X d S )Nr  r   c                 S   s   g | ]}d  |qS r  r  r  r(   r(   r)   r  \  s     z*test_rainbow_exception.<locals>.<listcomp>r   r   r  zorder_by must containr   Zx5r   )r  )r!   r"   r   r   r   r   r/  r
   rS   r   r   r  rD   r   r   )r   r%   r&   r   rT   r(   r(   r)   test_rainbow_exceptionX  s    
r  c              	   C   s^   t jd}t jd}|d d |d d< tjtdd tt||	  W 5 Q R X d S )Nr.   )r.   r   r   r   zThe initial regressor matrix,r   )
r   r   r   r   r   r   rD   r   r
   rS   )r   r   r&   r(   r(   r)   test_small_skipg  s
    r  c                 C   s  d}t tj|tj|tj|d}|d t|d  }}t|d t|dg  }t|d t|ddg  }t|d t|dg  }t	| tj	|dd tj	|dd tj	|d	d t
|| t|j| t|j| t|j t| t| t| t|j| t| t|j t|j t| t|| t|| t|| t| tj|t|jd
 d ddd t|j| d S )Nr   )r   r&   r  r   r&   r  r  )r  rH   r  r   r   r@   r  )r!   r"   r   r   Zrandr   r
   rS   rD   r  rE   r|   r}   r   r   r   r   r   r6  r   r  r   r   r   r  r   r   r   r   r2  )r   r   r   r   r&   rT   Z	res_largeZ	res_otherr(   r(   r)   test_diagnostics_pandas  sH    









 r  )r+   )P__doc__r  r  Znumpyr   Znumpy.testingr   r   r   r   r   rC  r!   Zpandas.testingr   r   Zstatsmodels.datasetsr   r	   Z#statsmodels.regression.linear_modelr
   Zstatsmodels.stats.diagnosticstatsZ
diagnosticrD   Z$statsmodels.stats.outliers_influenceZoutliers_influencer  Z%statsmodels.stats.sandwich_covarianceZsandwich_covariancerm   Zstatsmodels.tools.toolsr   r   Zstatsmodels.tsa.ar_modelr   Zstatsmodels.tsa.arima.modelr   r  abspathdirname__file__r  Zfixturer*   r4   rK   rL   r,  r4  r5  r:  r<  r*  Zsmoker@  rD  rI  rx  r~  r  r  r  r  r  r+  r  r  rC   r  r  r  r   r   choicer  r  r  r  r  r(   r(   r(   r)   <module>   s   



        
>'  d
%





B