U
    md                     @   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,dbd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 ZNdS )czTests 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)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)   `/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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    r5   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df2r2   distr      ?splitr,   r4   
increasing)r   loadr(   r   r   r$   dictsmsdiahet_goldfeldquandtr5   r   )dr6   r7   r8   endogexoghet_gq_greatergqr)   r)   r*   test_gqB   s     
rL   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  r6   r7   r8   rA   tbilrate)r   load_pandasr(   r   difflogvaluesr   r$   r
   fitresres2res3modelrH   rI   )clsrG   gs_l_realinvgs_l_realgdplintrO   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   rU   params)selfrf   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/   )
rU   r   re   reshapeswZcov_hac_simpleZse_covr   sqrtZdiag)rg   rU   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*?)r:   r:   r;   r.   r2   
parametersr<   gP:P?gN:`?gt&?gثV?)X   W   r=   r>   r,   r@   rA   rB   Z
decreasing)r?   alternativez	two-sidedZ      )r?   Zdroprv   )rD   rH   rI   rE   rF   r5   r   )rg   rJ   Zhet_gq_lessZhet_gq_two_sidedZhet_gq_two_sided_01r]   r^   rK   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;   rr   r,   r@   rU   rD   rE   het_breuschpaganresidrX   rI   r5   rg   rU   Zbptest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 )NrA   zThe Breusch-Paganmatchr   )rU   r   asarrayrX   rI   pytestraises
ValueErrorrE   r}   r~   r!   copy)rg   rU   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?rz   r;   rr   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_>)rU   rE   	het_whiter~   rX   rI   r   )rg   rU   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   )	rU   r   r   r   rE   r   r~   rX   rI   rg   rU   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?rk   chi2rr   g&K!@g$q?)r-   rk   rl   r-   r{   )r-      r@   )rD   rE   het_archrU   r~   r5   )rg   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)rl   storerA   r-   r@   rk   r   )rU   r~   rE   r   r   Zresolsrf   )rg   r~   res1Zrs1rV   Zrs2rW   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?)rk      r;   rr   gjk4@goH]?r   r   rk   r   r.   r2      r@   r/   r-   )rU   rD   rE   acorr_breusch_godfreyr   )rg   rU   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   r{   )r~   zModel resid must be a 1d arrayr   )r   r   emptyr   r   r   rE   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)rj   Ztrendr   r   )r	   rP   r(   r   rT   rE   r   )rg   r(   rU   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   rr   gԞ@g>t?rk   T	boxpierce)rk   lb_stat)rk   	lb_pvaluer,   r@   )rk   bp_stat)rk   	bp_pvalue)rU   rD   rE   acorr_ljungboxr~   r5   loc)rg   rU   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.   r2   r<   g@RF@gf=e?(   r   r{   Tr   lagsr   r   r,   r@   r   r   )rU   rD   minr~   shaperE   r   indexmaxr5   r   )rg   rU   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   rr   gx@g@'6$?   Tr   r   r   r   r,   r@   r   r   )rU   rD   
isinstancer~   r   ndarrayilocrE   r   r   r   r5   r   )rg   rU   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?r1   r{   r   Tr   )r/   r   gm@)r/   r   g r?)r   model_dfgo?)r   r   r   r   Z
zeros_likerangerE   r   	enumerater   r   )rg   reset_randomstater%   y1r&   y2iZr_results_y1_lbZr_results_y2_lbZres_y1Zres_y2r   rowrU   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 ?   trr   r,   r@      )skipr   )rD   rE   Zlinear_harvey_collierrU   r5   r   ZallcloseAssertionError)rg   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   r:   r;   rr   gD?gF?)z   M   r,   r@   r   )frac)rD   rE   linear_rainbowrU   r5   )rg   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?)rk   r   r   )Zloglike1Zloglike2	chi2valuer2   r   r   r   r   r@   r   r2   gEЛ@gL%'kH~?)      r   fvaluer2   r   r   )rU   rW   rD   Zcompare_lr_testr   Zcompare_f_test)rg   rU   rW   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   )rU   rV   rE   	compare_jr   )rg   rU   rV   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   rT   r   r   r   r   rg   r   r+   r(   r   rV   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   rT   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   )rU   rV   rE   compare_coxr   r   ZResultsStorer   )rg   rU   rV   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)   BBrr   r   ddofr,   r@   )rD   rE   Zbreaks_cusumolsresidrU   r~   r5   )rg   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   rr   r   r.   r-   r@   )rD   rE   Zbreaks_hansenrU   r   )rg   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   rk   r   gWr%@r@   r   )r   r   order_bygư>r0   g2*@ga+@gK]H+@g +@g6DT+@gLHC@gg
!}C@g5C@gZC@g)&oC@      r/   r{   r-   	   )r   re   rE   recursive_olsresidualsrU   r   roundr   rQ   ZstdarangerX   rH   r   r   rI   r   r
   rT   appendZpredictrf   )rg   Zreccumres_standardizerrrj   Zrr_orderZub0Zub1ZlbZubrH   rI   rf   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)   -rr   g;}H?gWMR`X5gh%f?gw)?Zapprox)Z
pvalmethodr{   r   r,   r@   r   r2   g|=r   )r-   r   g\?gtaw*9?g<q,O?gG\Pk?)r   r   r   )r   r-   )rU   rD   rE   Z
lillieforsr~   r   r   r   r   r5   r   Z	normal_adr   isinf)rg   rU   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_colrk   r   r   )rU   oiOLSInfluenceospathjoincur_diropenjsonrC   r   r   re   rm   Z
cov_paramsZnormalized_cov_paramscooks_distancehat_matrix_diagresid_studentized_internaldffitsresid_studentized_externalr"   read_csvr   dfbetas	cov_ratio)rg   rU   inflr  fplsdiagc0c1r  dffthfninfl_rinfl_r2r)   r)   r*   test_influence  sL    

  
  
 zTestDiagnosticG.test_influenceN)(__name__
__module____qualname__classmethodrd   rh   rq   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizerE   r   r   r   r   r   r   r   r   r   r$  r)   r)   r)   r*   rM   Y   sD   
	-A%0'/

	  vKrM   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 )
NrN   r6   rZ   r7   r[   r8   r   r\   rO   )r   rP   r(   r   rR   rQ   shiftdropnarG   r   r
   rT   rU   rV   rW   rX   rH   rI   )	rY   rG   r]   r^   r_   r`   ra   rb   rc   r)   r)   r*   rd   U  s&    
z!TestDiagnosticGPandas.setup_classN)r%  r&  r'  r(  rd   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axisrA   )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lstsqrE   
spec_whiter   )
ZresdirZwsfilesfileZmdlfileZmdlZlastcolZdvZdesignZresidsZwsresr)   r)   r*   test_spec_whiteq  s(    
  "
r3  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   rE   r1  r   r   r   )r   r)   r)   r*   test_spec_white_error  s    
 

 
r4  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   r{   r   )r   r   r   r   r
   rT   rE   Z	linear_lmr~   hstackZrsquaredr   r   )r   rH   rI   rU   Zlm_resaugZres_augstatr)   r)   r*   test_linear_lm_direct  s    "r8  c                   C   s   t dddd d S )NgNLo?gTi%4?)r      r   )rD   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/   r{   r   g{Gz?)r   r   r   r   g?)r   r   r   randnr    r
   rT   r  Zsummary_tabler   allget_influence)r   r'   r   rU   Zout_05Zout_01rV   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#   rN   r6   r7   r8   rA   )constr\   lrealgdpr?  r@  r\   r   r   r   r   r  r  r  r-   r  r  r  r  r	  r
  r   r@   rk   )%pandasr#   r   rP   r(   r   rR   rQ   r-  r   rD   r!   r
   rT   r  r  Zsummary_framer   r   r  r  r  r  r  r  rC   r  r   r  r  r  r  r"   r  r   r  r  )r#   rG   rZ   r[   r\   r(   rI   rU   r  r   r  r  r  r  r  r  r   r!  r"  r#  r)   r)   r*   test_influence_wrapped  s@    
	


  
 rB  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
   rT   r=  r  r   re   r   )r   r'   r   rV   Zcr1Zcr2Zcr3r)   r)   r*   test_influence_dtype  s@    


rG  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waiterrD  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)   )labelsrI   rH   r)   r)   r*   get_duncan_data%  s   100rv  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   rM  rP  rX  r^  rc  r_  rW  rY  r]  rh  r`  rg  rm  r\  rp  rL  rb  rN  ra  rf  rd  rq  r[  rk  rO  rt  rn  rU  re  rT  rI  rQ  rH  rS  rR  rl  rZ  rj  ro  rr  rs  rJ  rV  ri  rK  bT)methodru  rj   r   zy const var1 var2)r   r   zy ~ const + var1 + var2 - 0)rx  rj   )rx  unadj_p)Z	ascendingg333333?)rx  rj   cutoff)rv  r
   rT   r   re   r$   r  Zoutlier_testtestingr   rS   r   r   tolistr"   r#   Zcolumn_stackr?   Zfrom_formulaZsort_valuesr   )rH   rI   ru  Zndarray_modZrstudentry  Zbonf_pZsorted_labelsrV   rU   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   rk   FZ	old_namesr/   r   )r   r   r   r   )r	   rP   r(   r   rT   r~   rE   r   r   r   r   r<  isnanr   )r(   rU   r~   r   rV   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   rk   Fr~  Tauto_lag)r   r  r   r   )r	   rP   r(   r   rT   r~   rE   r   r   r   r   r   r   r<  r  )r   r(   rU   r~   r   rV   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;  rE   r   r   r   )r   r(   rU   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   rA   )r   zperiod mustr   )r   periodr/   r  )r	   rP   r(   r   r   r   rE   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   rk   Fr~  r   )r     r  )	r	   rP   r(   r   rT   rE   r   r~   r   )r(   Zar_resrU   rV   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   r{   r   r   r   r{   r   r   )r  )rk   r   rk   T)use_fZscalarr'   g:0yE>r   )r{   r   r{   r  z)r   r   r   r.  r5  r
   rT   rE   compare_encompassingZzeroseyeZ	wald_testfloatZsqueezer.   r2   intZdf_numZdf_denomr   r   r   )r  r   r'   r&   Zx_extraz_extrar   r   Zz1r   rV   r   Zdirect1r1Zdirect_test_1expectedZdirect2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 linearr{   z!results_x must come from a linearrk   )r   r   r   r.  r5  r
   rT   r   r   r   rE   r  	TypeError)r   r'   r&   r  r   r  r   rV   r)   r)   r*   test_encompasing_error  s    r  powerr{   r   	test_typeZfittedrI   Zprincompr  TFrp   )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   r{   )r   r   rk   )r  r  r  )
r   r   r   r   r5  r.  r
   rT   rE   Zlinear_reset)	r  r  r  rp   r   r'   r&   r   rU   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   rl   r   r   r-   )rl   r   r  r   r   r   r   rE   Zacorr_lm)r   r   rp   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
   rT   rE   r   )r   r   r   r&   r'   r   rU   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   rU   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
   rT   r   r   r  rE   r   r   )r   r&   r'   r   rU   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   rE   r   r
   rT   )r   r   r'   r)   r)   r*   test_small_skipg  s
    r  )r,   )O__doc__r  r  numpyr   Znumpy.testingr   r   r   r   r   rA  r"   Zpandas.testingr   r   Zstatsmodels.datasetsr   r	   Z#statsmodels.regression.linear_modelr
   Zstatsmodels.stats.diagnosticstats
diagnosticrE   Z$statsmodels.stats.outliers_influenceZoutliers_influencer  Z%statsmodels.stats.sandwich_covarianceZsandwich_covariancern   Zstatsmodels.tools.toolsr   r   Zstatsmodels.tsa.ar_modelr   Zstatsmodels.tsa.arima.modelr   r  abspathdirname__file__r  Zfixturer+   r5   rL   rM   r+  r3  r4  r8  r:  r)  Zsmoker>  rB  rG  rv  r}  r  r  r  r  r  r*  r  r  rD   r  r  r  r   r   choicer  r  r  r  r)   r)   r)   r*   <module>   s   



        
>'  d
%





