U
    Ãmœd‡ë  ã                   @   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j5 Ad3d4d5g¡d6d7„ ƒZBd8d9„ ZCej5j6ej5 Ad:d;d<g¡ej5 Ad=d>d?d@g¡ej5 AdAdBdCg¡ej5 AdDeDd4i dE�eDd5i dE�g¡dFdG„ ƒƒƒƒƒZEej5j6ej5 AdHdBdCg¡ej5 AdIdd;g¡ej5 AdDeDd4i dE�eDd5i dE�g¡dJdK„ ƒƒƒƒZFdLdM„ ZGej5 AdNdOdPdQg¡ej5 AdRde HdS¡ejIjJdSdSdCdT�dUdUdVgg¡dWdX„ ƒƒZKej5 AdYddZd[g¡d\d]„ ƒZLd^d_„ ZMd`da„ ZNdS )cz©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

é    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_ª&ÍVF¹9Ú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]Ð�ö"ÀgqkÍö3@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 )NgSp”Ô7+ö?g•cÀCÔ¿gœIâq¹“®¿gNª©„¬»?gl³Úx»…9?g£³Úx»…9?gÁKàú¶?)r   r   ÚF)ÚordergL0žø@ô?ge7­¤Ã`Ò¿g´9D¤¿gd7­¤Ã`Ò¿gúHó…mÛº?gv�q¿ˆ9?g»9D¤¿g–�q¿ˆ9?g‚w¸£Ô:¹?é   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-sidedéZ   é   )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:EÙY³·æ?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 }Ù²Õô?g˜ªZdK°à?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)gƒpëýyÀ@@g ©dÉ>gâÎÇ”-@gÿ˜ƒ—A_±>)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 W”UÞò?gÖçŽÔ?)rk   éÃ   r;   rr   gƒjk4Œ@g»o·H]ñÓ?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 )NgŽl¶[ˆñ@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@gDl‹£V½?r�   )r.   r2   r<   g@�åRª�F@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 )Ng£æ6{æ:#@gB"„Æ3ç?)r   r�   rr   g‰—Òxíª@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� qÖt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=   çš™™™™™Ù?iœÿÿÿg2U0*©Ä?g¡ø1æ®%æ?g÷uàœå@r•   g,eâX×?gj¼t“%@r/   g`vOjÙ?g·Ñ Þ@gÞÈ<ò·?g]mÅþ²{@gX9´Èvâ?gM„O¯ô @gà¾œ3¢â?)r   r•   r/   r§   gü©ñÒMbP?©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 )Ng—óTÊÆ¤ß?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   g×DÎèþâ?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Å-?Íß‡ÀgMo¶8yò‡ÀgKªˆù«@gôÝwŸ?)rk   r   r   )Zloglike1Zloglike2Ú	chi2valuer2   r­   r   rÖ   rš   r@   r   r2   g�¢EÏÐ›@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)Èv¦Îvù?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ƒs†t‚d S )N)zfitted(M1) ~ M2gÜÈÍÍdé¿g}6_¸¶0ã?gznN ]Ýô¿gÃI”úžšÈ?ú )zfitted(M2) ~ M1g6
ØÒ“ýÀgÕ{ù6J!Ù?g$©qJ¢èÀgµFÍ˜¶í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d€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹dŒd�dŽd�d�d‘d’d“d”d•d–d—d˜d™dšd›dœd�dždŸd d¡d¢d£d—d¤d¥d¦d§d¨d©dªd«d¬d­d®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É�}tt  |dÊ dËd … dÇ¡|ƒ t|dÇ dÌd … t  |¡dÇƒ t|dÌ dÇd … j	dËdÍ�dÎdÌdÏ� t  
| jjjjdÐ ¡}tj| jdÇdÈ|dÑ�}t|dÐ |dÐ dÒdÓ� t  dÔdÕdÖd×dØg¡}t  dÙdÚdÛdÜdÝg¡}|dÞ \}}t|d dÊ… |dßdÏ� t|d dÊ… | dßdÏ� t|dàd … |dßdÏ� t|dàd … | dßdÏ� | jjj}	| jjj}
g }g }tdÇdáƒD ]J}t|	d |… |
d |… ƒ ¡ }| |j |j|
| ¡¡ | |j¡ �qþt|dâ dÇdá… |dãdÏ� t|dÐ dÇdá… |	dÇdá… | dãdÏ� t|dË dâdä… |dãdÏ� d S )åNgh‘í|?5Àg–C‹lçûÀg¶óýÔxéÀgøSã¥›ÄÀg×£p=
×ý¿g×£p=
×Àg´Èv¾Ÿó¿g      Àg´Èv¾ŸÀg}?5^ºÉÀgœÄ °rhÀg /Ý$†ÀgË¡E¶óýÀgR¸…ëQÀgžï§ÆK·Àg=
×£p½Àgžï§ÆK7ÀgV-²�/ Àgü©ñÒM"!ÀgTã¥›Ä Àg7‰A`åPÀgV-²�ï Àg¤p=
×£"ÀgP�—nƒ(Àgw¾Ÿ/Ý'ÀgœÄ °rè&Àgáz®Ga'Àg‰A`åÐ¢&Àg®GázT)ÀgÉv¾Ÿ¯)Àg‰A`åÐb'ÀgB`åÐ"›%Àg`åÐ"Û9(Àg+‡ÙÎ7(Àg/Ý$*Àg%�•CË'Àgmçû©ñ’%ÀgÅ °rhQ$Àgú~j¼t"ÀgÝ$�•"ÀgøSã¥›D!Àgh‘í|?5Àgé&1¬œÀg}?5^ºÉÀg¬Zd»Àg'1¬ZÀgJ+‡Àg¢E¶óýÔÀgÙÎ÷Sã	ÀgòÒMbXÀgd;ßO�—ÀgÓMbX9ÀgL7‰A`åÀgZd;ßO�Àg#Ûù~j<Àg/Ý$�ÀgòÒMbXÀgáz®GáÀgV-²�Àgã¥›Ä ° Àg®GázÀg¼t“ÖÀg
×£p=
ÀgìQ¸…kÀgTã¥›Ä Àg…ëQ¸žÀgË¡E¶ó}ÀgÍÌÌÌÌLÀgáz®Gá	ÀgìQ¸…ëÀg?5^ºI	ÀgÙÎ÷SãÀg5^ºIý¿g²�ï§ÆKÀgV-²ÀgÉv¾Ÿ/Àg      Àg…ëQ¸Àgq=
×£ðÀg“V­Àg=
×£p=Àgyé&1¬ÀgºI+Àg¼t“VÀgÑ"Ûù~jÀgj¼t“ü¿g-²�ï§Ö¿gffffffò?g�—nƒÀâ?gú~j¼t“ä?g‘í|?5^ü?g�Âõ(\�ê¿g¢E¶óýÔØ¿g%�•C‹à?gh‘í|?5ê?gìQ¸…ë@g‡ÙÎ÷S@gåÐ"Ûù~	@gƒÀÊ¡E@g¦›Ä °r@gÇK7‰A`å?g9´Èv¾Ÿî?gV-²í¿g!°rh‘íÔ?g=
×£p=Ò¿g      ä¿gºI+‡Àg-²�ï§Æÿ¿g+‡ÙÎç¿g¼t“Vö¿gÙÎ÷Sã¥û¿gyé&1¬ä¿g7‰A`åÐÀg!°rh‘íÀgZd;ßOÀg“V-Àg‹lçû©ñþ¿g¨ÆK7‰AÀgffffff	Àg¦›Ä °rÀg˜nƒÀÊÀgÝ$�•CÀgL7‰A`åÀg…ëQ¸Àg˜nƒÀÊÀg‡ÙÎ÷SÀg¨ÆK7‰Aò¿gÍÌÌÌÌÌä?gçû©ñÒMî¿g333333ç?gj¼t“Ü?gR¸…ëQì?g'1¬Z@g‰A`åÐ"@gö(\�Âõ@g?5^ºI@gX9´Èö@g5^ºI‚@gåÐ"Ûù~@gd;ßO�@gÁÊ¡E¶ó@gÙÎ÷Sc@g�Âõ(\�@gV-2@g9´Èv¾Ÿ@gq=
×£ð@gZd;ßOM @g
×£p=
@gü©ñÒMb@g˜nƒÀŠ!@gÍÌÌÌÌÌ @gÉv¾Ÿo!@g¢E¶óýÔ#@gj¼t“"@gR¸…ëÑ!@gJ+‡– @gX9´Èö!@g®Gáz!@g
×£p=Ê @gTã¥›Ä @g“V-@gbX9´H @gÓMbX¹ @gffffff@gßO�—n’@gÛù~j¼t @goƒÀÊ¡@g¬Zd;ß@g²�ï§ÆË@g®Gáz”@g33333s!@gÇK7‰Aà!@gZd;ß�!@g33333³ @gƒÀÊ¡E"@gé&1¬"@g{®Gáº$@g=
×£pý$@gœÄ °rh%@gÅ °rh‘%@gÍÌÌÌÌŒ$@gºI+Ç$@gyé&1,'@g7‰A`å&@gìQ¸…«&@gßO�—nR'@g%�•C%@gbX9´È$@g˜nƒÀ
%@g�—nƒ@$@gB`åÐ"Û"@g+‡ÙÎw#@gœÄ °rè!@gÙÎ÷Sãå#@gq=
×£0%@gÕxé&1 @g%�•C‹@gfffffæ@r   gffffffî?)rÌ   Úalphar•   r   rk   rê   gÂ†§WÊr%@r@   r   )rÌ   rî   Úorder_byg�íµ ÷Æ°>©r0   g¯‘‡2¿*@g®aÈâ+@gKäå]³H+@g· Àóƒ�+@gç6D‰TÒ+@gLƒªêH¹C@gg
!}ÊC@g‚‘—5±ÛC@gŸøZåìC@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‹Ô‹�Ð„²?gÛsÖ©ˆ?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rØ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d S )Nrþ   z
wspec1.csvz
wspec2.csvz
wspec3.csvz
wspec4.csvr   r   )ZaxisrA   )Zrcondg5^ºI
@gôýÔxé&å?r•   r   r@   gHáz®G@gÛù~j¼tç?rô   gÅ °rh@gu“VÝ?rò   g�•C‹ì @gF¶óýÔxå?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 )NgN´ì¤Loù?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{®Gáz„?)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¿   g«12ëŽó?gÃoTõ?g¹@0hmø?gš{'êõÌð?gEÖù;ƒì?gË'¯¾O/ù?gÌ}0øM„ð?gp*yŽ«î?g•±Ê/|ò?g%Þ�G¡ƒó?g[)Yì?g1ø‡oY¬ò?g­Ú¹YQ­ñ?gæO†pí ï?gb†BÛœpñ?geE�ütµõ?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d€d�d‚dƒd„d…d†d‡g-}t |¡}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¸�}	tj 	|	j
|d¹¡ tj |	j ¡ |¡ tjt | |f¡dº ¡ |d»�}
t d¼|
¡ ¡ }tj|d¶d·d½�}t	|j
|d¹ƒ t|j ¡ |ƒ |jd¶d¾�}|jd¿gd·dÀ�}t	|j
|d¹ƒ t|j ¡ |ƒ t|j|jƒ |jd¶d·d½�}t|j ¡ |ƒ |jd¶d·dÁdÂ�}t|j ¡ |d dˆ… ƒ d S )ÃNgp´z~	@g.à[-ÀgZÔ´>¶Y @g^Òåþ¿g�P$ÁW1þ?g‡H4ø*ü¿gÎ6…~·Cû¿gö­ž(Œ£ù?gAë¦û•îö¿gÛ¡ø«ñ¿gw¥Åñ?g!ß)ãKð?gå/Iö£àì¿g|\àì¿góSXEQBì¿g;2Tsê?gPc>�°âé?g¶'<°¹•è?gÒÓˆ lç?gëVºÁTå¿g(¡/V?ºà?gº¬›nà¿gÎô´:·Dà?gá“­ºþß?g§³)”’àß¿gk)b	RvÞ¿g7Ê€”zÛ¿g³rí\xTÚ¿g‘–çUf0Ø¿g®üÞ•ÃÖ?g1µ>P¢ÑÕ?g2u«,0™Ó?gÌÀ ¿sÓ?g™‚¡E°eÓ¿gÿi¨ª·úÇ¿g¾¬W9>?Æ?gO1ë¢ø:Â?gZ^ÁOŠÀ¿g”žØ°NHÀ?g›x^�°s´¿g�ì>}L/´?g«ˆ•xY²?g{îÅ–lÜ©?gý$ÒH˜á—?gÇ~~.NG?g—aÙUj?g—î9¦ª­•?g0�ôÜ!I¨?g”=N_ð®?g¾LÒ£õ°?gšéàõµ?gLÈg¯Ç�¸?g' ú�â½?g�`F%3fÄ?gCRî§Ñ?g8‡÷¦Ò?g-8j"Ô?gó�J€�Ð×?gsîúõØÐ×?gK */'xØ?g�Û©eÝrÚ?gBIæ0Û?gLbœ&—Ü?gh®\:©ùÝ?g	Yœ…ËGà?gR ½Sã?g`Ý	Ú
ˆã?g€ŽØì¥ã?g4 0«kÕã?gû¥ŠQóßã?g3»m-3_ä?gR<a›êoå?g@MÅwvÚå?gÊëÃ¥#£æ?g+ë¦°,*ç?g-+ÎÊV„ç?gÔc5?ùYè?gó�Ü`hè?g×œNurmè?g¶kÈ“2Fë?g…üø©œë?g�’¦-íeì?gúuL‚Üºì?gp }ÃßÇì?gd[ô�ùí?g*¶ÕîO î?gS€]Š+î?gÜáõ ¸î?gâ�NB�hï?gÎiæ.aûï?g€gÖ­ùLÂ?gÌcô7|î?g™ñ¶Òk@gùÀŽÿÁ@gì»Ç>mÙ@gOäîÃá@gšÿfE@gÁ5;M@göÅï·¯@gºöôÒ(@gËÀ«Š9*@gÿ¾5fÈK,@gÐé~£¾0@g©oôŒØ¾0@gÙ×Ž{41@gÛ»«Ã˜2@g"5íbš3@gˆ5K¸F4@g›äGüŠ5@g;#¥4öä6@g€ààÁ-;@g724COw;@gò&2 ;@g1ÓQiä;@g€¦*îò;@gXüK÷ß¥<@g{ãÿéa%>@g…�B˜6»>@gpJ/ jÕ?@gæ3êk§I@@gÀx‰@@glpÇ@CA@g,n�c)A@gÖ¿�zô,A@g¿ŽI�[-C@gcÈû‚'jC@gHdÄª÷C@ghc3D@g–·~U‰<D@gæ5ÐwE@gûó#48E@g«D4=6E@g"B¬`™E@g>-õâzF@gžEïTÀ|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 ¡¡sŒt‚t
 |j	dd …d	f |j	dd …d	f k¡sºt‚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sŽt‚t t |j	d d…d	f ¡¡s°t‚t |j	dd …d	f |j	dd …d	f k¡sÞt‚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
ƒs²t‚d S )Nr¢   zmodel_df mustr‚   rA   )rÀ   zperiod mustr   )rÀ   Úperiodéþÿÿÿr/   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:Œ0âŽyE>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
%

þþ

þþûþ

