U
    md                     @   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jHIejHJeK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jWXd*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jWXdNdOdPgejWXdQdOdPgdRdS ZkejWXdNdOdPgejWXdQdOdPgdTdU ZlejWXdNdOdPgejWXdQdOdPgejWXdVdOdPgdWdX ZmejWjnejWjodYdZ Zpd[d\ Zqd]d^ Zrd_d` ZsejWXdadbdcdddegejWXdVdPdOgejWXdNdOdPgejWXdQdOdPgdfdg ZtejWXdadbdcgejWXdVdPdOgejWXdNdOdPgejWXdQdOdPgdhdi Zudjdk Zvdldm Zwdndo Zxdpdq Zydrds Zzdtdu Z{dvdw Z|dxdy Z}dzd{ Z~d|d} Zd~d Zdd Zdd Zdd Zdd ZG dd dZG dd deZdd Zdd Zdd ZejdZedZeeZeeedZeeedZeeZeeedZeeedZeeeegZejWXdedd Zdd Zdd Zd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 )N90     )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?gf?+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?gI+"~jt	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   gwr.@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
@HV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SK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   gS㥛gS㥛?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:0yE>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{(vT"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
 qi }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qt|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;,g0Wg ng bgA>"g3x֚gUgUpg$ri   g$
gpʐȝg!
g҆gSZg%Igkţ/wgσjEgć!6g1;];gg+ggg`EzcttgSsgo$/ggx\tjig3grqg!gL'g]ɬJ	gkgȨK3g!S4Mg0r}   g权ng8gȁgMncd)ri   ry   r  r}   gdy=rtolgv!>r  r   )r
  rm   gIwvc+gq:i}f:g|=g<6S:)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   gHz>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std|kst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   g5;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   {Gz?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}|rd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?gX ?g`vOj?gkw#?g[ A@g}b@gI&?gB?g?gMSt$?gDt@g(@g/$?gOec?gcZB?gW[?ge`TR@gQI	@gaTR'?g&S:?gZڊ?g48E?go!@gkw	@gŏ1w?g?g;Nё\?gSt$?g58EGr@gHP	@g[ A?gX?g6<R?g䃞ͪ?gGx$@g'W?gk	?gͪV?gݓ?g7d*@gY 
@gݓZ?g	h"?g@?gOjM?g/n@gRI&B@g	^)?gQ?g^I+?g9#J?gRI&@g"uq@g(?gy&1?g;MO?gHPs?g@g3@g0*?goT?gn4@?g;O@g/L
@gJ4?g?ggs?gTt$?gqh 	@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sE@gλD~@gAߐ@gQX~@gAPA~@gGߦ@gVm.~@gTJ~@gв@~@gW`"~@g=~@g!(~@g1_g=~@g4Zf]~@gLR@g17~@g͹~@g 7Ɂ@gkX@g6~@gA,@g	
@g!Yl8@gxOJ"@g<@g"j@g˞%D7@gGv@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?g39&?gEw?gbD<?gM?gKZ?gѿgx?οgXUοgk
u)пg)s&=˿g(9thĿgI?g
mQ-?gg^:?gV0*̸?gN*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   g7¤g4@"geX,gJ+1gUN1gd]F,g/$#gꕲqg=yXg_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   gMb@?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 )Nr6   r5   r3   r  r   g߿gkw#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rd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\CM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   gPkw|gs?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ytm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*Wx8gCVzNz?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]3f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 ||   | ||< qt
||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



