U
    Ãmœd›Ã  ã                   @   s²  d dl mZ d dlmZ d dlmZ d dlm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mZmZ d dlZd dlmZ d d	lmZmZmZmZmZ d d
l m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ dZAdZBdZCdZDdZEdZFdZGejH IejH JeK¡¡ZLejMdd�dd„ ƒZNejMdd�dd„ ƒZOG dd„ dƒZPG dd„ dePƒZQG d d!„ d!ePƒZRG d"d#„ d#ePƒZSG d$d%„ d%ePƒZTG d&d'„ d'ePƒZUG d(d)„ d)ePƒZVejW Xd*e Ydd+¡g¡d,d-„ ƒZZG d.d/„ d/ƒZ[G d0d1„ d1e[ƒZ\G d2d3„ d3e[ƒZ]G d4d5„ d5e[ƒZ^G d6d7„ d7e[ƒZ_G d8d9„ d9ƒZ`G d:d;„ d;ƒZaG d<d=„ d=eaƒZbd>d?„ Zcd@dA„ ZddBdC„ ZeG dDdE„ dEƒZfG dFdG„ dGƒZgG dHdI„ dIƒZhdJdK„ ZidLdM„ ZjejW XdNdOdPg¡ejW XdQdOdPg¡dRdS„ ƒƒZkejW XdNdOdPg¡ejW XdQdOdPg¡dTdU„ ƒƒZlejW XdNdOdPg¡ejW XdQdOdPg¡ejW XdVdOdPg¡dWdX„ ƒƒƒZmejWjnejWjodYdZ„ ƒƒZpd[d\„ Zqd]d^„ Zrd_d`„ ZsejW Xdadbdcdddeg¡ejW XdVdPdOg¡ejW XdNdOdPg¡ejW XdQdOdPg¡dfdg„ ƒƒƒƒZtejW Xdadbdcg¡ejW XdVdPdOg¡ejW XdNdOdPg¡ejW XdQdOdPg¡dhdi„ ƒƒƒƒZudjdk„ Zvdldm„ Zwdndo„ Zxdpdq„ Zydrds„ Zzdtdu„ Z{dvdw„ Z|dxdy„ Z}dzd{„ Z~d|d}„ Zd~d„ Z€d€d�„ Z�d‚dƒ„ Z‚d„d…„ Zƒd†d‡„ Z„G dˆd‰„ d‰ƒZ…G dŠd‹„ d‹e…ƒZ†dŒd�„ Z‡dŽd�„ Zˆd�d‘„ Z‰ejŠ ‹d¡ZŒeŒ �d’¡ZŽe �eŽ¡Z�e e�eŽd“œ¡Z‘e eŽe�d”œ¡Z’e “eŽ¡Z�e e�eŽd“œ¡Z”e eŽe�d”œ¡Z•e‘e’e”e•gZ–ejW Xd•e–¡d–d—„ ƒZ—d˜d™„ Z˜dšd›„ Z™dS )œé    )Úlstsq)Úassert_index_equal)ÚPLATFORM_WIN)ÚlrangeN)Úassert_Úassert_allcloseÚassert_almost_equalÚassert_equalÚassert_raises)Ú	DataFrameÚSeriesÚ
date_range)Úinterp1d)Ú	macrodataÚ
modechoiceÚnileÚrandhieÚsunspots)ÚCollinearityWarningÚInfeasibleTestErrorÚInterpolationWarningÚMissingDataErrorÚValueWarning)Ú
array_likeÚ	bool_like)Ú
arma_acovf)ÚSARIMAX)ÚacfÚacovfÚadfullerÚarma_order_select_icÚ breakvar_heteroskedasticity_testÚccovfÚcointÚgrangercausalitytestsÚinnovations_algoÚinnovations_filterÚkpssÚlevinson_durbinÚlevinson_durbin_pacfÚpacfÚ	pacf_burgÚpacf_olsÚpacf_ywÚrange_unit_root_testÚzivot_andrewsé   é   é   é   é   é   é   Úmodule)Úscopec                  C   s   t j d¡} |  d¡S )Né90  éú   )ÚnpÚrandomÚRandomStateÚrandn)Úrnd© r@   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/tests/test_stattools.pyÚ
acovf_dataC   s    rB   c                  C   s6   t  ¡ j} | ddg j} |  t¡}tjt |¡dd�S )NÚrealgdpÚrealconsr   ©Zaxis)	r   Úload_pandasÚdataÚvaluesÚastypeÚfloatr;   ÚdiffÚlog)ÚmdatarG   r@   r@   rA   Úgc_dataI   s    

rN   c                   @   sR   e Zd ZdZdddgZe ¡ Zejd jZ	ejd jZ
dd„ Zd	d
„ Zdd„ ZdS )ÚCheckADFzI
    Test Augmented Dickey-Fuller

    Test values taken from Stata.
    ú1%ú5%ú10%rC   Zinflc                 C   s   t | jd | jtƒ d S )Nr   )r   Úres1ÚteststatÚ	DECIMAL_5©Úselfr@   r@   rA   Útest_teststat]   s    zCheckADF.test_teststatc                 C   s   t | jd | jtƒ d S ©Nr6   )r   rS   ÚpvaluerU   rV   r@   r@   rA   Útest_pvalue`   s    zCheckADF.test_pvaluec                    s&   ‡ fdd„ˆ j D ƒ}t|ˆ jtƒ d S )Nc                    s   g | ]}ˆ j d  | ‘qS )r3   )rS   )Ú.0ZlevrV   r@   rA   Ú
<listcomp>d   s     z,CheckADF.test_critvalues.<locals>.<listcomp>)Úlevelsr   Ú
critvaluesÚ	DECIMAL_2)rW   r_   r@   rV   rA   Útest_critvaluesc   s    zCheckADF.test_critvaluesN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r^   r   rF   rG   rH   ÚxÚyrX   r[   ra   r@   r@   r@   rA   rO   Q   s   
rO   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚTestADFConstantz*
    Dickey-Fuller test for unit root
    c                 C   s0   t | jdd dd�| _d| _d| _dddg| _d S )	NÚcr3   ©Ú
regressionÚautolagÚmaxlagg›"]¿¢3ï?gûðfìÏÎï?ç+‡ÙÎÀçªñÒMbÀç/Ý$�•À©r   rf   rS   rT   rZ   r_   ©Úclsr@   r@   rA   Úsetup_classm   s    zTestADFConstant.setup_classN©rb   rc   rd   re   Úclassmethodrt   r@   r@   r@   rA   rh   h   s   rh   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚTestADFConstantTrendÚ c                 C   s0   t | jdd dd�| _d| _d| _dddg| _d S )	NÚctr3   rj   gÏ|kÉ´ý¿gý‘·–¨å?gºI+ÀçåÐ"Ûù~Àçj¼t“	Àrq   rr   r@   r@   rA   rt   x   s    z TestADFConstantTrend.setup_classNru   r@   r@   r@   rA   rw   u   s   rw   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚTestADFNoConstantrx   c                 C   s0   t | jdd dd�| _d| _d| _dddg| _d S )	NÚnr3   rj   g¡ìwr—.@gwJëÿï?çV-²Àç333333ÿ¿ç¬Zd;ßù¿rq   rr   r@   r@   rA   rt   ‹   s    zTestADFNoConstant.setup_classNru   r@   r@   r@   rA   r|   ˆ   s   r|   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestADFConstant2c                 C   s0   t | jdd dd�| _d| _d| _dddg| _d S )	Nri   r6   rj   g²
@H»VÀgRjN=V9?rn   ro   rp   ©r   rg   rS   rT   rZ   r_   rr   r@   r@   rA   rt   œ   s    zTestADFConstant2.setup_classN©rb   rc   rd   rv   rt   r@   r@   r@   rA   r�   ›   s   r�   c                   @   s   e Zd Zedd„ ƒZdS )ÚTestADFConstantTrend2c                 C   s0   t | jdd dd�| _d| _d| _dddg| _d S )	Nry   r6   rj   g¼S”K³Àgü�›Z`?g /Ý$Àrz   r{   r‚   rr   r@   r@   rA   rt   ¥   s    z!TestADFConstantTrend2.setup_classNrƒ   r@   r@   r@   rA   r„   ¤   s   r„   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestADFNoConstant2c                 C   sN   t | jdd dd�| _d| _d| _dddg| _t | jdd dd	d
�\}}}| _d S )Nr}   r6   rj   g'6z�ù›ÀgKXc'Œ?r~   r   r€   T)rk   rl   rm   Ústore)r   rg   rS   rT   rZ   r_   r†   )rs   Ú_Z_1Z_2r@   r@   rA   rt   ®   s        ÿzTestADFNoConstant2.setup_classc                 C   s   t | j ¡ dƒ d S )Nz$Augmented Dickey-Fuller Test Results)r	   r†   Ú__str__rV   r@   r@   rA   Útest_store_strº   s     ÿz!TestADFNoConstant2.test_store_strN)rb   rc   rd   rv   rt   r‰   r@   r@   r@   rA   r…   ­   s   
r…   rf   ç      @c              	   C   s"   t  t¡� t| ƒ W 5 Q R X d S ©N)ÚpytestÚraisesÚ
ValueErrorr   )rf   r@   r@   rA   Ú!test_adfuller_resid_variance_zeroÀ   s    r�   c                   @   s@   e Zd ZdZe ¡ Zejd Zej	 
edd¡Zejedd�ZdS )ÚCheckCorrGramz%
    Set up for ACF, PACF tests.
    rC   Úresultszresults_corrgram.csvú,)Ú	delimiterN)rb   rc   rd   re   r   rF   rG   rf   ÚosÚpathÚjoinÚCURR_DIRÚfilenameÚpdÚread_csvr‘   r@   r@   r@   rA   r�   Æ   s
   
r�   c                   @   s4   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
S )ÚTestACFz'
    Test Autocorrelation Function
    c                 C   sD   | j d | _| j d | _t| jddddd�| _| j dd	g j| _d S )
NÚacvarÚQ1é(   Tçš™™™™™©?F)ÚnlagsÚqstatÚalphaÚfftZacvar_lbZacvar_ub)r‘   r   r¡   rf   rS   rH   Úconfint_resrr   r@   r@   rA   rt   Ö   s    zTestACF.setup_classc                 C   s    t | jd dd… | jtƒ d S ©Nr   r6   é)   ©r   rS   r   Ú	DECIMAL_8rV   r@   r@   rA   Útest_acfÞ   s    zTestACF.test_acfc                 C   s@   | j d | j d  d¡d d …d f  }t|dd… | jtƒ d S )Nr6   r¦   )rS   Úmeanr   r¤   r¨   )rW   Úcenteredr@   r@   rA   Útest_confintá   s    &zTestACF.test_confintc                 C   s    t | jd d d… | jtƒ d S )Nr5   rž   ©r   rS   r¡   Ú	DECIMAL_3rV   r@   r@   rA   Ú
test_qstatå   s    zTestACF.test_qstatN)	rb   rc   rd   re   rv   rt   r©   r¬   r¯   r@   r@   r@   rA   r›   Ñ   s   
r›   c                   @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )ÚTestACF_FFTc                 C   s0   | j d | _| j d | _t| jdddd�| _d S )NZacvarfftr�   rž   T)r    r¡   r£   )r‘   r   r¡   rf   rS   rr   r@   r@   rA   rt   ñ   s    zTestACF_FFT.setup_classc                 C   s    t | jd dd … | jtƒ d S )Nr   r6   r§   rV   r@   r@   rA   r©   ÷   s    zTestACF_FFT.test_acfc                 C   s   t | jd | jtƒ d S rY   r­   rV   r@   r@   rA   r¯   ú   s    zTestACF_FFT.test_qstatN)rb   rc   rd   rv   rt   r©   r¯   r@   r@   r@   rA   r°   ï   s   
r°   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S )ÚTestACFMissingc                 C   s¤   t  t  t jg¡| jf¡| _| jd | _| jd | _t| jdddddd�| _t| jddddd	d
�| _	t  
d¡t j | _t  
d¡t j | _t| jdddddd�| _d S )Nrœ   r�   rž   TrŸ   ÚdropF)r    r¡   r¢   Úmissingr£   Úconservative)r    r¡   r¢   r£   r³   Únone)r;   ZconcatenateÚarrayÚnanrf   r‘   r   r¡   Úres_dropÚres_conservativeÚemptyÚacf_noneÚ
qstat_noneÚres_nonerr   r@   r@   rA   rt     s:         ÿú     ÿzTestACFMissing.setup_classc              	   C   s0   t  t¡� t| jdddddd� W 5 Q R X d S )Nrž   TFrŸ   Úraise)r    r¡   r£   r¢   r³   )rŒ   r�   r   r   rf   rV   r@   r@   rA   Ú
test_raise  s    úzTestACFMissing.test_raisec                 C   s    t | jd dd… | jtƒ d S r¥   )r   r½   r»   r¨   rV   r@   r@   rA   Útest_acf_none"  s    zTestACFMissing.test_acf_nonec                 C   s    t | jd dd… | jtƒ d S r¥   )r   r¸   r   r¨   rV   r@   r@   rA   Útest_acf_drop%  s    zTestACFMissing.test_acf_dropc                 C   s    t | jd dd… | jtƒ d S r¥   )r   r¹   r   r¨   rV   r@   r@   rA   Útest_acf_conservative(  s
      ÿz$TestACFMissing.test_acf_conservativec                 C   s   t | jd | jtƒ d S )Nr5   )r   r½   r¼   r®   rV   r@   r@   rA   Útest_qstat_none-  s    zTestACFMissing.test_qstat_noneN)
rb   rc   rd   rv   rt   r¿   rÀ   rÁ   rÂ   rÃ   r@   r@   r@   rA   r±   ÿ   s   
r±   c                   @   sH   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S )ÚTestPACFc                 C   s   | j d | _| j d | _d S )NZPACOLSZPACYW)r‘   ÚpacfolsÚpacfywrr   r@   r@   rA   rt   :  s    zTestPACF.setup_classc                 C   sž   t | jdddd�\}}t|dd … | jtƒ || d¡d d …d f  }ddggd }t|dd… |tƒ t|d	 d
d
gƒ t|d	 ddgƒ t|d	 dƒ d S )Nrž   rŸ   Zols)r    r¢   Úmethodr6   gÏ÷Sã¥›Á¿gÏ÷Sã¥›Á?r¦   r   ç        )r*   rf   r   rÅ   Ú	DECIMAL_6rª   r	   )rW   rÅ   Zconfintr«   Úresr@   r@   rA   Útest_ols?  s    zTestPACF.test_olsc           	      C   sà   d}t | j|dd�}| j ¡ }|| ¡ 8 }|jd }t |d df¡}|dd … }t |d ¡}d|d< t|ƒD ]\}|d|d  |d  … |d d …|f< t	|d d …d |d …f |d d�d d ||d < qpt
||d	d
� d S )Nr2   F)r    Z	efficientr   r6   ç      ð?)Zrcondéÿÿÿÿç:Œ0âŽyE>©Úatol)r,   rf   Úcopyrª   Úshaper;   Úzerosrº   Úranger   r   )	rW   Zlag_lenrÅ   rf   r}   ÚlagsÚleadÚdirectÚir@   r@   rA   Útest_ols_inefficientK  s    

&4zTestPACF.test_ols_inefficientc                 C   s*   t | jddd�}t|dd … | jtƒ d S )Nrž   Úmle©r    rÇ   r6   )r-   rf   r   rÆ   r¨   )rW   rÆ   r@   r@   rA   Útest_ywZ  s    zTestPACF.test_ywc              	   C   s,   t  t¡� tt d¡dd� W 5 Q R X d S )Né   r1   ©r    )rŒ   Úwarnsr   r*   r;   ÚonesrV   r@   r@   rA   Útest_yw_singular^  s    zTestPACF.test_yw_singularc                 C   s\   t | jddd�}t| jddd�}t||tƒ t| jddd�}t| jddd�}t||tƒ d S )Nrž   rÚ   rÛ   ZldbZywZlda)r-   rf   r*   r   r¨   )rW   rÆ   Zpacfldr@   r@   rA   Útest_ldb  s    zTestPACF.test_ldc                 C   s2   t | jdd�\}}t| jddd�}t||tƒ d S )Nrž   rÞ   ZburgrÛ   )r+   rf   r*   r   r¨   )rW   Z	pacfburg_r‡   Zpacfburgr@   r@   rA   Ú	test_burgk  s    zTestPACF.test_burgN)rb   rc   rd   rv   rt   rË   rÙ   rÜ   rá   râ   rã   r@   r@   r@   rA   rÄ   9  s   
	rÄ   c                   @   sö   e Zd ZddlmZmZ dd„ Zdd„ Zej	 
ddd	dee d	dd¡e d	dd¡ƒ fd
ddee ddd¡e ddd¡ƒ fg¡dd„ ƒZej	 
ddd	dee d	dd¡e d	dd¡ƒ fdde ddd¡fdd	e d	dd¡fg¡dd„ ƒZdd„ ZdS )Ú"TestBreakvarHeteroskedasticityTestr   )Úchi2Úfc                 C   sb   ddddddg}d}dt | j |dd¡| j |dd¡ƒ }t|ƒ\}}||ksRt‚||ks^t‚d S )	NrÈ   rÌ   ç       @ç      @ç      @rŠ   ç     €D@r5   )Úminræ   ÚcdfÚsfr!   ÚAssertionError©rW   Úinput_residualsÚexpected_statisticÚexpected_pvalueÚactual_statisticÚactual_pvaluer@   r@   rA   Útest_1d_inputs  s    þÿz0TestBreakvarHeteroskedasticityTest.test_1d_inputc                 C   sô   t  ddt jgdt jdgddt jgdddgdddgdddgdddgdddgd	d	d	gg	¡}t  d
dt jg¡}t  dt| j |d dd¡| j |d dd¡ƒ dt| j |d dd¡| j |d dd¡ƒ t jg¡}t|ƒ\}}t||ƒ t||ƒ d S )NrÈ   rÌ   rç   rè   ré   rŠ   ç      @g      @g       @gÍÌÌÌÌÌ=@g      B@r5   r   r4   r6   )	r;   r¶   r·   rë   ræ   rì   rí   r!   r	   rï   r@   r@   rA   Ú!test_2d_input_with_missing_valuesƒ  sN    


÷ÿüÿþÿþÿõÿÿ
zDTestBreakvarHeteroskedasticityTest.test_2d_input_with_missing_valuesz0subset_length,expected_statistic,expected_pvaluer5   r¦   ç      à?é
   r4   c                 C   s<   ddddddg}t ||d�\}}||ks,t‚||ks8t‚d S )NrÈ   rÌ   rç   rè   ré   rŠ   )Úsubset_length©r!   rî   )rW   rú   rñ   rò   rð   ró   rô   r@   r@   rA   Útest_subset_length°  s    þ
z5TestBreakvarHeteroskedasticityTest.test_subset_lengthz.alternative,expected_statistic,expected_pvaluez	two-sidedZ
decreasinggúœ�Áù˜?Z
increasingc                 C   s<   ddddddg}t ||d�\}}||ks,t‚||ks8t‚d S )NrÈ   rÌ   rç   rè   ré   rŠ   )Úalternativerû   )rW   rý   rñ   rò   rð   ró   rô   r@   r@   rA   Útest_alternativeÄ  s    þ
z3TestBreakvarHeteroskedasticityTest.test_alternativec                 C   sj   ddddddg}d}dt | j d| d¡| j d| d¡ƒ }t|d	d
�\}}||ksZt‚||ksft‚d S )NrÈ   rÌ   rç   rè   ré   rŠ   rê   r5   F)Zuse_f)rë   rå   rì   rí   r!   rî   rï   r@   r@   rA   Útest_use_chi2Ø  s    þþ
z0TestBreakvarHeteroskedasticityTest.test_use_chi2N)rb   rc   rd   Zscipy.statsrå   ræ   rõ   r÷   rŒ   ÚmarkÚparametrizerë   rì   rí   rü   rþ   rÿ   r@   r@   r@   rA   rä   p  s&   -&&þþ
&ýþ
rä   c                   @   sB   e Zd ZdZdddgZe ¡ Zejd jZ	ejd jZ
dd„ Zd	S )
Ú
CheckCointza
    Test Cointegration Test Results for 2-variable system

    Test values taken from Stata
    rP   rQ   rR   rD   rC   c                 C   s   t | j| jtƒ d S r‹   )r   Úcoint_trT   Ú	DECIMAL_4rV   r@   r@   rA   Ú
test_tstatô  s    zCheckCoint.test_tstatN)rb   rc   rd   re   r^   r   rF   rG   rH   Úy1Úy2r  r@   r@   r@   rA   r  è  s   
r  c                   @   s   e Zd ZdZedd„ ƒZdS )ÚTestCoint_tz*
    Get AR(1) parameter on residuals
    c                 C   s,   t | j| jddd d�d | _d| _d| _d S )Nri   r   ©Útrendrm   rl   g{(vÙT"ý¿gê9_aHý¿)r#   r  r  r  rT   rr   r@   r@   rA   rt   þ  s
    ÿzTestCoint_t.setup_classNru   r@   r@   r@   rA   r  ù  s   r  c               	   C   s@  d} d}ddddg}t j d¡ t j | ¡ ¡ }|t j | d¡ }|d d …d d…f  |d d …d f 7  < ||7 }t  |d¡}dD ]Ò}td	|ƒ tt|d d …df |d d …df |dd d
�ƒ tt|d d …df |d d …dd…f |dd d
�ƒ tt|d d …df |d d …dd …f |dd d
�ƒ tt|d d …df |d d …dd …f |dd d
�ƒ q‚i }i  }|d< ddddg|d< ddddg|d< ddddg|d< ddddg|d< i  }|d< ddddg|d< d|d d< d d!d"d#g|d< d$d!d"d#g|d< d%d&d'd(g|d< i  }|d)< d*d+d,d-g|d< d.d/d0d1g|d< d2d/d0d1g|d< d3d4d5d6g|d< i  }|d7< t j}d8|||g|d< d9|||g|d< d:|||g|d< d;|||g|d< d<D �]0}i }	t|d d …df |d d …df |dd d
�|	d< t|d d …df |d d …dd…f |dd d
�|	d< t|d d …df |d d …dd …f |dd d
�|	d< t|d d …df |d d …dd …f |dd d
�|	d< t	dƒD ]X}
|| }t
|	|
 d ||
 d d=d>� ||
 dd … }|	|
 d }t
||dd?d@� �qv�q t|d d …df |d d …df dddA�}t
|d |d d dd … dd?d@� t
|d d… dBdCgdDdEd@� d S )FNéÈ   r6   r   rø   é{   r3   r5   r@   Ú
r	  r4   ry   gðî\yvÀg ©LÙŸÀgÓ¯¡Àg»´AÀgï;Ð,‹Àg§0WüÐÀg¥½ n·Àg bÀgA†š>à"Àg3xÖšú�ÀgõºÄõ£UÀgÕUp‡Àg§ð$ÉúÏÀri   g$ßô
ÀgpÊ�þÈ�Àgð!—¡ï
Àg¦î‡ˆÒ†Àg¢ŽS ZžÀg%ÑÞIÕÀgkÅ£/ìwÀgÖÏƒj�EÀgÄ‡!6ÞÀg1;];ÎÑÀg„�úûáÀg�ù«+åðÀgø‹›gœÀg`E¶záÑÀÚcttgSÀsÊå“Àgîoþ©$/ÀgìøìáÈâÀgxö\tjiÀg3°«©Àg�ÐËrÓqÀg—¼¦ø!ÀgL'µ ¬ñÀg´]É¬J	Àgk«‹»±¡ÀgÈ¨K3¥ Àg‘!S4ðMÀgº¹0†½Àr}   gæ�ƒn‰·Àg³Á—ª8�Àg¯ÕÈ�çûú¿gMnc¸œdÀ)ri   ry   r  r}   g•dyáý¥=©Úrtolgvƒôõ!¤>©r  rÐ   )r
  rm   gIwv€cü+Àg¨q:¶i}f:g»½×Ùß|Û=g<ò6šÎS:)r;   r<   Úseedr>   ÚcumsumÚroundÚprintr#   r·   rÔ   r   )ÚnobsÚscale_eÚconstÚunitrg   r
  Zres_egrangerrÊ   r·   rS   rØ   Úr2Úr1Zres1_0r@   r@   rA   Ú
test_coint  sÈ    (
.224üüüüüüüüü

.    ÿ
22($
ür  c               	   C   s|   d} d}t j d¡ |t j | ¡ }t dt¡ t t¡� t	||ddd d�}W 5 Q R X t
|d dƒ tt  |d ¡ƒ d S )	Nr  r6   r  Úalwaysri   r   r	  rÈ   )r;   r<   r  r>   ÚwarningsÚsimplefilterr   rŒ   rß   r#   r	   r   Úisneginf)r  r  rg   ri   r@   r@   rA   Útest_coint_identical_series‰  s    r!  c               	   C   s    d} d}t j d¡ |t j | d¡ }d|jdd� dt j | ¡  }t dt¡ tjdd	��}t	||d
dd d�}W 5 Q R X t
|d dƒ tt  |d ¡ƒ d S )Nr  r6   r  r5   rE   gH¯¼šò×z>r  T)Úrecordri   r   r	  rÈ   )r;   r<   r  r>   Úsumr  r  r   Úcatch_warningsr#   r	   r   r   )r  r  rf   rg   Úwri   r@   r@   rA   Útest_coint_perfect_collinearity•  s     r&  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestGrangerCausalityc              	   C   sÀ   t  ¡ j}|ddg j}| t¡}tjt |¡dd�}ddddg}t	j
td	d
��& t|d d …dd d…f ddd�}W 5 Q R X t||d d d dd� t|d d d |d d d dd� d S )NrC   rD   r   rE   g,»`pÍÏ?gV½Ðé?éÃ   r5   ú
verbose is©Úmatchr6   rÍ   F©ÚverboseÚ	ssr_ftesté   ©ÚdecimalÚparams_ftest)r   rF   rG   rH   rI   rJ   r;   rK   rL   rŒ   rß   ÚFutureWarningr$   r   )rW   rM   rG   Zr_resultÚgrr@   r@   rA   Útest_grangercausality¤  s    

*  ÿz*TestGrangerCausality.test_grangercausalityc              	   C   s  t  ¡ j}|ddg j}| t¡}tjt |¡dd�}t	j
tdd��& t|d d …dd d…f d	d
d�}W 5 Q R X t	j
tdd��( t|d d …dd d…f d	gd
d�}W 5 Q R X d|ks¸t‚d|ksÄt‚t|d	 d d |d	 d d dd� t|d	 d d |d	 d d dd� d S )NrC   rD   r   rE   r)  r*  r6   rÍ   r5   Fr,  r.  r/  r0  r2  )r   rF   rG   rH   rI   rJ   r;   rK   rL   rŒ   rß   r3  r$   rî   r   )rW   rM   rG   r4  Zgr2r@   r@   rA   Útest_grangercausality_single´  s(    

*,  ÿ  ÿz1TestGrangerCausality.test_grangercausality_singlec              
   C   sx   t j dd¡}tjtdd�� t|ddd� W 5 Q R X t t¡�. tjtdd�� t|ddd� W 5 Q R X W 5 Q R X d S )Nrù   r5   r)  r*  Fr,  r4   )	r;   r<   ÚrandrŒ   rß   r3  r$   r�   rŽ   ©rW   Úreset_randomstaterf   r@   r@   rA   Ú test_granger_fails_on_nobs_checkÆ  s    z5TestGrangerCausality.test_granger_fails_on_nobs_checkc              	   C   sJ   t j dd¡}t j|d< t j|d< tjtdd�� t|dƒ W 5 Q R X d S )Néè  r5   )éô  r   )iî  r6   zx contains NaNr*  )	r;   r<   r7  r·   ÚinfrŒ   r�   rŽ   r$   r8  r@   r@   rA   Ú"test_granger_fails_on_finite_checkÏ  s
    

z7TestGrangerCausality.test_granger_fails_on_finite_checkc              	   C   s<   t j dd¡}tjtdd�� t|dddgƒ W 5 Q R X d S )Nr;  r5   zAmaxlag must be a non-empty list containing only positive integersr*  r   r6   )r;   r<   r7  rŒ   r�   rŽ   r$   r8  r@   r@   rA   Útest_granger_fails_on_zero_lagÖ  s    þz3TestGrangerCausality.test_granger_fails_on_zero_lagN)rb   rc   rd   r5  r6  r:  r>  r?  r@   r@   r@   rA   r'  £  s
   	r'  c                   @   st   e Zd 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S )ÚTestKPSSzº
    R-code
    ------
    library(tseries)
    kpss.stat(x, "Level")
    kpss.stat(x, "Trend")

    In this context, x is the vector containing the
    macrodata['realgdp'] series.
    c                 C   s   t  ¡ | _| jjd j| _d S ©NrC   ©r   rF   rG   rH   rf   rr   r@   r@   rA   Úsetupë  s    
zTestKPSS.setupc              	   C   sB   t  t¡� t| jdd� W 5 Q R X tj dd¡}tt	t|ƒ d S )NÚlegacyrÞ   é   r5   )
rŒ   rß   r   r'   rf   r;   r<   r7  r
   rŽ   r8  r@   r@   rA   Útest_fail_nonvector_inputð  s    z"TestKPSS.test_fail_nonvector_inputc              	   C   s°   t  t¡� t| jddd� W 5 Q R X t  t¡� t| jddd� W 5 Q R X t  t¡� t| jddd� W 5 Q R X t  t¡� t| jddd� W 5 Q R X ttt| jddd� d S )Nri   rD  rÞ   ÚCry   ZCTzunclear hypothesis)rŒ   rß   r   r'   rf   r
   rŽ   rV   r@   r@   rA   Útest_fail_unclear_hypothesisø  s        ÿz%TestKPSS.test_fail_unclear_hypothesisc              	   C   st   t  t¡� t| jddƒ\}}}}W 5 Q R X t|dtƒ t  t¡� t| jddƒ\}}}}W 5 Q R X t|dtƒ d S )Nri   r4   g¨5Í;N@ry   g?W[±¿ìò?)rŒ   rß   r   r'   rf   r   r®   )rW   Z	kpss_statr‡   r@   r@   rA   rX     s      zTestKPSS.test_teststatc              	   C   sp   t  t¡� t| jddƒ\}}}}W 5 Q R X t|dƒ t  t¡� t| jddƒ\}}}}W 5 Q R X t|dƒ d S )Nri   r4   ç{®Gáz„?ry   ©rŒ   rß   r   r'   rf   r	   )rW   r‡   Úpvalr@   r@   rA   Ú	test_pval  s     
 zTestKPSS.test_pvalc              	   C   sP   t  t¡� t| jdddƒ\}}}}W 5 Q R X t|jt| jƒƒ t|jdƒ d S )Nri   r4   T)	rŒ   rß   r   r'   rf   r	   r  ÚlenrÕ   ©rW   r‡   r†   r@   r@   rA   Ú
test_store  s    "zTestKPSS.test_storec              	   C   s  t  t¡� t| jddd�}W 5 Q R X t|d dƒ tt ¡ jd ddd�}t|d dƒ t  t¡� tt	 ¡ jd ddd�}W 5 Q R X t|d d	ƒ t  t¡� tt
 ¡ jd
 ddd�}W 5 Q R X t|d dƒ t  t¡� tt ¡ jd ddd�}W 5 Q R X t|d dƒ d S )Nri   ÚautorÞ   r5   é	   ÚSUNACTIVITYr/  Úvolumer2   Zlncoinsry   éK   Zinvté   )rŒ   rß   r   r'   rf   r	   r   ÚloadrG   r   r   r   ©rW   rÊ   r@   r@   rA   Ú	test_lags"  s    """zTestKPSS.test_lagsc              	   C   sD   t | jƒ}d ||¡}tjt|d�� t| jd|d� W 5 Q R X d S )Nz3lags \({}\) must be < number of observations \({}\)r*  ri   rÞ   )rM  rf   ÚformatrŒ   r�   rŽ   r'   )rW   r  Úmsgr@   r@   rA   Útest_kpss_fails_on_nobs_check7  s    
 ÿz&TestKPSS.test_kpss_fails_on_nobs_checkc              	   C   sD   t  dddddddg¡}t jt  |d¡dddgf }t|dd� d S )Nr   r6   rÌ   é*   rP  rÞ   )r;   r¶   Úr_Ztiler'   )rW   ÚbaseZdata_which_breaks_autolagr@   r@   rA   Ú5test_kpss_autolags_does_not_assign_lags_equal_to_nobsB  s    z>TestKPSS.test_kpss_autolags_does_not_assign_lags_equal_to_nobsc              	   C   s8   t  t¡� t| jddd�}W 5 Q R X t|d dƒ d S )Nri   rD  rÞ   r5   é   rJ  rW  r@   r@   rA   Útest_legacy_lagsJ  s    zTestKPSS.test_legacy_lagsc              	   C   s*   t  t¡� t| jddd� W 5 Q R X d S )Nri   ÚunknownrÞ   )rŒ   r�   rŽ   r'   rf   rV   r@   r@   rA   Útest_unknown_lagsP  s    zTestKPSS.test_unknown_lagsc              	   C   s(   t  t¡� t| jd d� W 5 Q R X d S )NrÞ   )rŒ   rß   r3  r'   rf   rV   r@   r@   rA   Ú	test_noneU  s    zTestKPSS.test_noneN)rb   rc   rd   re   rv   rC  rF  rH  rX   rL  rO  rX  r[  r_  ra  rc  rd  r@   r@   r@   rA   r@  ß  s   
			r@  c                   @   sF   e Zd ZdZedd„ ƒZddd„Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚTestRURa  
    Simple implementation
    ------
    Since an R implementation of the test cannot be found, the method is tested against
    a simple implementation using a for loop.
    In this context, x is the vector containing the
    macrodata['realgdp'] series.
    c                 C   s   t  ¡ | _| jjd j| _d S rA  rB  rr   r@   r@   rA   rC  d  s    
zTestRUR.setupFc                 C   sÊ  t |dƒ}t|dƒ}|jd }||jkr8td |j¡ƒ‚ddddd	d
g}t ddddddddddddg¡}t ddddddgdddd d!d"gd#d$d%d&d'd(gd)d*d+d,d-d.gd/d0d1d2d3d4gd5d6d7d8d9d4gd:d;d<d=d>d?gd@dAdBdCdDdEgdFdGdHdIdJdKgdLdMdNdOdPdQgdRdSdNdTdUdVgdWdXdYdZd[d\gg¡}t d]|jd] f¡}t	|jd] ƒD ],}t
||d d …|f ƒ}	|	|ƒ|d|f< �q>d}
|d }|d }|d]d … D ]2}||k�r¦|}|
d] }
||k �rŒ|}|
d] }
�qŒ|
t t|ƒ¡ }t|ƒd] }t	t|ƒd] d^d^ƒD ]$}||d|f k �r|}n �q�qò|| }d_}d`}||d^ k�r<da}n||d k�rNdb}|�rht |j|dc�t¡ |dd |de |df |dg dhœ}|�r¼ddilm} |ƒ }||_dj|_dk|_||||fS |||fS d S )lNrf   r†   r   zx of shape {0} not understoodrI  gš™™™™™™?rŸ   gš™™™™™¹?çÍÌÌÌÌÌì?gffffffî?é   é2   éd   é–   r  r:   r<  r;  iÐ  i¸  i   iˆ  gŒJê4å?gâX·Ñ ê?g`vOjí?gkšwœ¢#ñ?gÀ[ Añã@g}®¶bÙ@gI�€&Â†é?gÌîÉÃB­í?gûËîÉÃð?gMóŽSt$ó?gÐDØðt@g�(í¾°@g /Ý$í?gO¯”eˆcð?gŠcîZBò?gW[±¿ìžô?geª`TR§@g“©‚QI	@gaTR' ‰î?g&S£’:ñ?gZõ¹ÚŠýò?g¡Ö4ï8Eõ?goƒÀÊ!@gkšwœ¢£	@g�Å�1wï?g‰ÒÞà“ñ?gÍ;NÑ‘\ó?góŽSt$—õ?g5ï8EGr@gðHPü	@gÀ[ Añï?gâX·Ññ?g6<½R–ó?gäƒžÍªÏõ?gGx$¨@g'Â†§WÊð?gŒ¹k	ù ò?gŸÍªÏÕVô?gö—Ý“‡…ö?gµ7øÂd*@gY·Ñ Þ
@g˜Ý“‡…Zñ?g•Ô	h"ó?g€·@‚âÇô?gOjMóö?g/n£¼…@gRI�€&B@g	ž^)Ëñ?g…ëQ¸…ó?g^ºI+õ?gîëÀ9#J÷?gRI�€&Â@g"Žuq�@g°çŒ(íñ?gyé&1¬ó?g;M„Oõ?gHPüs÷?g¹ü‡ôÛ×@g¿œ3¢´@g¾0™*ò?goð…ÉTÁó?gn4€·@‚÷?g;ßO�—î@gƒ/L¦
Æ@gŒJê4ò?g¹ü‡ôÛ×ó?gù g³êsõ?gTt$—ÿ�÷?gq¬‹Ûh 	@gcÙ=yØ@r6   rÍ   z¬        The test statistic is outside of the range of p-values available in the
        look-up table. The actual p-value is {direction} than the p-value returned.
        rx   ZsmallerZlarger)Ú	direction)r   r4   )r   r5   )r   r6   )r   r   )rR   rQ   z2.5%rP   )ÚResultsStorezThe series is not stationaryzThe series is stationary)r   r   rÒ   ÚsizerŽ   rY  r;   r¶   rÓ   rÔ   r   ÚsqrtrM  r  Úwarnr   Zstatsmodels.stats.diagnosticrl  r  ZH0ZHA)rW   rf   r†   r  Zpvalsr}   ÚcritZ
inter_critrØ   ræ   ÚcountZmax_pZmin_pÚvÚrur_statÚkZp_valueZwarn_msgrk  Z	crit_dictrl  Zrstorer@   r@   rA   Ú
simple_rurj  sŠ    



ÿôÿ



 ÿüzTestRUR.simple_rurc              	   C   s>   t  t¡� t| jƒ W 5 Q R X tj dd¡}tt	t|ƒ d S )NrE  r5   )
rŒ   rß   r   r.   rf   r;   r<   r7  r
   rŽ   r8  r@   r@   rA   rF  Í  s    z!TestRUR.test_fail_nonvector_inputc              	   C   sH   t  t¡�( t| jƒ\}}}|  | j¡\}}}W 5 Q R X t||tƒ d S r‹   )rŒ   rß   r   r.   rf   ru  r   r®   )rW   rs  r‡   Zsimple_rur_statr@   r@   rA   rX   Ô  s    zTestRUR.test_teststatc              	   C   sF   t  t¡�( t| jƒ\}}}|  | j¡\}}}W 5 Q R X t||ƒ d S r‹   )rŒ   rß   r   r.   rf   ru  r	   )rW   r‡   rK  Zsimple_pvalr@   r@   rA   rL  Ú  s    zTestRUR.test_pvalc              	   C   s@   t  t¡� t| jdƒ\}}}}W 5 Q R X t|jt| jƒƒ d S )NT)rŒ   rß   r   r.   rf   r	   r  rM  rN  r@   r@   rA   rO  à  s    zTestRUR.test_storeN)F)rb   rc   rd   re   rv   rC  ru  rF  rX   rL  rO  r@   r@   r@   rA   re  Z  s   	

cre  c                  C   s.   t tddƒƒ} tt| dd�t| jdd�ƒ d S )Nr6   é   F©r£   )r   r   r   r   rH   )Úsr@   r@   rA   Útest_pandasacovfè  s    ry  c              	   C   sz   t  ¡ j}tdddd�d d… |_|d= t|dd�}t|t|jdd�ƒ tj	 	d	¡}t
 t¡� t|dd� W 5 Q R X d S )
NZ1700Z2009ÚA)ÚstartÚendÚfreqi5  ZYEARFrw  ©rù   r5   )r   rF   rG   r   Úindexr   r	   rH   r;   r<   rŒ   r�   rŽ   )r9  ZdtarÊ   rf   r@   r@   rA   Útest_acovf2dí  s    
r€  ÚdemeanTFÚadjustedc                 C   s@   t jjdd�}t|| |dd�}t|| |dd�}t||dd� d S )Nri  ©rm  T©r�  r‚  r£   Fr/  r0  )r;   r<   Únormalr   r   )r�  r‚  r9  ÚqÚF1ÚF2r@   r@   rA   Útest_acovf_fft_vs_convolutionø  s    r‰  c                 C   sR   t jjdd�}t jjdd�}t||| |dd�}t||| |dd�}t||dd� d S )Né€   rƒ  Fr„  Tr/  r0  )r;   r<   r…  r"   r   )r�  r‚  r9  rf   rg   r‡  rˆ  r@   r@   rA   Útest_ccovf_fft_vs_convolution  s
    r‹  r£   c                 C   sB   t jjdd�}t|| ||d�}t||| ||d�}t||dd� d S )NrŠ  rƒ  r„  r/  r0  )r;   r<   r…  r   r"   r   )r�  r‚  r£   r9  rf   r‡  rˆ  r@   r@   rA   Útest_compare_acovf_vs_ccovf  s    rŒ  c               	   C   s|  ddl m}  t ddg¡}t ddg¡}tjd| f }tjd|f }d}tj d	¡ | |||ƒ}t|d
dgdd�}t dddgdddgdddgdddgdddgg¡}t dddgd d!d"gd#d$d%gd&d'd(gd)d*d+gg¡}t|t	d,ƒt	d-ƒd.�}	t|t	d,ƒt	d-ƒd.�}
t
|jj|	jd,ƒ t
|jj|
jd,ƒ t|jd/ƒ t|jd/ƒ t|jj |	j¡ƒ t|jj |	j¡ƒ t|jj |
j¡ƒ t|jj |
j¡ƒ tjd0d1t|ƒd2�}tj||d3�}t|d4dd
dgdd5�}t
|jj|	jd d-…d d4…f d,ƒ t
|jj|
jd d-…d d4…f d,ƒ t|jd6ƒ t|jd7ƒ t|d
dd�}t
|jj|	jd,ƒ t|jj |	j¡ƒ t|jj |	j¡ƒ t|jd/ƒ d S )8Nr   )Úarma_generate_sampleg      è?g      Ð¿gÍÌÌÌÌÌä?gffffffÖ?r6   r:   iÞ  ÚaicÚbicr}   )Úicr
  göÀžáëâ‡@gsž±ßE�@gÎ»˜ÀD~@gÖA˜ºß��@gÿà�QX~@g·APâA~@gG¨ß¦»°@gVm’.~@gõŒTJµ~@gøÐ²¬£@~@gW�þ`"~@g¾ýÒ=~@gŸ!¿(~@gê1Û_g=~@g4Z»«f]~@gL­RÕÿ‡@g1ô™7~�@g¡–Í¹Çí~@g‚ ¢7É�@gkÅÌX@g6õì¡æ~@g�AŠ®á,€@g™	
¬ñ@g!YÏl8@gx„OJ"@gƒ¢ƒ<@gÞ"j�á�@gËž%Dà7@gÂ–GÌv�@g¸—�ÿÍç@r2   r4   )r  Úcolumns)r6   r5   z2000-1-1ÚM)r}  Úperiods©r  r5   )Zmax_arZmax_mar�  r
  )r5   r6   )r6   r6   )Ústatsmodels.tsa.arima_processr�  r;   r¶   r]  r<   r  r    r   r   r   rŽ  rH   r�  r	   Zaic_min_orderZbic_min_orderr   r  Úequalsr‘  r™   r   rM  r   )r�  ZarparamsZmaparamsZmaparamr  rg   rÊ   Zaic_xZbic_xrŽ  r�  r  Zy_seriesZres_pdr@   r@   rA   Útest_arma_order_select_ic  sj    ûÿ	ûÿ	    ÿ""r—  c                  C   sd   t  ddddddddd	d
ddddddddddg¡} dd l}| ¡ � | d¡ t| ƒ}W 5 Q R X d S )Ng €/‰6‹ë?gM[·!Më?gÕäýœßë?gØ �ëkã?g3þú9ý&æ?gŸEŸ³wç?gbDÂ<ú¾¢?gÙÙäMÄ?g“œKæZÀ?gú®��ÀžÑ¿gxÀµ?ùÎ¿gXU¤£˜Î¿gk
u)á£Ð¿g)s&»ü=Ë¿g‰(¤9thÄ¿gI´½Ð?g
mQ-¹ŽÆ?g¼g÷è^:À?gVó0*Ì¸ì?gºN*tê?r   Úignore)r;   r¶   r  r$  r  r    )rg   r  rÊ   r@   r@   rA   Ú!test_arma_order_select_ic_failureU  s6    ìÿ

r™  c                  C   s*   t t ¡ jdg ddd�} t| jdƒ d S )NrR  TrE  )r£   r    r6   )r   r   rF   rG   r	   Úndim)Úresultr@   r@   rA   Útest_acf_fft_dataframey  s      ÿrœ  c                  C   sŽ   d} d}| t  d¡ }t||dd�\}}}}}t|d| d  ƒ t|t  | gdg|d   ¡d	d
� t|t  d| gdg|d   ¡d	d
� d S )Nrf  rE  r  T©Zisacovr6   r5   r   rÎ   rÏ   )r;   Úaranger(   r   r¶   )ÚrhoÚmZacovZ
sigma2_epsÚarr*   r‡   r@   r@   rA   Útest_levinson_durbin_acov‚  s    $r¢  r³   r´   r²   r¾   rµ   c                 C   s<   t | ||||d�}t | ||||dd�}t|d d… |ƒ d S )N©r‚  r�  r£   r³   rù   ©r‚  r�  r£   r³   Únlagrv  )r   r   ©rB   r‚  r�  r£   r³   ÚfullZlimitedr@   r@   rA   Útest_acovf_nlagsŒ  s         ÿúr¨  c                 C   sR   |   ¡ } tj| dd…< t| ||||d�}t| ||||dd�}t|d d… |ƒ d S )Nr6   r4   r£  rù   r¤  rv  )rÑ   r;   r·   r   r   r¦  r@   r@   rA   Útest_acovf_nlags_missingŸ  s$        ÿúr©  c              	   C   s(   t  t¡� t| ddd� W 5 Q R X d S )Nr:   F)r¥  r£   )rŒ   r�   rŽ   r   )rB   r@   r@   rA   Útest_acovf_error´  s    rª  c                  C   sŽ   t  d¡} d| d< d| d< t| ƒ\}}t|dt  d¡ ƒ t|| dd … dd� t| dd	�\}}t|dt  d
¡ ƒ t|| dd… dd� d S )Nrù   r6   r   rf  g      $@rÎ   rÏ   r2   rÞ   rö   r1   )r;   rÓ   r)   r   rž  )r*   r¡  r   r@   r@   rA   Útest_pacf2acf_ar¹  s    
r«  c               
   C   s‚   dt  d¡  } d| d< t| ƒ\}}t|ddd�\}}}}}t||dd	� t| |dd	� d
dddddddddg
}t||dd	� d S )Nrf  ç      &@r6   r   rù   Tr�  rÎ   rÏ   g¢´7øÂ¤Àg4€·@‚‚"ÀgeâX÷,ÀgJ+‡¦1ÀgUÁ¨¤N€1Àgd]ÜF˜,Àg/Ý$#Àgê•²q¬ÀgÙ=yX¨ü¿g¬­Ø_vOÖ¿ç-Cëâ6?)r;   rž  r)   r(   r   )r*   r¡  r   r‡   Zar_ldZpacf_ldZ	ar_from_rr@   r@   rA   Útest_pacf2acf_levinson_durbinÆ  s$    ör®  c               	   C   s¬   dt  d¡  } d| d< t t¡� t| dd� W 5 Q R X t t¡� t| dd … ƒ W 5 Q R X t t¡� tt  d¡ƒ W 5 Q R X t t¡� tt  d¡ƒ W 5 Q R X d S )	Nrf  r¬  r6   r   rE  rÞ   rù   r~  )r;   rž  rŒ   r�   rŽ   r)   rÓ   )r*   r@   r@   rA   Útest_pacf2acf_errorsÞ  s    r¯  c            	      C   s¢   t j d¡} |  d¡}|dd … d|d d…   }t|dƒ\}}t|dƒ}t||dd� || ¡  }| |¡d	 }d
|d
< |t  	d|d  ¡ }t||dd� d S )Nr9   i'  r6   rø   rÍ   rù   gü©ñÒMb@?rÏ   i'  r   r5   çü©ñÒMbP?)
r;   r<   r=   r>   r+   r-   r   rª   ÚdotZcumprod)	r?   Úerg   r*   Úsigma2Zyw_pacfZyeZs2yZsigma2_directr@   r@   rA   Útest_pacf_burgë  s    

r´  c                	   C   sP   t  t¡� tt d¡dƒ W 5 Q R X t  t¡� tt d¡dƒ W 5 Q R X d S )N)rE  r5   rù   ri  ée   )rŒ   r�   rŽ   r+   r;   rº   r@   r@   r@   rA   Útest_pacf_burg_errorú  s    r¶  c                  C   s˜   d} t  d| d  | g¡}t|dd�\}}t  dgdgdgd	gg¡}t||d
d� t|ddddgd
d� t|dd�\}}t|d | ƒ t|d dƒ d S )NçÍÌÌÌÌÌì¿r6   r5   r3   ©r  r   gŠŽäòÒß¿gkšwœ¢#å¿g6«>W[±ç¿r­  r  gö(\�Âõü?gÍÌÌÌÌÌõ?g¦›Ä °ró?g#J{ƒ/Lò?r<  )rÍ   r   rÍ   rÌ   )r;   r¶   r%   r   )Úmar   Úthetar³  Z	exp_thetar@   r@   rA   Ú%test_innovations_algo_brockwell_davis  s    r»  c                  C   s|   t  ddg¡} t  d| d  ¡  | d | d | d   | d g¡}t|dd�\}}t|ddd	�\}}t||ƒ t||ƒ d S )
Nr·  rø   r6   r5   r   r<  r¸  rÎ   )r  r  )r;   r¶   r#  r%   r   )r¹  r   rº  r³  Ztheta_2Zsigma2_2r@   r@   rA   Útest_innovations_algo_rtol  s    4
r¼  c               	   C   s¨   d} t  d| d  | g¡}t t¡� t|dd� W 5 Q R X t t¡� t|dd� W 5 Q R X t t¡� tt  d¡ƒ W 5 Q R X t t¡� t|dd	� W 5 Q R X d S )
Nr·  r6   r5   gš™™™™™@r¸  rÍ   ©r5   r5   rµ   r  )r;   r¶   rŒ   r�   Ú	TypeErrorr%   rŽ   rº   )r¹  r   r@   r@   rA   Útest_innovations_errors  s    r¿  c           
      C   s°   d}t  d|d  |g¡}t|dd�\}}t j d¡}|dd … ||d d…   }t||ƒ}|d g}tddƒD ]&}	| ||	 ||	df |d   ¡ qpt  |¡}t||ƒ d S )	Nr·  r6   r5   r3   r¸  r2   rÍ   r   )	r;   r¶   r%   r<   r>   r&   rÔ   Úappendr   )
r9  r¹  r   rº  r‡   r²  ÚendogÚresidÚexpectedrØ   r@   r@   rA   Ú'test_innovations_filter_brockwell_davis$  s    

$
rÄ  c           	      C   s¨   t  ddg¡}t  d|d  ¡  |d |d |d   |d g¡}t|dd�\}}t j d¡}tj|tjddd	�d
�}t	||ƒ}t	||ƒ}t
||jƒ t|j|jƒ d S )Nr·  rø   r6   r5   r   rù   r¸  z
2000-01-01)r“  r”  )r;   r¶   r#  r%   r<   r>   r™   r   r   r&   r   rH   r   r  )	r9  r¹  r   rº  r‡   rÁ  Zendog_pdrÂ  Zresid_pdr@   r@   rA   Útest_innovations_filter_pandas2  s    4

rÅ  c               	   C   s®   d} t  d| d  | g¡}t|dd�\}}t t¡� tt  d¡|ƒ W 5 Q R X t t¡� tt  d¡|d d… ƒ W 5 Q R X t t¡� tt 	t  d¡¡|ƒ W 5 Q R X d S )	Nr·  r6   r5   r3   r¸  r½  rÍ   )r6   r3   )
r;   r¶   r%   rŒ   r�   rŽ   r&   rº   r™   r   )r¹  r   rº  r‡   r@   r@   rA   Útest_innovations_filter_errors>  s    "rÆ  c                 C   s&  t  dg¡}t  dg¡}d}t jjdd�}tt jd| f t jd|f t|ƒd�}t|ƒ\}}t||ƒ}d|d  ||  dt  	dt j
 | ¡  }	t|t|ƒd	t|ƒfd
�}
|
 t j|||f ¡}trÌdnd}t||jd	 d|d� t|dd …d	f |jjd	d	d d…f |d� t|	|j|d� d S )Nrø   gš™™™™™É?r6   rù   rƒ  r¸  g      à¿r5   r   )Úorderg�íµ ÷Æ°>rÈ   r  rÍ   rÏ   )r;   r¶   r<   r…  r   r]  rM  r%   r&   rL   Úpir   Úfilterr   r   Zforecasts_errorZfilter_resultsZkalman_gainÚllf_obs)r9  Z	ar_paramsZ	ma_paramsr³  rÁ  r   rº  rr  ÚurÊ  ÚmodrÊ   rÐ   r@   r@   rA   Ú*test_innovations_algo_filter_kalman_filterJ  s,      ÿ
,  ÿrÍ  c              	   C   sŽ   t j d¡}t|dd�}|d jdks*t‚t j d¡}tjtdd�� t|ƒ W 5 Q R X t j d	¡}tjtdd�� t|d
d� W 5 Q R X d S )Nr/  T)r†   rÍ   r6   r5   zsample size is too shortr*  r4   ry   ©rk   )	r;   r<   Ústandard_normalr   rm   rî   rŒ   r�   rŽ   )r9  rg   rÊ   r@   r@   rA   Útest_adfuller_short_seriesl  s    rÐ  c              	   C   s6   t j d¡}tjtdd�� t|dd� W 5 Q R X d S )Nri  zmaxlag must be less thanr*  é3   ©rm   )r;   r<   rÏ  rŒ   r�   rŽ   r   )r9  rg   r@   r@   rA   Útest_adfuller_maxlag_too_largex  s    rÓ  c                   @   s<   e Zd ZeZej ed¡Zej ed¡Z	e
 e e	¡¡ZdS )ÚSetupZivotAndrewsr‘   zrgnp.csvN)rb   rc   rd   r—   Zcur_dirr”   r•   r–   Úrun_dirZ	fail_filer;   Úasarrayr™   rš   Úfail_mdlr@   r@   r@   rA   rÔ  ~  s   rÔ  c                   @   sp   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
ddg¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestZivotAndrewsc              	   C   s(   t  t¡� t| jdd� W 5 Q R X d S )Nrf   rÎ  ©rŒ   r�   rŽ   r/   r×  rV   r@   r@   rA   Útest_fail_regression_typeŠ  s    z*TestZivotAndrews.test_fail_regression_typec              	   C   s(   t  t¡� t| jdd� W 5 Q R X d S )Nrø   )ZtrimrÙ  rV   r@   r@   rA   Útest_fail_trim_valueŽ  s    z%TestZivotAndrews.test_fail_trim_valuec              	   C   s,   t  t¡� ttj dd¡ƒ W 5 Q R X d S )Nrh  r5   )rŒ   r�   rŽ   r/   r;   r<   r7  rV   r@   r@   rA   Útest_fail_array_shape’  s    z&TestZivotAndrews.test_fail_array_shapec              	   C   s(   t  t¡� t| jdd� W 5 Q R X d S )NÚNone©rl   rÙ  rV   r@   r@   rA   Útest_fail_autolag_type–  s    z'TestZivotAndrews.test_fail_autolag_typerl   ZAICrŽ  ZAicc                 C   s"   t | j|d�}|d dkst‚d S )NrÞ  r4   r6   )r/   r×  rî   )rW   rl   rÊ   r@   r@   rA   Útest_autolag_case_sensitivityš  s    z.TestZivotAndrews.test_autolag_case_sensitivityc                 C   s<   t | jddd d�}t|d |d |d gddd	gd
d� d S )Nr0   ri   ©rm   rk   rl   r   r6   r3   g’\þCúMÀgå'Õ>�i?rE  r°  r  )r/   r×  r   rW  r@   r@   rA   Útest_rgnp_case   s       ÿ  ÿzTestZivotAndrews.test_rgnp_casec                 C   sb   t j | jd¡}t t |¡¡}t|dddd�}t	|d |d |d |d	 gd
dddgdd� d S )Nz
gnpdef.csvr0   ri   út-statrá  r   r6   r4   r3   g±Pkšw|Àg�üÁÀsïÑ?r2   rž   r°  r  ©
r”   r•   r–   rÕ  r;   rÖ  r™   rš   r/   r   ©rW   ZmdlfileZmdlrÊ   r@   r@   rA   Útest_gnpdef_case¨  s    
ýz!TestZivotAndrews.test_gnpdef_casec                 C   sb   t j | jd¡}t t |¡¡}t|dddd�}t	|d |d |d |d	 gd
dddgdd� d S )Nz
stkprc.csvr0   ry   rã  rá  r   r6   r4   r3   gèy’tmÀgŠ}"O‚?éA   r°  r  rä  rå  r@   r@   rA   Útest_stkprc_case²  s    
ýz!TestZivotAndrews.test_stkprc_casec                 C   sb   t j | jd¡}t t |¡¡}t|dddd�}t	|d |d |d |d	 gd
dddgdd� d S )Nz	rgnpq.csvé   Útrã  rá  r   r6   r4   r3   g*Wx—‹8ÀgCV·zNzä?éf   r°  r  rä  rå  r@   r@   rA   Útest_rgnpq_case¼  s    
ýz TestZivotAndrews.test_rgnpq_casec                 C   s`   t j | jd¡}t t |¡¡}t|ddd�}t	|d |d |d |d gd	d
ddgdd� d S )Nzrand10000.csvri   rã  )rk   rl   r   r6   r4   r3   g]3ùf›ÛÀg¯þ·’æ?rg  iŸ  r°  r  rä  rå  r@   r@   rA   Útest_rand10000_caseÆ  s    
ýz$TestZivotAndrews.test_rand10000_caseN)rb   rc   rd   rÚ  rÛ  rÜ  rß  rŒ   r   r  rà  râ  ræ  rè  rì  rí  r@   r@   r@   rA   rØ  ‡  s   



rØ  c                 C   sÜ   t j d¡}td|jd ƒD ] }||  d||d   7  < qt j|d d d…< t|dddd	�}|t  |¡ }t  d
¡}|jd }t  	|| ¡}tdd
ƒD ].}t  	||d … |d || …  ¡| ||< q˜t
||ddd� d S )Nri  r6   r   rf  r/  r´   rù   F)r³   r    r£   rv  r­  r  )r;   r<   rÏ  rÔ   rÒ   r·   r   Znanmeanrà   Znansumr   )r9  r²  rØ   r›  rÂ  rÃ  r  Zgamma0r@   r@   rA   Útest_acf_conservate_nanopsÑ  s    

,rî  c              	   C   s4   t j d¡}tjtdd�� t|dƒ W 5 Q R X d S )Nri  zCan only compute partialr*  rh  )r;   r<   rÏ  rŒ   r�   rŽ   r*   )r9  r²  r@   r@   rA   Útest_pacf_nlags_errorá  s    rï  c               	   C   s\   t j d¡} t  |  d¡¡}t  |  d¡¡}t||dddddd�}t  |d ¡d	k sXt‚d S )
Nl   �0= ri  ri   Zaegr   rã  F)r
  rÇ   rm   rl   Zreturn_resultsgffffffú?)r;   r<   r=   r  rÏ  r#   Úabsrî   )Úrsrf   rg   rÊ   r@   r@   rA   Útest_coint_auto_tstatç  s    ù	rò  éx   )ÚbÚa)rõ  rô  Údatasetc              
   C   sB   t  t¡�. t jtdd�� t| ddd� W 5 Q R X W 5 Q R X d S )Nr-  r*  r3   Fr,  )rŒ   r�   r   rß   r3  r$   )rö  r@   r@   rA   Ú!test_granger_causality_exceptions  s    r÷  c              	   C   sN   t jtdd�� t| dd� W 5 Q R X t  t¡� t| ddd� W 5 Q R X d S )Nzmaxlag must ber*  rÍ   rÒ  r4   F)Zaddconst)rŒ   r�   rŽ   r$   ÚNotImplementedError©rN   r@   r@   rA   Ú'test_granger_causality_exception_maxlag  s    rú  c              	   C   s,   t jtdd�� t| ddd� W 5 Q R X d S )Nr-  r*  r4   Tr,  )rŒ   rß   r3  r$   rù  r@   r@   rA   Útest_granger_causality_verbose  s    rû  )šZstatsmodels.compat.numpyr   Zstatsmodels.compat.pandasr   Zstatsmodels.compat.platformr   Zstatsmodels.compat.pythonr   r”   r  Únumpyr;   Znumpy.testingr   r   r   r	   r
   Zpandasr™   r   r   r   rŒ   Zscipy.interpolater   Zstatsmodels.datasetsr   r   r   r   r   Zstatsmodels.tools.sm_exceptionsr   r   r   r   r   Zstatsmodels.tools.validationr   r   r•  r   Z"statsmodels.tsa.statespace.sarimaxr   Zstatsmodels.tsa.stattoolsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r¨   rÉ   rU   r  r®   r`   Z	DECIMAL_1r•   ÚdirnameÚabspathÚ__file__r—   ZfixturerB   rN   rO   rh   rw   r|   r�   r„   r…   r   r  r§  r�   r�   r›   r°   r±   rÄ   rä   r  r  r  r!  r&  r'  r@  re  ry  r€  r‰  r‹  rŒ  ZsmokeZslowr—  r™  rœ  r¢  r¨  r©  rª  r«  r®  r¯  r´  r¶  r»  r¼  r¿  rÄ  rÅ  rÆ  rÍ  rÐ  rÓ  rÔ  rØ  rî  rï  rò  r<   r=   rñ  Zrandom_samplerõ  Z
zeros_likerô  Zdf1Zdf2Z	ones_likeZdf3Zdf4Zgc_data_setsr÷  rú  rû  r@   r@   r@   rA   Ú<module>   sæ   T



		
:7x <{ 	;$	
	"	J



