
    Vfd                     v   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        I                    ejH        J                    eK                    ZL ejM        d          d             ZN ejM        d          d             ZO G d d          ZP G d deP          ZQ G d deP          ZR G d  d!eP          ZS G d" d#eP          ZT G d$ d%eP          ZU G d& d'eP          ZVejW        X                    d( ejY        dd)          g          d*             ZZ G d+ d,          Z[ G d- d.e[          Z\ G d/ d0e[          Z] G d1 d2e[          Z^ G d3 d4e[          Z_ G d5 d6          Z` G d7 d8          Za G d9 d:ea          Zbd; Zcd< Zdd= Ze G d> d?          Zf G d@ dA          Zg G dB dC          ZhdD ZidE ZjejW        X                    dFdGdHg          ejW        X                    dIdGdHg          dJ                         ZkejW        X                    dFdGdHg          ejW        X                    dIdGdHg          dK                         ZlejW        X                    dFdGdHg          ejW        X                    dIdGdHg          ejW        X                    dLdGdHg          dM                                     ZmejW        jn        ejW        jo        dN                         ZpdO ZqdP ZrdQ ZsejW        X                    dRg dS          ejW        X                    dLdHdGg          ejW        X                    dFdGdHg          ejW        X                    dIdGdHg          dT                                                 ZtejW        X                    dRdUdVg          ejW        X                    dLdHdGg          ejW        X                    dFdGdHg          ejW        X                    dIdGdHg          dW                                                 ZudX ZvdY ZwdZ Zxd[ Zyd\ Zzd] Z{d^ Z|d_ Z}d` Z~da Zdb Zdc Zdd Zde Zdf Z G dg dh          Z G di dje          Zdk Zdl Zdm Zej                            d          Ze                    dn          Z ej        e          Z ej        eedo          Z ej        eedp          Z ej        e          Z ej        eedo          Z ej        eedp          ZeeeegZejW        X                    dqe          dr             Zds Zdt ZdS )u    )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                  j    t           j                            d          } |                     d          S )N90     )nprandomRandomStaterandn)rnds    Dlib/python3.11/site-packages/statsmodels/tsa/tests/test_stattools.py
acovf_datarC   C   s'    
)


&
&C99S>>    c                      t          j                    j        } | ddg         j        } |                     t
                    }t          j        t          j        |          d          S )Nrealgdprealconsr   axis)	r   load_pandasdatavaluesastypefloatr=   difflog)mdatarK   s     rB   gc_datarR   I   sS    !##(E9j)*1E<<D726$<<a((((rD   c                       e Zd ZdZg dZ ej                    Zej        d         j        Z	ej        d         j        Z
d Zd Zd ZdS )	CheckADFzI
    Test Augmented Dickey-Fuller

    Test values taken from Stata.
    1%5%10%rF   inflc                 R    t          | j        d         | j        t                     d S )Nr   )r	   res1teststat	DECIMAL_5selfs    rB   test_teststatzCheckADF.test_teststat]   s"    DIaL$-CCCCCrD   c                 R    t          | j        d         | j        t                     d S Nr7   )r	   r[   pvaluer]   r^   s    rB   test_pvaluezCheckADF.test_pvalue`   s"    DIaL$+yAAAAArD   c                 d      fd j         D             }t          | j        t                     d S )Nc                 6    g | ]}j         d          |         S )r4   )r[   ).0levr_   s     rB   
<listcomp>z,CheckADF.test_critvalues.<locals>.<listcomp>d   s$    ???Cdil3'???rD   )levelsr	   
critvalues	DECIMAL_2)r_   rk   s   ` rB   test_critvalueszCheckADF.test_critvaluesc   s8    ????4;???
JCCCCCrD   N)__name__
__module____qualname____doc__rj   r   rJ   rK   rL   xyr`   rd   rm    rD   rB   rT   rT   Q   s          !  F 9 ""D	)#A	& AD D DB B BD D D D DrD   rT   c                   (    e Zd ZdZed             ZdS )TestADFConstantz*
    Dickey-Fuller test for unit root
    c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Ncr4   
regressionautolagmaxlagg"]3?gf?g+gMbg/$r    rr   r[   r\   rc   rk   clss    rB   setup_classzTestADFConstant.setup_classm   ;    CEc4JJJ!
111rD   Nrn   ro   rp   rq   classmethodr   rt   rD   rB   rv   rv   h   s9          2 2 [2 2 2rD   rv   c                   (    e Zd ZdZed             ZdS )TestADFConstantTrend c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Nctr4   ry   g|kɴg?)gI+"~jt	r~   r   s    rB   r   z TestADFConstantTrend.setup_classx   s;    CEdDKKK!
111rD   Nr   rt   rD   rB   r   r   u   s2        
F2 2 [2 2 2rD   r   c                   (    e Zd ZdZed             ZdS )TestADFNoConstantr   c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Nnr4   ry   gwr.@gwJ?gV-g333333gZd;r~   r   s    rB   r   zTestADFNoConstant.setup_class   s=    CEc4JJJ 

 211rD   Nr   rt   rD   rB   r   r      s2        
F	2 	2 [	2 	2 	2rD   r   c                   $    e Zd Zed             ZdS )TestADFConstant2c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Nrx   r7   ry   g
@HVgRjN=V9?r}   r    rs   r[   r\   rc   rk   r   s    rB   r   zTestADFConstant2.setup_class   r   rD   Nrn   ro   rp   r   r   rt   rD   rB   r   r      -        2 2 [2 2 2rD   r   c                   $    e Zd Zed             ZdS )TestADFConstantTrend2c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Nr   r7   ry   gSKgZ`?)g/$r   r   r   r   s    rB   r   z!TestADFConstantTrend2.setup_class   s;    CEdDKKK 
111rD   Nr   rt   rD   rB   r   r      r   rD   r   c                   *    e Zd Zed             Zd ZdS )TestADFNoConstant2c                     t          | j        dd d          | _        d| _        d| _        g d| _        t          | j        dd dd          \  }}}| _        d S )	Nr   r7   ry   g'6zgKXc'?r   T)rz   r{   r|   store)r    rs   r[   r\   rc   rk   r   )r   __1_2s       rB   r   zTestADFNoConstant2.setup_class   si    CEc4JJJ!
 211'Ec4 
  
  
2r3999rD   c                 T    t          | j                                        d           d S )Nz$Augmented Dickey-Fuller Test Results)r
   r   __str__r^   s    rB   test_store_strz!TestADFNoConstant2.test_store_str   s2    J  "H	
 	
 	
 	
 	
rD   N)rn   ro   rp   r   r   r   rt   rD   rB   r   r      s<        	
 	
 [	

 
 
 
 
rD   r   rr         @c                     t          j        t                    5  t          |            d d d            d S # 1 swxY w Y   d S N)pytestraises
ValueErrorr    )rr   s    rB   !test_adfuller_resid_variance_zeror      s    	z	"	"                   s   7;;c                       e Zd ZdZ ej                    Zej        d         Zej	        
                    edd          Z ej        ed          ZdS )CheckCorrGramz%
    Set up for ACF, PACF tests.
    rF   resultszresults_corrgram.csv,)	delimiterN)rn   ro   rp   rq   r   rJ   rK   rr   ospathjoinCURR_DIRfilenamepdread_csvr   rt   rD   rB   r   r      sd          !9 ""D	)Aw||Hi1GHHHbk(c222GGGrD   r   c                   :    e Zd ZdZed             Zd Zd Zd ZdS )TestACFz'
    Test Autocorrelation Function
    c                     | j         d         | _        | j         d         | _        t          | j        dddd          | _        | j         dd	g         j        | _        d S )
NacvarQ1(   T皙?F)nlagsqstatalphafftacvar_lbacvar_ub)r   r   r   rr   r[   rL   confint_resr   s    rB   r   zTestACF.setup_class   sT    +g&K%	suBd$EJJJ+z:&>?FrD   c                 b    t          | j        d         dd         | j        t                     d S Nr   r7   )   r	   r[   r   	DECIMAL_8r^   s    rB   test_acfzTestACF.test_acf   s+    DIaL2.)DDDDDrD   c                     | j         d         | j         d                             d          d d d f         z
  }t          |dd         | j        t                     d S )Nr7   r   )r[   meanr	   r   r   )r_   centereds     rB   test_confintzTestACF.test_confint   sV    9Q<$)A,"3"3A"6"6qqq$w"??HQrTND,<iHHHHHrD   c                 b    t          | j        d         d d         | j        t                     d S )Nr6   r   r	   r[   r   	DECIMAL_3r^   s    rB   
test_qstatzTestACF.test_qstat   s+    DIaL"-tz9EEEEErD   N)	rn   ro   rp   rq   r   r   r   r   r   rt   rD   rB   r   r      st          G G [GE E EI I IF F F F FrD   r   c                   0    e Zd Zed             Zd Zd ZdS )TestACF_FFTc                     | j         d         | _        | j         d         | _        t          | j        ddd          | _        d S )Nacvarfftr   r   T)r   r   r   )r   r   r   rr   r[   r   s    rB   r   zTestACF_FFT.setup_class   s<    +j)K%	suBd===rD   c                 b    t          | j        d         dd          | j        t                     d S )Nr   r7   r   r^   s    rB   r   zTestACF_FFT.test_acf   s+    DIaL,dh	BBBBBrD   c                 R    t          | j        d         | j        t                     d S rb   r   r^   s    rB   r   zTestACF_FFT.test_qstat   s"    DIaL$*i@@@@@rD   N)rn   ro   rp   r   r   r   r   rt   rD   rB   r   r      sS        > > [>
C C CA A A A ArD   r   c                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )TestACFMissingc                    t          j        t          j        t           j        g          | j        f          | _        | j        d         | _        | j        d         | _        t          | j        ddddd          | _        t          | j        ddddd	
          | _	        t          j
        d          t           j        z  | _        t          j
        d          t           j        z  | _        t          | j        ddddd          | _        d S )Nr   r   r   Tr   dropF)r   r   r   missingr   conservative)r   r   r   r   r   none)r=   concatenatearraynanrr   r   r   r   res_dropres_conservativeemptyacf_none
qstat_noneres_noner   s    rB   r   zTestACFMissing.setup_class  s    "& 2 2CE:;;+g&K%	E4tV
 
 
  #E" 
  
  
 x||bf,".E4tV
 
 
rD   c           	          t          j        t                    5  t          | j        ddddd           d d d            d S # 1 swxY w Y   d S )Nr   TFr   raise)r   r   r   r   r   )r   r   r   r   rr   r^   s    rB   
test_raisezTestACFMissing.test_raise  s    ]+,, 	 	   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	Ac                 b    t          | j        d         dd         | j        t                     d S r   )r	   r   r   r   r^   s    rB   test_acf_nonezTestACFMissing.test_acf_none"  s,    DM!,QrT2DM9MMMMMrD   c                 b    t          | j        d         dd         | j        t                     d S r   )r	   r   r   r   r^   s    rB   test_acf_dropzTestACFMissing.test_acf_drop%  s,    DM!,QrT2DHiHHHHHrD   c                 b    t          | j        d         dd         | j        t                     d S r   )r	   r   r   r   r^   s    rB   test_acf_conservativez$TestACFMissing.test_acf_conservative(  s8    !!$QrT*DHi	
 	
 	
 	
 	
rD   c                 R    t          | j        d         | j        t                     d S )Nr6   )r	   r   r   r   r^   s    rB   test_qstat_nonezTestACFMissing.test_qstat_none-  s#    DM!,doyIIIIIrD   N)
rn   ro   rp   r   r   r   r   r   r   r   rt   rD   rB   r   r      s        
 
 [
*	 	 	N N NI I I
 
 

J J J J JrD   r   c                   H    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
dS )	TestPACFc                 N    | j         d         | _        | j         d         | _        d S )NPACOLSPACYW)r   pacfolspacfywr   s    rB   r   zTestPACF.setup_class:  s"    k(+[)


rD   c                    t          | j        ddd          \  }}t          |dd          | j        t                     ||                    d          d d d f         z
  }ddggdz  }t          |dd         |t                     t          |d	         d
d
g           t          |d	         ddg           t          |d	         d           d S )Nr   r   ols)r   r   methodr7   gS㥛gS㥛?r   r           )r+   rr   r	   r   	DECIMAL_6r   r
   )r_   r   confintr   ress        rB   test_olszTestPACF.test_ols?  s    bUKKKGABBKyAAAW\\!__QQQW55I&'",HQrTNC;;;Xa[3*---WQZ!Q(((WQZ#####rD   c                    d}t          | j        |d          }| j                                        }||                                z  }|j        d         }t          j        |dz
  df          }|dd          }t          j        |dz             }d|d<   t          |          D ]P}|d|dz   z
  |dz             |d d |f<   t          |d d d |dz   f         |d           d         d         ||dz   <   Qt          ||d	
           d S )Nr3   F)r   	efficientr   r7         ?)rcond:0yE>atol)r-   rr   copyr   shaper=   zerosr   ranger   r   )	r_   lag_lenr   rr   r   lagsleaddirectis	            rB   test_ols_inefficientzTestPACF.test_ols_inefficientK  s    46EBBBFKKMM	QVVXXGAJxQ
##u'A+&&q	w 	O 	OA1A;1q512DAJ!$qqq)QU)|"4d$GGGJ2NF1q5MMd333333rD   c                 z    t          | j        dd          }t          |dd          | j        t                     d S )Nr   mler   r   r7   )r.   rr   r	   r   r   )r_   r   s     rB   test_ywzTestPACF.test_ywZ  s:    r%888F122JY?????rD   c                     t          j        t                    5  t          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )N   r2   r   )r   warnsr   r+   r=   onesr^   s    rB   test_yw_singularzTestPACF.test_yw_singular^  s    \,'' 	' 	'A&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   $AAAc                    t          | j        dd          }t          | j        dd          }t          ||t                     t          | j        dd          }t          | j        dd          }t          ||t                     d S )Nr   r  r  ldbywlda)r.   rr   r+   r	   r   )r_   r   pacflds      rB   test_ldzTestPACF.test_ldb  s    r%888dfBu555FFI666dfBt444dfBu555FFI66666rD   c                     t          | j        d          \  }}t          | j        dd          }t          ||t                     d S )Nr   r  burgr  )r,   rr   r+   r	   r   )r_   	pacfburg_r   pacfburgs       rB   	test_burgzTestPACF.test_burgk  sH     r222	1b888Ix;;;;;rD   N)rn   ro   rp   r   r   r  r  r  r  r$  r)  rt   rD   rB   r   r   9  s        * * [*
$ 
$ 
$4 4 4@ @ @' ' '7 7 7< < < < <rD   r   c                      e Zd ZddlmZmZ d Zd Zej	        
                    dddd ee                    ddd          e                    ddd                    z  fdd	d ee                    d	d
d
          e                    d	d
d
                    z  fg          d             Zej	        
                    dddd ee                    ddd          e                    ddd                    z  fdde                    ddd          fdde                    ddd          fg          d             Zd ZdS )"TestBreakvarHeteroskedasticityTestr   )chi2fc           	          g d}d}dt          | j                            |dd          | j                            |dd                    z  }t	          |          \  }}||k    sJ ||k    sJ d S )Nr   r         @      @      @r        D@r6   )minr-  cdfsfr"   r_   input_residualsexpected_statisticexpected_pvalueactual_statisticactual_pvalues         rB   test_1d_inputz0TestBreakvarHeteroskedasticityTest.test_1d_inputs  s    888JcFJJ)1a00FII(!Q//
 
 
 +K+
 +
'-  #55555//////rD   c                    t          j        ddt           j        gdt           j        dgddt           j        gg dg dg dg dg dg d	g	          }t          j        d
dt           j        g          }t          j        dt          | j                            |d         dd          | j                            |d         dd                    z  dt          | j                            |d         dd          | j                            |d         dd                    z  t           j        g          }t          |          \  }}t          ||           t          ||           d S )Nr   r  r0  )r1  r1  r1  )r2  r2  r2  )r   r   r   )      @r?  r?  )      @r@  r@  )       @rA  rA  g=@g     B@r6   r   r5   r7   )	r=   r   r   r4  r-  r5  r6  r"   r
   r7  s         rB   !test_2d_input_with_missing_valueszDTestBreakvarHeteroskedasticityTest.test_2d_input_with_missing_values  s   (c26"bfc"c26"

 
  X3H	
 
 (FJJ1!4a;;FII03Q:: 
 FJJ1!4a;;FII03Q:: 
 
 
 +K+
 +
'- 	%'9:::]O44444rD   z0subset_length,expected_statistic,expected_pvaluer6   r         ?
   r5   c                 V    g d}t          ||          \  }}||k    sJ ||k    sJ d S )Nr/  )subset_lengthr"   )r_   rF  r9  r:  r8  r;  r<  s          rB   test_subset_lengthz5TestBreakvarHeteroskedasticityTest.test_subset_length  sZ     988*J'+
 +
 +
'-
  #55555//////rD   z.alternative,expected_statistic,expected_pvaluez	two-sided
decreasingg?
increasingc                 V    g d}t          ||          \  }}||k    sJ ||k    sJ d S )Nr/  )alternativerG  )r_   rL  r9  r:  r8  r;  r<  s          rB   test_alternativez3TestBreakvarHeteroskedasticityTest.test_alternative  sZ     988*J#+
 +
 +
'-  #55555//////rD   c                     g d}d}dt          | j                            d|z  d          | j                            d|z  d                    z  }t	          |d          \  }}||k    sJ ||k    sJ d S )Nr/  r3  r6   F)use_f)r4  r,  r5  r6  r"   r7  s         rB   test_use_chi2z0TestBreakvarHeteroskedasticityTest.test_use_chi2  s    888JcIMM!00!44ILL//33
 
 
 +K+
 +
 +
'-  #55555//////rD   N)rn   ro   rp   scipy.statsr,  r-  r=  rB  r   markparametrizer4  r5  r6  rH  rM  rP  rt   rD   rB   r+  r+  p  s       ########0 0 0 +5 +5 +5Z [:AAEE"aOOQTT"a^^<<<="a##aeeB1ooqttB1~~>>>?	
 0 0 0 [8"a##aeeB1ooqttB1~~"F"FFG61441#5#562qttB1~~.	
 
0 
0 
00 0 0 0 0rD   r+  c                       e Zd ZdZg dZ ej                    Zej        d         j        Z	ej        d         j        Z
d ZdS )
CheckCointza
    Test Cointegration Test Results for 2-variable system

    Test values taken from Stata
    rU   rG   rF   c                 F    t          | j        | j        t                     d S r   )r	   coint_tr\   	DECIMAL_4r^   s    rB   
test_tstatzCheckCoint.test_tstat  s    DL$-CCCCCrD   N)rn   ro   rp   rq   rj   r   rJ   rK   rL   y1y2rY  rt   rD   rB   rU  rU    sm          !  F 9 ""D	:		%B	9		$BD D D D DrD   rU  c                   (    e Zd ZdZed             ZdS )TestCoint_tz*
    Get AR(1) parameter on residuals
    c                 t    t          | j        | j        ddd           d         | _        d| _        d| _        d S )Nrx   r   trendr|   r{   g{(vT"g9_aH)r$   rZ  r[  rW  r\   r   s    rB   r   zTestCoint_t.setup_class  s>     CFCF#aNNN
 "&rD   Nr   rt   rD   rB   r]  r]    s9          ' ' [' ' 'rD   r]  c            
         d} d}g d}t           j                            d           t           j                            |                                           }|t           j                            | d          z  }|d d d dfxx         |d d d f         z  cc<   ||z  }t          j        |d          }dD ]}t          d|           t          t          |d d d	f         |d d df         |dd 
                     t          t          |d d d	f         |d d ddf         |dd 
                     t          t          |d d d	f         |d d dd f         |dd 
                     t          t          |d d d	f         |d d dd f         |dd 
                     i }i x}|d<   g d|d	<   g d|d<   g d|d<   g d|d<   i x}|d<   g d|d	<   d|d	         d<   g d|d<   g d|d<   g d|d<   i x}|d<   g d|d	<   g d|d<   g d|d<   g d|d<   i x}|d<   t           j        }d|||g|d	<   d|||g|d<   d|||g|d<   d |||g|d<   d!D ],}i }	t          |d d d	f         |d d df         |dd 
          |	d	<   t          |d d d	f         |d d ddf         |dd 
          |	d<   t          |d d d	f         |d d dd f         |dd 
          |	d<   t          |d d d	f         |d d dd f         |dd 
          |	d<   t          d          D ]e}
||         }t          |	|
         d	         ||
         d	         d"#           ||
         dd          }|	|
         d         }t          ||d	d$%           f.t          |d d d	f         |d d df         dd&          }t          |d         |d         d	         dd          d	d$%           t          |d d         d'd(gd)d*%           d S )+N   r7   )r7   r   rC  r   {   r4   r6   rt   
r   r_  r5   r   )g\yvg LٟgӯgA)g;,0W祽 n b)gA>"re  rf  rg  )g3x֚gUgUpg$rx   )g$
gpʐȝg!
g҆gSZ)g%Ikţ/wσjEć!6)g1;];rh  ri  rj  )gg+ggg`Ezctt)gSsgo$/ggx\tji)g3rq痼!L')g]ɬJ	rl  rm  rn  )gkgȨK3g!S4Mg0r   g权ng8gȁgMncd)rx   r   rk  r   gdy=rtolgv!>rp  r
  )r`  r|   gIwvc+gq:i}f:g|=g<6S:)r=   r>   seedr@   cumsumroundprintr$   r   r  r   )nobsscale_econstunitrs   r`  res_egrangerr  r   r[   r  r2r1res1_0s                 rB   
test_cointr~    sh   DGNNEINN39??4  ''))D")//$***Aaaa!eHHHQQQWHHHJA
AA  M MdEeAaaadGQqqq!tWE!TJJJKKKeAaaadGQqqq!A#vYeAtLLLMMMeAaaadGQqqq!""uXU1dKKKLLLeAaaadGQqqq!""uXU1dKKKLLLL L!!C,t
  CF  CF  CF ONNCF ! C,s
  CF #CF1I  CF  CF  CF !#"C,u
  CF POOCFOOOCF  CF ! C,s

&C!3S1CF!3S1CF!3S1CF!3S1CF( 7 7!!!Q$111a4aNNNQaaadGQqqq!A#vYeAt
 
 
Q !!!Q$111abb5q$OOOQ!!!Q$111abb5q$OOOQq 	7 	7Au%CDGAJAq	>>>>QBaBB66666	7 1QQQT7AaaadG4:::FF1I|D1!4QRR8qtLLLLrr
	34	     rD   c                     d} d}t           j                            d           |t           j                            |           z  }t	          j        dt                     t          j        t                    5  t          ||ddd           }d d d            n# 1 swxY w Y   t          |d         d           t          t          j        |d                              d S )	Nrb  r7   rc  alwaysrx   r   r_  r   )r=   r>   rr  r@   warningssimplefilterr   r   r  r$   r
   r   isneginf)rv  rw  rs   rx   s       rB   test_coint_identical_seriesr    s    DGINN3")//$'''A($7888	)	*	* ; ;!Qc!T:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;1sBK!s   9BB!Bc                  :   d} d}t           j                            d           |t           j                            | d          z  }d|                    d          z   dt           j                            |           z  z   }t          j        dt                     t          j        d	          5 }t          ||d
dd           }d d d            n# 1 swxY w Y   t          |d         d           t          t          j        |d                              d S )Nrb  r7   rc  r6   rH   gHz>r  T)recordrx   r   r_  r   )r=   r>   rr  r@   sumr  r  r   catch_warningsr$   r
   r   r  )rv  rw  rr   rs   wrx   s         rB   test_coint_perfect_collinearityr    s0   DGINN3")//$***A	AEEqEMMD29??4#8#888A($7888		 	-	-	- ;!Qc!T:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;1sBK!s   2CCCc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestGrangerCausalityc                 8   t          j                    j        }|ddg         j        }|                    t
                    }t          j        t          j        |          d          }g d}t          j
        t          d          5  t          |d d dd d	f         d
d          }d d d            n# 1 swxY w Y   t          ||d
         d         d         d           t          |d
         d         d         |d
         d         d         d           d S )NrF   rG   r   rH   )g,`p?gV?   r6   
verbose ismatchr7   r  r6   Fverbose	ssr_ftest   decimalparams_ftestr   rJ   rK   rL   rM   rN   r=   rO   rP   r   r  FutureWarningr%   r	   )r_   rQ   rK   r_resultgrs        rB   test_grangercausalityz*TestGrangerCausality.test_grangercausality  sd   %'',y*-.5||E""wrvd||!,,, 100\-|<<< 	I 	I&tAAAqu"uH~q%HHHB	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	IHbeAh{&;QGGGGqE!H^$beAh{&;Q	
 	
 	
 	
 	
 	
s   	 B55B9<B9c                    t          j                    j        }|ddg         j        }|                    t
                    }t          j        t          j        |          d          }t          j
        t          d          5  t          |d d dd df         d	d
          }d d d            n# 1 swxY w Y   t          j
        t          d          5  t          |d d dd df         d	gd
          }d d d            n# 1 swxY w Y   d|v sJ d|vsJ t          |d	         d         d         |d	         d         d         d           t          |d	         d         d         |d	         d         d         d           d S )NrF   rG   r   rH   r  r  r7   r  r6   Fr  r  r  r  r  r  )r_   rQ   rK   r  gr2s        rB   test_grangercausality_singlez1TestGrangerCausality.test_grangercausality_single  s,   %'',y*-.5||E""wrvd||!,,,\-|<<< 	I 	I&tAAAqu"uH~q%HHHB	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I\-|<<< 	L 	L'QQQ2XUKKKC	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	LBwwww||||qE!H[!3q6!9[#91	
 	
 	
 	
 	qE!H^$c!fQi&<a	
 	
 	
 	
 	
 	
s$    B11B58B5!DDDc                    t           j                            dd          }t          j        t
          d          5  t          |dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        t
          d          5  t          |dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrD  r6   r  r  Fr  r5   )	r=   r>   randr   r  r  r%   r   r   r_   reset_randomstaterr   s      rB    test_granger_fails_on_nobs_checkz5TestGrangerCausality.test_granger_fails_on_nobs_check  s   INN2q!!\-|<<< 	7 	7!!Q6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:&& 	; 	;m<@@@ ; ;%aE::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;sG   AA"A?CB:.C:B>	>CB>	CCCc                 
   t           j                            dd          }t           j        |d<   t           j        |d<   t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )N  r6   )  r   )i  r7   zx contains NaNr  )	r=   r>   r  r   infr   r   r   r%   r  s      rB   "test_granger_fails_on_finite_checkz7TestGrangerCausality.test_granger_fails_on_finite_check  s    INN4##F&	F&	]:-=>>> 	( 	(!!Q'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A88A<?A<c                     t           j                            dd          }t          j        t
          d          5  t          |g d           d d d            d S # 1 swxY w Y   d S )Nr  r6   zAmaxlag must be a non-empty list containing only positive integersr  )r   r7   r6   )r=   r>   r  r   r   r   r%   r  s      rB   test_granger_fails_on_zero_lagz3TestGrangerCausality.test_granger_fails_on_zero_lag  s    INN4##]U
 
 
 	0 	0 "!YYY///		0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AA #A N)rn   ro   rp   r  r  r  r  r  rt   rD   rB   r  r    s_        
 
 
 
 
 
$; ; ;( ( (0 0 0 0 0rD   r  c                   j    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Z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                 n    t          j                    | _        | j        j        d         j        | _        d S NrF   r   rJ   rK   rL   rr   r   s    rB   setupzTestKPSS.setup  )    (**i(/rD   c                 
   t          j        t                    5  t          | j        d           d d d            n# 1 swxY w Y   t
          j                            dd          }t          t          t          |           d S )Nlegacyr     r6   )
r   r  r   r(   rr   r=   r>   r  r   r   r  s      rB   test_fail_nonvector_inputz"TestKPSS.test_fail_nonvector_input  s    \.// 	) 	)x((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) INN2q!!j$*****s   =AAc                    t          j        t                    5  t          | j        dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          | j        dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          | j        dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          | j        dd           d d d            n# 1 swxY w Y   t          t          t          | j        dd           d S )Nrx   r  r  Cr   CTzunclear hypothesis)r   r  r   r(   rr   r   r   r^   s    rB   test_fail_unclear_hypothesisz%TestKPSS.test_fail_unclear_hypothesis  s'   \.// 	. 	.H----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.\.// 	. 	.H----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.\.// 	/ 	/X....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/\.// 	/ 	/X....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	df&:(	
 	
 	
 	
 	
 	
sE   >AA"BB
B
*CCC2DDDc                    t          j        t                    5  t          | j        dd          \  }}}}d d d            n# 1 swxY w Y   t          |dt                     t          j        t                    5  t          | j        dd          \  }}}}d d d            n# 1 swxY w Y   t          |dt                     d S )Nrx   r5   g5;N@r   g?W[?)r   r  r   r(   rr   r	   r   )r_   	kpss_statr   s      rB   r`   zTestKPSS.test_teststat  s0   \.// 	6 	6!%dfc1!5!5Iq!Q	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6Ivy999\.// 	7 	7!%dfdA!6!6Iq!Q	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7Ivy99999s#   AA	A<B$$B(+B(c                 v   t          j        t                    5  t          | j        dd          \  }}}}d d d            n# 1 swxY w Y   t          |d           t          j        t                    5  t          | j        dd          \  }}}}d d d            n# 1 swxY w Y   t          |d           d S )Nrx   r5   {Gz?r   r   r  r   r(   rr   r
   )r_   r   pvals      rB   	test_pvalzTestKPSS.test_pval  s*   \.// 	1 	1 a00MAtQ	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1T4   \.// 	2 	2 q11MAtQ	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2T4     s#   AA	A6BB"%B"c                    t          j        t                    5  t          | j        ddd          \  }}}}d d d            n# 1 swxY w Y   t          |j        t          | j                             t          |j        d           d S )Nrx   r5   T)	r   r  r   r(   rr   r
   rv  lenr  r_   r   r   s      rB   
test_storezTestKPSS.test_store  s    \.// 	8 	8!$&#q$77NAq!U	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	UZTV---UZ#####s   AA
Ac                    t          j        t                    5  t          | j        dd          }d d d            n# 1 swxY w Y   t          |d         d           t          t          j                    j        d         dd          }t          |d         d           t          j        t                    5  t          t          j                    j        d         dd          }d d d            n# 1 swxY w Y   t          |d         d	           t          j        t                    5  t          t          j                    j        d
         dd          }d d d            n# 1 swxY w Y   t          |d         d           t          j        t                    5  t          t          j                    j        d         dd          }d d d            n# 1 swxY w Y   t          |d         d           d S )Nrx   autor  r6   	   SUNACTIVITYr  volumer3   lncoinsr   K   invt   )r   r  r   r(   rr   r
   r   loadrK   r   r   r   r_   r  s     rB   	test_lagszTestKPSS.test_lags"  s   \.// 	2 	2tvs&111C	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2SVQ8=??'66JJJSVQ\.// 	F 	Fty{{'13fEEEC	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	FSVQ\.// 	K 	Kw|~~*95t6JJJC	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	KSVR   \.// 	K 	Kz((-f5t6JJJC	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	KSVR     sE   >AA</C77C;>C;1/E,,E03E0&/G!!G%(G%c                     t          | j                  }d                    ||          }t          j        t
          |          5  t          | j        d|           d d d            d S # 1 swxY w Y   d S )Nz3lags \({}\) must be < number of observations \({}\)r  rx   r  )r  rr   formatr   r   r   r(   )r_   rv  msgs      rB   test_kpss_fails_on_nobs_checkz&TestKPSS.test_kpss_fails_on_nobs_check7  s     46{{DKK$
 
 ]:S111 	* 	*D))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A++A/2A/c                     t          j        g d          }t           j        t          j        |d          g df         }t	          |d           d S )N)r   r   r   r   r   r7   r  *   )r   r   r   r  r  )r=   r   r_tiler(   )r_   basedata_which_breaks_autolags      rB   5test_kpss_autolags_does_not_assign_lags_equal_to_nobsz>TestKPSS.test_kpss_autolags_does_not_assign_lags_equal_to_nobsB  sV     x///00$&E"'$*A*A999*L$M!&f555555rD   c                     t          j        t                    5  t          | j        dd          }d d d            n# 1 swxY w Y   t          |d         d           d S )Nrx   r  r  r6      r  r  s     rB   test_legacy_lagszTestKPSS.test_legacy_lagsJ  s    \.// 	4 	4tvs(333C	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4SVR     s   >AAc                     t          j        t                    5  t          | j        dd           d d d            d S # 1 swxY w Y   d S )Nrx   unknownr  )r   r   r   r(   rr   r^   s    rB   test_unknown_lagszTestKPSS.test_unknown_lagsP  s    ]:&& 	/ 	/I....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   ?AAc                     t          j        t                    5  t          | j        d            d d d            d S # 1 swxY w Y   d S )Nr  )r   r  r  r(   rr   r^   s    rB   	test_nonezTestKPSS.test_noneU  s    \-(( 	% 	%t$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   >AAN)rn   ro   rp   rq   r   r  r  r  r`   r  r  r  r  r  r  r  r  rt   rD   rB   r  r    s        	 	 0 0 [0+ + +
 
 
: : :! ! !$ $ $! ! !*	* 	* 	*6 6 6! ! !/ / /
% % % % %rD   r  c                   H    e Zd ZdZed             Zd
dZd Zd Zd Z	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                 n    t          j                    | _        | j        j        d         j        | _        d S r  r  r   s    rB   r  zTestRUR.setupd  r  rD   Fc                    t          |d          }t          |d          }|j        d         }||j        k    r't	          d                    |j                            g d}t          j        g d          }t          j        g dg dg d	g d
g dg dg dg dg dg dg dg dg          }t          j        d|j        d         f          }t          |j        d                   D ],}t          ||d d |f                   }	 |	|          |d|f<   -d}
|d         }|d         }|dd          D ]}||k    r|}|
dz   }
||k     r|}|
dz   }
|
t          j        t          |                    z  }t          |          dz
  }t          t          |          dz
  dd          D ]}||d|f         k     r|} ||         }d}d}||d         k    rd}n||d         k    rd}|r.t          j        |                    |          t                     |d         |d         |d         |d         d}|r+ddlm}  |            }||_        d |_        d!|_        ||||fS |||fS )"Nrr   r   r   zx of shape {0} not understood)r  g?r   g??gffffff?)   2   d      rb  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@HP	@)g[ A?gX?g6<R?g䃞ͪ?gGx$@r  )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?;MO?gHPs?g@g3@)g0*?goT?r  gn4@?g;O@g/L
@)gJ4?g?ggs?gTt$?gqh 	@gc=y@r7   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.
        r   smallerlarger)	direction)r   r5   )r   r6   )r   r7   )r   r   )rX   rW   z2.5%rV   )ResultsStorezThe series is not stationaryzThe series is stationary)r   r   r  sizer   r  r=   r   r  r  r   sqrtr  r  warnr   statsmodels.stats.diagnosticr  rv  H0HA)r_   rr   r   rv  pvalsr   crit
inter_critr  r-  countmax_pmin_pvrur_statkp_valuewarn_msgr  	crit_dictr  rstores                         rB   
simple_rurzTestRUR.simple_rurj  s/   q#%))wqz 16>><CCAGLLMMM 655HKKK
 
 x@@@@@@???@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
$ Xq$*Q-011
tz!}%% 	' 	'ADAJ''A qwwJq!t !!122 	" 	"A5yy	5yy	273q66??*JJNs5zzA~r2.. 	 	A*QT***( 	eBi!IIa   I 	M)446J  
 d#T"t$T"	
 
	  	0AAAAAA!\^^FFK6FI2FIWi77Wi//rD   c                    t          j        t                    5  t          | j                   d d d            n# 1 swxY w Y   t
          j                            dd          }t          t          t          |           d S )Nr  r6   )
r   r  r   r/   rr   r=   r>   r  r   r   r  s      rB   r  z!TestRUR.test_fail_nonvector_input  s    \.// 	) 	) (((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) INN2q!!j"6:::::s   ;??c                     t          j        t                    5  t          | j                  \  }}}|                     | j                  \  }}}d d d            n# 1 swxY w Y   t          ||t                     d S r   )r   r  r   r/   rr   r	  r	   r   )r_   r  r   simple_rur_stats       rB   r`   zTestRUR.test_teststat  s    \.// 	< 	<1$&99NHa$(OODF$;$;!OQ	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	HoyAAAAA   7AA!$A!c                     t          j        t                    5  t          | j                  \  }}}|                     | j                  \  }}}d d d            n# 1 swxY w Y   t          ||           d S r   )r   r  r   r/   rr   r	  r
   )r_   r   r  simple_pvals       rB   r  zTestRUR.test_pval  s    \.// 	8 	8-df55JAtQ $ 7 7A{A	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	T;'''''r  c                     t          j        t                    5  t          | j        d          \  }}}}d d d            n# 1 swxY w Y   t          |j        t          | j                             d S )NT)r   r  r   r/   rr   r
   rv  r  r  s      rB   r  zTestRUR.test_store  s    \.// 	@ 	@1$&$??NAq!U	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	UZTV-----s   AAAN)F)rn   ro   rp   rq   r   r  r	  r  r`   r  r  rt   rD   rB   r  r  Z  s          0 0 [0
a0 a0 a0 a0F; ; ;B B B( ( (. . . . .rD   r  c                      t          t          dd                    } t          t          | d          t          | j        d                     d S )Nr7      Fr   )r   r   r	   r   rL   )ss    rB   test_pandasacovfr    sI    va}}AaU+++U18-G-G-GHHHHHrD   c                    t          j                    j        }t          ddd          d d         |_        |d= t          |d          }t          |t          |j        d                     t          j	        	                    d	          }t          j        t                    5  t          |d           d d d            d S # 1 swxY w Y   d S )
N17002009A)startendfreqi5  YEARFr  rD  r6   )r   rJ   rK   r   indexr   r
   rL   r=   r>   r   r   r   )r  dtar  rr   s       rB   test_acovf2dr!    s   


 
 
%CV#>>>ttDCIF



CeCJE222333
	!!A	z	"	"  aU                 s   (CCCdemeanTFadjustedc                     t           j                            d          }t          || |d          }t          || |d          }t	          ||d           d S )Nr  r  Tr"  r#  r   Fr  r  )r=   r>   normalr   r	   )r"  r#  r  qF1F2s         rB   test_acovf_fft_vs_convolutionr+    sc     		c""A	q(	=	=	=B	q(	>	>	>BB******rD   c                     t           j                            d          }t           j                            d          }t          ||| |d          }t          ||| |d          }t	          ||d           d S )N   r%  Fr&  Tr  r  )r=   r>   r'  r#   r	   )r"  r#  r  rr   rs   r)  r*  s          rB   test_ccovf_fft_vs_convolutionr.    s     		c""A
	c""A	q!FX5	A	A	AB	q!FX4	@	@	@BB******rD   r   c                     t           j                            d          }t          || ||          }t	          ||| ||          }t          ||d           d S )Nr-  r%  r&  r  r  )r=   r>   r'  r   r#   r	   )r"  r#  r   r  rr   r)  r*  s          rB   test_compare_acovf_vs_ccovfr0    se     		c""A	q(	<	<	<B	q!FX3	?	?	?BB******rD   c                     ddl m}  t          j        ddg          }t          j        ddg          }t          j        d| f         }t          j        d|f         }d}t          j                            d	            | |||          }t          |d
dgd          }t          j        g dg dg dg dg dg          }t          j        g dg dg dg dg dg          }t          |t          d          t          d                    }	t          |t          d          t          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        ddt/          |                    }t+          j        ||          }t          |d dd
dgd!          }t          |j        j        |	j        d dd d f         d           t          |j        j        |
j        d dd d f         d           t          |j        d"           t          |j        d#           t          |d
d          }t          |j        j        |	j        d           t#          |j        j                            |	j                             t#          |j        j                            |	j                             t          |j        d           d S )$Nr   )arma_generate_sampleg      ?g      пg?gffffff?r7   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@r3   r5   )r  columns)r7   r6   z2000-1-1M)r  periodsr  r6   )max_armax_mar5  r`  )r6   r7   )r7   r7   )statsmodels.tsa.arima_processr2  r=   r   r  r>   rr  r!   r   r   r	   r3  rL   r4  r
   aic_min_orderbic_min_orderr   r  equalsr6  r   r   r  r   )r2  arparamsmaparamsmaparamrv  rs   r  aic_xbic_xr3  r4  r  y_seriesres_pds                 rB   test_arma_order_select_icrG    s    CBBBBBxu&&Hxt%%HuQ	\"HeAxK GDINN4Xx66A
qeU^3
?
?
?CH555555666666444	
 E H666666666666666	
 E EF1II
>
>
>C
EF1II
>
>
>C
A666
A666"F+++"F+++CGM  ++,,,CGO""3;//000CGM  ++,,,CGO""3;//000M*3A???Ey%(((H!1%s  F 
)3:bqb"1"f+=qAAA
)3:bqb"1"f+=qAAA%v...%v...
qU#
6
6
6C
A666CGM  ++,,,CGO""3;//000"F+++++rD   c                      t          j        g d          } dd l} |j                    5   |j        d           t          |           }d d d            d S # 1 swxY w Y   d S )N)g /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!   )rs   r  r  s      rB   !test_arma_order_select_ic_failurerJ  U  s     		
 	
 	
	 	A0 OOO	 	 	"	" & &h'''"1%%& & & & & & & & & & & & & & & & & &s    AAAc                      t          t          j                    j        dg         dd          } t	          | j        d           d S )Nr  Tr  )r   r   r7   )r   r   rJ   rK   r
   ndim)results    rB   test_acf_fft_dataframerN  y  sL     #]O4$b  F a     rD   c            	      V   d} d}| t          j        d          z  }t          ||d          \  }}}}}t          |d| dz  z
             t          |t          j        | gdg|dz
  z  z             d	
           t          |t          j        d| gdg|dz
  z  z             d	
           d S )Nr  r  rb  Tisacovr7   r6   r   r  r	  )r=   aranger)   r   r   )rhomacov
sigma2_epsarr+   r   s          rB   test_levinson_durbin_acovrX    s    
C
A")C.. D!0q!F!F!FJD!QJC1H---B#!A!677dCCCCD"(As8qcQUm#;<<4HHHHHHrD   r   )r   r   r   r   c                     t          | ||||          }t          | ||||d          }t          |d d         |           d S )Nr#  r"  r   r   rD  r#  r"  r   r   nlagr  )r   r   rC   r#  r"  r   r   fulllimiteds          rB   test_acovf_nlagsr`    sk    
 Xf#w  D   G D"Iw'''''rD   r   r   c                     |                                  } t          j        | dd<   t          | ||||          }t          | ||||d          }t	          |d d         |           d S )Nr7   r5   rZ  rD  r[  r  )r  r=   r   r   r   r]  s          rB   test_acovf_nlags_missingrb    s    
 ""JfJqsOXf#w  D   G D"Iw'''''rD   c                     t          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nr<   F)r\  r   )r   r   r   r   )rC   s    rB   test_acovf_errorrd    s    	z	"	" / /js..../ / / / / / / / / / / / / / / / / /s   :>>c                     t          j        d          } d| d<   d| d<   t          |           \  }}t          |dt          j        d          z             t          || dd          d           t          | d	          \  }}t          |dt          j        d
          z             t          || dd         d           d S )NrD  r7   r   r  g      $@r  r	  r3   r  r?  r2   )r=   r  r*   r   rR  )r+   rW  r   s      rB   test_pacf2acf_arrf    s    8B<<DDGDG"4((GBC	$/000BQRRt,,,,"4q111GBC	#.///BQqS	------rD   c                     dt          j        d          z   } d| d<   t          |           \  }}t          |dd          \  }}}}}t	          ||d	           t	          | |d	           g d
}t	          ||d	           d S )Nr        &@r7   r   rD  TrP  r  r	  )
g7¤g4@"geX,gJ+1gUN1gd]F,g/$#gꕲqg=yXg_vOֿ-C6?)r=   rR  r*   r)   r   )r+   rW  r   r   ar_ldpacf_ld	ar_from_rs          rB   test_pacf2acf_levinson_durbinrm    s    BIdOO#$DDG"4((GB-c2dCCCAugq!BD))))D'----  I B	------rD   c                     dt          j        d          z   } d| d<   t          j        t                    5  t          | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j        d                     d d d            d S # 1 swxY w Y   d S )	Nr  rh  r7   r   r  r  rD  r  )r=   rR  r   r   r   r*   r  )r+   s    rB   test_pacf2acf_errorsro    s   BIdOO#$DDG	z	"	" - -T,,,,- - - - - - - - - - - - - - -	z	"	" ' 'T!""X&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	z	"	" + +RXb\\***+ + + + + + + + + + + + + + +	z	"	" 0 0RXg..///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sG   AAA9BB!$B!"C//C36C3"EE	Ec                     t           j                            d          } |                     d          }|dd          d|d d         z  z   }t	          |d          \  }}t          |d          }t          ||d           ||                                z
  }|                    |          d	z  }d
|d
<   |t          j	        d|dz  z
            z  }t          ||d           d S )Nr;   i'  r7   rC  r  rD  gMb@?r	  i'  r   r6   MbP?)
r=   r>   r?   r@   r,   r.   r   r   dotcumprod)	rA   ers   r+   sigma2yw_pacfyes2ysigma2_directs	            rB   test_pacf_burgrz    s    
)


&
&C		%A	!""afAQ##LD&annGD'----	
QVVXXB
&&**u
CDG"*Q]333MFM555555rD   c                  T   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )N)r  r6   rD  r  e   )r   r   r   r,   r=   r   rt   rD   rB   test_pacf_burg_errorr}    s   	z	"	" ) )"(7##R((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z	"	" & &"(3--%%%& & & & & & & & & & & & & & & & & &s#   #A		AA-#BB!$B!c                  n   d} t          j        d| dz  z   | g          }t          |d          \  }}t          j        dgdgdgd	gg          }t          ||d
           t          |g dd
           t          |d          \  }}t          |d         |            t          |d         d           d S )Nr7   r6   r4   rv  r   g߿gkw#g6>W[ri  ro  )g(\?g?g r?g#J{/L?r  )r  r   r  r  )r=   r   r&   r   )mar   thetaru  	exp_thetas        rB   %test_innovations_algo_brockwell_davisr    s    	BHa"'k2&''E$U333ME61#y7)gY?@@IE940000F:::FFFF$U555ME6E%L"%%%F2J$$$$$rD   c                  ^   t          j        ddg          } t          j        d| dz                                  z   | d         | d         | d         z  z   | d         g          }t          |d          \  }}t          |dd	          \  }}t	          ||           t	          ||           d S )
Nr  rC  r7   r6   r   r  r  r  )rv  rp  )r=   r   r  r&   r   )r  r   r  ru  theta_2sigma2_2s         rB   test_innovations_algo_rtolr    s    	4+		BHa27--//)2a52a52a5=+@"Q%HIIE$U555ME6(StDDDGXE7###FH%%%%%rD   c                  t   d} t          j        d| dz  z   | g          }t          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          |d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          |d	           d d d            d S # 1 swxY w Y   d S )
Nr  r7   r6   g@r  r  r6   r6   r   ro  )r=   r   r   r   	TypeErrorr&   r   r   )r  r   s     rB   test_innovations_errorsr    s   	BHa"'k2&''E	y	!	! * *S))))* * * * * * * * * * * * * * *	z	"	" ) )R(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z	"	" + +&))***+ + + + + + + + + + + + + + +	y	!	! - -V,,,,- - - - - - - - - - - - - - - - - -sG   AAA:BBB<"C**C.1C.D--D14D1c                    d}t          j        d|dz  z   |g          }t          |d          \  }}t           j                            d          }|dd          ||d d         z  z   }t          ||          }|d         g}t          dd          D ]1}	|                    ||	         ||	df         |d         z  z
             2t          j        |          }t          ||           d S )	Nr  r7   r6   r4   r  r3   r  r   )	r=   r   r&   r>   r@   r'   r  appendr   )
r  r  r   r  r   rt  endogresidexpectedr  s
             rB   'test_innovations_filter_brockwell_davisr  $  s    	BHa"'k2&''EA...HE1
	AabbEB3B3KEue,,EazH1a[[ ? ?a5A;"#==>>>>x!!HE8$$$$$rD   c                 $   t          j        ddg          }t          j        d|dz                                  z   |d         |d         |d         z  z   |d         g          }t          |d          \  }}t           j                            d          }t          j        |t          j        dd	          
          }t          ||          }t          ||          }t          ||j                   t          |j        |j                   d S )Nr  rC  r7   r6   r   rD  r  z
2000-01-01)r8  r9  )r=   r   r  r&   r>   r@   r   r   r   r'   r   rL   r   r  )	r  r  r   r  r   r  endog_pdr  resid_pds	            rB   test_innovations_filter_pandasr  2  s    	4+		BHa27--//)2a52a52a5=+@"Q%HIIEB///HE1IOOBEybmL"&M&M&MNNNHue,,E!(E22HE8?+++x~x~66666rD   c                     d} t          j        d| dz  z   | g          }t          |d          \  }}t          j        t
                    5  t          t          j        d          |           d d d            n# 1 swxY w Y   t          j        t
                    5  t          t          j        d          |d d                    d d d            n# 1 swxY w Y   t          j        t
                    5  t          t          j	        t          j        d                    |           d d d            d S # 1 swxY w Y   d S )	Nr  r7   r6   r4   r  r  r  )r7   r4   )
r=   r   r&   r   r   r   r'   r   r   r   )r  r   r  r   s       rB   test_innovations_filter_errorsr  >  s   	BHa"'k2&''EA...HE1	z	"	" 4 428F++U3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	"	" 4 428A;;crc
3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	"	" B B2<(8(8995AAAB B B B B B B B B B B B B B B B B Bs6   #A;;A?A?+CCC:5D<<E E c                 d   t          j        dg          }t          j        dg          }d}t           j                            d          }t	          t           j        d| f         t           j        d|f         t          |                    }t          |          \  }}t          ||          }d|dz  z  ||z  z  dt          j	        dt           j
        z  |z            z  z
  }	t          |t          |          d	t          |          f
          }
|
                    t           j        |||f                   }t          rdnd}t          ||j        d	         d|           t          |dd d	f         |j        j        d	d	d df         |           t          |	|j        |           d S )NrC  g?r7   rD  r%  r  g      r6   r   )ordergư>r   rq  r  r	  )r=   r   r>   r'  r   r  r  r&   r'   rP   pir   filterr   r   forecasts_errorfilter_resultskalman_gainllf_obs)r  	ar_params	ma_paramsru  r  r   r  r  ur  modr  r
  s                rB   *test_innovations_algo_filter_kalman_filterr  J  s    #I#I FI"%%E 
a)mbeAyL1E

  E  &&HE15%((AQ!Vmvz*S26!be)a-3H3H-HHG %I3y>>B
C
C
CC
**RU9i78
9
9C  (44SDAs*1-DtDDDDabb!ec(4Q3B3Y?d    GS[t444444rD   c                    t           j                            d          }t          |d          }|d         j        dk    sJ t           j                            d          }t          j        t          d          5  t          |           d d d            n# 1 swxY w Y   t           j                            d	          }t          j        t          d          5  t          |d
           d d d            d S # 1 swxY w Y   d S )Nr  T)r   r  r7   r6   zsample size is too shortr  r5   r   rz   )r=   r>   standard_normalr    r|   r   r   r   )r  rs   r  s      rB   test_adfuller_short_seriesr  l  sm   
	!!!$$A
1D
!
!
!Cr7>Q
	!!!$$A	z)C	D	D	D                
	!!!$$A	z)C	D	D	D % %t$$$$% % % % % % % % % % % % % % % % % %s$   >BB!BC>>DDc                     t           j                            d          }t          j        t
          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr  zmaxlag must be less thanr  3   r|   )r=   r>   r  r   r   r   r    )r  rs   s     rB   test_adfuller_maxlag_too_larger  x  s    
	!!#&&A	z)C	D	D	D  2                 s   AA!Ac                       e Zd ZeZej                            ed          Zej                            ed          Z	 e
j         ej        e	                    ZdS )SetupZivotAndrewsr   zrgnp.csvN)rn   ro   rp   r   cur_dirr   r   r   run_dir	fail_filer=   asarrayr   r   fail_mdlrt   rD   rB   r  r  ~  sZ        Ggll7I..GWj11Irz+"+i0011HHHrD   r  c                       e Zd Zd Zd Zd Zd Zej        	                    dg d          d             Z
d Zd	 Zd
 Zd Zd ZdS )TestZivotAndrewsc                     t          j        t                    5  t          | j        d           d d d            d S # 1 swxY w Y   d S )Nrr   r  r   r   r   r0   r  r^   s    rB   test_fail_regression_typez*TestZivotAndrews.test_fail_regression_type  s    ]:&& 	9 	9$-C8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r  c                     t          j        t                    5  t          | j        d           d d d            d S # 1 swxY w Y   d S )NrC  )trimr  r^   s    rB   test_fail_trim_valuez%TestZivotAndrews.test_fail_trim_value  s    ]:&& 	3 	3$-c2222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3r  c                     t          j        t                    5  t          t          j                            dd                     d d d            d S # 1 swxY w Y   d S )Nr  r6   )r   r   r   r0   r=   r>   r  r^   s    rB   test_fail_array_shapez&TestZivotAndrews.test_fail_array_shape  s    ]:&& 	1 	1")..Q//000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   .AAAc                     t          j        t                    5  t          | j        d           d d d            d S # 1 swxY w Y   d S )NNoner{   r  r^   s    rB   test_fail_autolag_typez'TestZivotAndrews.test_fail_autolag_type  s    ]:&& 	9 	9$-8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r  r{   )AICr3  Aicc                 N    t          | j        |          }|d         dk    sJ d S )Nr  r5   r7   )r0   r  )r_   r{   r  s      rB   test_autolag_case_sensitivityz.TestZivotAndrews.test_autolag_case_sensitivity  s+    DM7;;;1v{{{{{{rD   c                     t          | j        ddd           }t          |d         |d         |d         gg dd	           d S )
Nr1   rx   r|   rz   r{   r   r7   r4   )g\CMg'>i?r  rq  ro  )r0   r  r   r  s     rB   test_rgnp_casezTestZivotAndrews.test_rgnp_case  se    M!T
 
 
 	VSVSV$&=&=&=D	
 	
 	
 	
 	
 	
rD   c                 "   t           j                            | j        d          }t	          j        t          j        |                    }t          |ddd          }t          |d         |d         |d         |d	         gg d
d           d S )Nz
gnpdef.csvr1   rx   t-statr  r   r7   r5   r4   )gPkw|gs?r3   r   rq  ro  
r   r   r   r  r=   r  r   r   r0   r   r_   mdlfilemdlr  s       rB   test_gnpdef_casez!TestZivotAndrews.test_gnpdef_case  s    ',,t|\::jW--..Cc8LLLVSVSVSV,&&&	
 	
 	
 	
 	
 	
rD   c                 "   t           j                            | j        d          }t	          j        t          j        |                    }t          |ddd          }t          |d         |d         |d         |d	         gg d
d           d S )Nz
stkprc.csvr1   r   r  r  r   r7   r5   r4   )gytmg}"O?r7   A   rq  ro  r  r  s       rB   test_stkprc_casez!TestZivotAndrews.test_stkprc_case  s    ',,t|\::jW--..CdHMMMVSVSVSV,&&&	
 	
 	
 	
 	
 	
rD   c                 "   t           j                            | j        d          }t	          j        t          j        |                    }t          |ddd          }t          |d         |d         |d         |d	         gg d
d           d S )Nz	rgnpq.csv   tr  r  r   r7   r5   r4   )g*Wx8gCVzNz?r  f   rq  ro  r  r  s       rB   test_rgnpq_casez TestZivotAndrews.test_rgnpq_case  s    ',,t|[99jW--..CsHMMMVSVSVSV,(((	
 	
 	
 	
 	
 	
rD   c                     t           j                            | j        d          }t	          j        t          j        |                    }t          |dd          }t          |d         |d         |d         |d         gg d	d
           d S )Nzrand10000.csvrx   r  )rz   r{   r   r7   r5   r4   )g]3fg?r  i  rq  ro  r  r  s       rB   test_rand10000_casez$TestZivotAndrews.test_rand10000_case  s    ',,t|_==jW--..CCBBBVSVSVSV,)))	
 	
 	
 	
 	
 	
rD   N)rn   ro   rp   r  r  r  r  r   rR  rS  r  r  r  r  r  r  rt   rD   rB   r  r    s        9 9 93 3 31 1 19 9 9 [Y(=(=(=>>  ?>

 
 

 
 

 
 

 
 

 
 
 
 
rD   r  c                 L   t           j                            d          }t          d|j        d                   D ]}||xx         d||dz
           z  z  cc<   t           j        |d d d<   t          |ddd	          }|t          j        |          z
  }t          j        d
          }|j        d         }t          j	        ||z            }t          dd
          D ]2}t          j	        ||d          |d ||z
           z            |z  ||<   3t          ||dd           d S )Nr  r7   r   r  r  r   rD  F)r   r   r   r  ri  rq  )r=   r>   r  r  r  r   r   nanmeanr  nansumr   )r  rt  r  rM  r  r  rv  gamma0s           rB   test_acf_conservate_nanopsr    s*   
	!!#&&A1agaj!!  	!aAhVAcccFN"%@@@F
1Ewr{{H71:DYuu}%%F1f H Hiabb	E*D1H*,= =>>GFH4d;;;;;;rD   c                     t           j                            d          }t          j        t
          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr  zCan only compute partialr  r  )r=   r>   r  r   r   r   r+   )r  rt  s     rB   test_pacf_nlags_errorr    s    
	!!#&&A	z)C	D	D	D  Q                 s   AA Ac            	      L   t           j                            d          } t          j        |                     d                    }t          j        |                     d                    }t          ||ddddd          }t          j        |d                   d	k     sJ d S )
Nl   0= r  rx   aegr   r  F)r`  r   r|   r{   return_resultsgffffff?)r=   r>   r?   rs  r  r$   abs)rsrr   rs   r  s       rB   test_coint_auto_tstatr    s    			z	*	*B
	"$$S))**A
	"$$S))**A
		  C 6#a&>>D      rD   x   )ba)r  r  datasetc                     t          j        t                    5  t          j        t          d          5  t          | dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r4   Fr  )r   r   r   r  r  r%   )r  s    rB   !test_granger_causality_exceptionsr    s    	*	+	+ = =\-y999 	= 	=!'1e<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = = = =s4   A-A	A-A	A-A	A--A14A1c                    t          j        t          d          5  t          | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nzmaxlag must ber  r  r  r5   F)addconst)r   r   r   r%   NotImplementedErrorrR   s    rB   'test_granger_causality_exception_maxlagr    s
   	z)9	:	:	: 2 2gb11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	*	+	+ : :gq59999: : : : : : : : : : : : : : : : : :s   :>>A>>BBc                     t          j        t          d          5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nr  r  r5   Tr  )r   r  r  r%   r  s    rB   test_granger_causality_verboser    s    	m9	5	5	5 8 8gq$77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   <A A )statsmodels.compat.numpyr   statsmodels.compat.pandasr   statsmodels.compat.platformr   statsmodels.compat.pythonr   r   r  numpyr=   numpy.testingr   r   r	   r
   r   pandasr   r   r   r   r   scipy.interpolater   statsmodels.datasetsr   r   r   r   r   statsmodels.tools.sm_exceptionsr   r   r   r   r   statsmodels.tools.validationr   r   r<  r   "statsmodels.tsa.statespace.sarimaxr   statsmodels.tsa.stattoolsr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r   r   r]   rX  r   rl   	DECIMAL_1r   dirnameabspath__file__r   fixturerC   rR   rT   rv   r   r   r   r   r   rR  rS  r^  r   r   r   r   r   r   r+  rU  r]  r~  r  r  r  r  r  r  r!  r+  r.  r0  smokeslowrG  rJ  rN  rX  r`  rb  rd  rf  rm  ro  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r>   r?   r  random_sampler  
zeros_liker  df1df2	ones_likedf3df4gc_data_setsr  r  r  rt   rD   rB   <module>r     s   * * * * * * 8 8 8 8 8 8 4 4 4 4 4 4 , , , , , , 				                       0 0 0 0 0 0 0 0 0 0  & & & & & & O O O O O O O O O O O O O O              ? > > > > > > > 4 4 4 4 4 4 6 6 6 6 6 6                                         , 							7??27??84455 h   
 h) )  )D D D D D D D D.
2 
2 
2 
2 
2h 
2 
2 
22 2 2 2 28 2 2 2&2 2 2 2 2 2 2 2&2 2 2 2 2x 2 2 22 2 2 2 2H 2 2 2
 
 
 
 
 
 
 
& wrwq#/00  10
3 3 3 3 3 3 3 3F F F F Fm F F F<A A A A A- A A A 0J 0J 0J 0J 0J] 0J 0J 0Jt5< 5< 5< 5< 5<} 5< 5< 5<nu0 u0 u0 u0 u0 u0 u0 u0pD D D D D D D D"' ' ' ' '* ' ' '~ ~ ~B	 	 	  90 90 90 90 90 90 90 90xx% x% x% x% x% x% x% x%vK. K. K. K. K. K. K. K.\I I I
   D%=11dE]33+ + 43 21+ D%=11dE]33+ + 43 21+ D%=11dE]33u..+ + /. 43 21+ 8, 8,  8,v!& !& !&H! ! !I I I $M$M$MNN..D%=11dE]33( ( 43 21 /. ON( ^V$<==..D%=11dE]33( ( 43 21 /. >=("/ / /

. 
. 
.. . .0
0 
0 
06 6 6& & &
% 
% 
%& & &
- 
- 
-% % %	7 	7 	7	B 	B 	B5 5 5D	% 	% 	%  2 2 2 2 2 2 2 2G
 G
 G
 G
 G
( G
 G
 G
T< < <   ! ! !  Y1SBM!bl##$$bl##$$BLOObl##$$bl##$$S#s# L11= = 21=: : :8 8 8 8 8rD   