
    M/Ph                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	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 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l0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF dZGdZHdZIdZJdZKdZLdZMejN        O                    ejN        P                    eQ                    ZR ejS        d          d             ZT ejS        d          d             ZU G d d          ZV G d deV          ZW G d d eV          ZX G d! d"eV          ZY G d# d$eV          ZZ G d% d&eV          Z[ G d' d(eV          Z\ej]        ^                    d) ej_        dd*          g          d+             Z` G d, d-          Za G d. d/ea          Zb G d0 d1ea          Zc G d2 d3ea          Zd G d4 d5ea          Ze G d6 d7          Zf G d8 d9          Zg G d: d;          Zh G d< d=eh          Zid> Zjd? Zkd@ Zl G dA dB          Zm G dC dD          Zn G dE dF          ZodG ZpdH Zqej]        ^                    dIdJdKg          ej]        ^                    dLdJdKg          dM                         Zrej]        ^                    dIdJdKg          ej]        ^                    dLdJdKg          dN                         Zsej]        ^                    dIdJdKg          ej]        ^                    dLdJdKg          ej]        ^                    dOdJdKg          dP                                     Ztej]        ju        ej]        jv        dQ                         ZwdR ZxdS ZydT Zzej]        ^                    dUg dV          ej]        ^                    dOdKdJg          ej]        ^                    dIdJdKg          ej]        ^                    dLdJdKg          dW                                                 Z{ej]        ^                    dUdXdYg          ej]        ^                    dOdKdJg          ej]        ^                    dIdJdKg          ej]        ^                    dLdJdKg          dZ                                                 Z|d[ Z}d\ Z~d] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Z G dj dk          Z G dl dme          Zdn Zdo Zdp Zej                            d          Ze                    dq          Z ej        e          Z ej        eedr          Z ej        eeds          Z ej        e          Z ej        eedr          Z ej        eeds          ZeeeegZej]        ^                    dte          du             Zdv Zdw Zej]        ^                    dxg dy          dz             Zd{ ZdS )|    )lstsq)	MONTH_ENDYEAR_ENDassert_index_equal)PLATFORM_WIN)PYTHON_IMPL_WASMlrangeN)assert_assert_allcloseassert_almost_equalassert_equalassert_raises)	DataFrameSeries
date_range)stats)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ccf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    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/tests/test_stattools.py
acovf_datarH   E   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floatrB   difflog)mdatarP   s     rG   gc_datarW   K   sS    !##(E9j)*1E<<D726$<<a((((rI   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%rK   inflc                 R    t          | j        d         | j        t                     d S )Nr   )r   res1teststat	DECIMAL_5selfs    rG   test_teststatzCheckADF.test_teststat_   s"    DIaL$-CCCCCrI   c                 R    t          | j        d         | j        t                     d S Nr<   )r   r`   pvaluerb   rc   s    rG   test_pvaluezCheckADF.test_pvalueb   s"    DIaL$+yAAAAArI   c                 d      fd j         D             }t          | j        t                     d S )Nc                 6    g | ]}j         d          |         S )r9   )r`   ).0levrd   s     rG   
<listcomp>z,CheckADF.test_critvalues.<locals>.<listcomp>f   s$    ???Cdil3'???rI   )levelsr   
critvalues	DECIMAL_2)rd   rp   s   ` rG   test_critvalueszCheckADF.test_critvaluese   s8    ????4;???
JCCCCCrI   N)__name__
__module____qualname____doc__ro   r   rO   rP   rQ   xyre   ri   rr    rI   rG   rY   rY   S   s          !  F 9 ""D	)#A	& AD D DB B BD D D D DrI   rY   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cr9   
regressionautolagmaxlagg"]3?gf?g+gMbg/$r$   rw   r`   ra   rh   rp   clss    rG   setup_classzTestADFConstant.setup_classo   ;    CEc4JJJ!
111rI   Nrs   rt   ru   rv   classmethodr   ry   rI   rG   r{   r{   j   s9          2 2 [2 2 2rI   r{   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ctr9   r~   g|kɴg?)gI+"~jt	r   r   s    rG   r   z TestADFConstantTrend.setup_classz   s;    CEdDKKK!
111rI   Nr   ry   rI   rG   r   r   w   s2        
F2 2 [2 2 2rI   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nr9   r~   gwr.@gwJ?gV-g333333gZd;r   r   s    rG   r   zTestADFNoConstant.setup_class   s=    CEc4JJJ 

 211rI   Nr   ry   rI   rG   r   r      s2        
F	2 	2 [	2 	2 	2rI   r   c                   $    e Zd Zed             ZdS )TestADFConstant2c                 n    t          | j        dd d          | _        d| _        d| _        g d| _        d S )Nr}   r<   r~   g
@HVgRjN=V9?r   r$   rx   r`   ra   rh   rp   r   s    rG   r   zTestADFConstant2.setup_class   r   rI   Nrs   rt   ru   r   r   ry   rI   rG   r   r      -        2 2 [2 2 2rI   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   r<   r~   gSKgZ`?)g/$r   r   r   r   s    rG   r   z!TestADFConstantTrend2.setup_class   s;    CEdDKKK 
111rI   Nr   ry   rI   rG   r   r      r   rI   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   r<   r~   g'6zgKXc'?r   T)r   r   r   store)r$   rx   r`   ra   rh   rp   r   )r   __1_2s       rG   r   zTestADFNoConstant2.setup_class   si    CEc4JJJ!
 211'Ec4 
  
  
2r3999rI   c                 T    t          | j                                        d           d S )Nz$Augmented Dickey-Fuller Test Results)r   r   __str__rc   s    rG   test_store_strz!TestADFNoConstant2.test_store_str   s2    J  "H	
 	
 	
 	
 	
rI   N)rs   rt   ru   r   r   r   ry   rI   rG   r   r      s<        	
 	
 [	

 
 
 
 
rI   r   rw         @c                     t          j        t                    5  t          |            d d d            d S # 1 swxY w Y   d S N)pytestraises
ValueErrorr$   )rw   s    rG   !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.
    rK   resultszresults_corrgram.csv,	delimiterN)rs   rt   ru   rv   r   rO   rP   rw   ospathjoinCURR_DIRfilenamepdread_csvr   ry   rI   rG   r   r      sd          !9 ""D	)Aw||Hi1GHHHbk(c222GGGrI   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   rw   r`   rQ   confint_resr   s    rG   r   zTestACF.setup_class   sT    +g&K%	suBd$EJJJ+z:&>?FrI   c                 b    t          | j        d         dd         | j        t                     d S Nr   r<   )   r   r`   r"   	DECIMAL_8rc   s    rG   test_acfzTestACF.test_acf   s+    DIaL2.)DDDDDrI   c                     | j         d         | j         d                             d          d d d f         z
  }t          |dd         | j        t                     d S )Nr<   r   )r`   meanr   r   r   )rd   centereds     rG   test_confintzTestACF.test_confint   sV    9Q<$)A,"3"3A"6"6qqq$w"??HQrTND,<iHHHHHrI   c                 b    t          | j        d         d d         | j        t                     d S )Nr;   r   r   r`   r   	DECIMAL_3rc   s    rG   
test_qstatzTestACF.test_qstat   s+    DIaL"-tz9EEEEErI   N)	rs   rt   ru   rv   r   r   r   r   r   ry   rI   rG   r   r      st          G G [GE E EI I IF F F F FrI   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   rw   r`   r   s    rG   r   zTestACF_FFT.setup_class   s<    +j)K%	suBd===rI   c                 b    t          | j        d         dd          | j        t                     d S )Nr   r<   r   rc   s    rG   r   zTestACF_FFT.test_acf   s+    DIaL,dh	BBBBBrI   c                 R    t          | j        d         | j        t                     d S rg   r   rc   s    rG   r   zTestACF_FFT.test_qstat   s"    DIaL$*i@@@@@rI   N)rs   rt   ru   r   r   r   r   ry   rI   rG   r   r      sS        > > [>
C C CA A A A ArI   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)rB   concatenatearraynanrw   r   r"   r   res_dropres_conservativeemptyacf_none
qstat_noneres_noner   s    rG   r   zTestACFMissing.setup_class  s    "& 2 2CE:;;+g&K%	E4tV
 
 
  #E" 
  
  
 x||bf,".E4tV
 
 
rI   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"   rw   rc   s    rG   
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   rc   s    rG   test_acf_nonezTestACFMissing.test_acf_none$  s,    DM!,QrT2DM9MMMMMrI   c                 b    t          | j        d         dd         | j        t                     d S r   )r   r   r"   r   rc   s    rG   test_acf_dropzTestACFMissing.test_acf_drop'  s,    DM!,QrT2DHiHHHHHrI   c                 b    t          | j        d         dd         | j        t                     d S r   )r   r   r"   r   rc   s    rG   test_acf_conservativez$TestACFMissing.test_acf_conservative*  s8    !!$QrT*DHi	
 	
 	
 	
 	
rI   c                 R    t          | j        d         | j        t                     d S )Nr;   )r   r   r   r   rc   s    rG   test_qstat_nonezTestACFMissing.test_qstat_none/  s#    DM!,doyIIIIIrI   N)
rs   rt   ru   r   r   r   r   r   r   r   ry   rI   rG   r   r     s        
 
 [
*	 	 	N N NI I I
 
 

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


rI   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   methodr<   gS㥛gS㥛?r   r           )r0   rw   r   r   	DECIMAL_6r   r   )rd   r   confintr   ress        rG   test_olszTestPACF.test_olsA  s    bUKKKGABBKyAAAW\\!__QQQW55I&'",HQrTNC;;;Xa[3*---WQZ!Q(((WQZ#####rI   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 )Nr8   F)r   	efficientr   r<         ?)rcond:0yE>atol)r2   rw   copyr   shaperB   zerosr   ranger   r   )	rd   lag_lenr   rw   r   lagsleaddirectis	            rG   test_ols_inefficientzTestPACF.test_ols_inefficientM  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3rI   c                 z    t          | j        dd          }t          |dd          | j        t                     d S )Nr   mler   r  r<   )r3   rw   r   r   r   )rd   r   s     rG   test_ywzTestPACF.test_yw\  s:    r%888F122JY?????rI   zNo fp exception support in WASM)reasonc                     t          j        t                    5  t          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )N   r7   r   )r   warnsr   r0   rB   onesrc   s    rG   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)r3   rw   r0   r   r   )rd   r   pacflds      rG   test_ldzTestPACF.test_ldh  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6rI   c                     t          | j        d          \  }}t          | j        dd          }t          ||t                     d S )Nr   r"  burgr  )r1   rw   r0   r   r   )rd   	pacfburg_r   pacfburgs       rG   	test_burgzTestPACF.test_burgq  sH     r222	1b888Ix;;;;;rI   N)rs   rt   ru   r   r   r  r  r  r   markskipifr   r%  r+  r0  ry   rI   rG   r   r   ;  s        * * [*
$ 
$ 
$4 4 4@ @ @ [0   ' '	 '7 7 7< < < < <rI   r   c                   v   e Zd ZdZ ej                    Zej        d                                                                         Z	ej        d                                                                         Z
ej                            edd          Z ej        ed          ZdZed	             Zd
 Zd ZdS )TestCCFz)
    Test cross-correlation function
    unempr^   r   zresults_ccf.csvr   r      c                 z    | j         d         | _        t          | j        | j        | j        dd          | _        d S )Nr'   F)r   adjustedr   )r   r'   rw   rx   r   r`   r   s    rG   r   zTestCCF.setup_class  s4    +e$suce39u%PPPrI   c                 F    t          | j        | j        t                     d S r   )r   r`   r'   r   rc   s    rG   test_ccfzTestCCF.test_ccf  s    DItx;;;;;rI   c           	         d}t          | j        | j        | j        dd|          \  }}t	          || j                   t          ||d d df         z
  |d d df         |z
  t                     t          j	        
                    |d d df         |z
  dt          j        t          | j                            z            }t          |t          j        d|dz  z
  | j                  t                     d S )	Nr   F)r   r8  r   r   r   r<   r  )scale       @)r'   rw   rx   r   r   r`   r   r   r   normcdfrB   sqrtlenrepeat)rd   r   res2r  alpha1s        rG   r   zTestCCF.test_confint  s    DFDF$*uRW_deeegT49%%%D7111a4=0'!!!Q$-$2F	RRR1 4C"'#df++BVBV<VWWFBIa%#+otz$J$JIVVVVVrI   N)rs   rt   ru   rv   r   rO   rP   rT   dropnarw   rx   r   r   r   r   r   r   r   r   r   r   r   r:  r   ry   rI   rG   r4  r4  w  s          !9 ""D	'!!((**A	&  ''))Aw||Hi1BCCHbk(c222GEQ Q [Q< < <W W W W WrI   r4  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=        @      @r        D@r;   )minrI  r?  sfr&   rd   input_residualsexpected_statisticexpected_pvalueactual_statisticactual_pvalues         rG   test_1d_inputz0TestBreakvarHeteroskedasticityTest.test_1d_input  s    888JcFJJ)1a00FII(!Q//
 
 
 +K+
 +
'-  #55555//////rI   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  r=  )rL  rL  rL  )rM  rM  rM  )r   r   r   )      @rY  rY  )      @rZ  rZ  )       @r[  r[  g=@g     B@r;   r   r:   r<   )	rB   r   r   rO  rI  r?  rP  r&   r   rQ  s         rG   !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4rI   z0subset_length,expected_statistic,expected_pvaluer;   r         ?
   r:   c                 V    g d}t          ||          \  }}||k    sJ ||k    sJ d S )NrK  )subset_lengthr&   )rd   r`  rS  rT  rR  rU  rV  s          rG   test_subset_lengthz5TestBreakvarHeteroskedasticityTest.test_subset_length  sZ     988*J'+
 +
 +
'-
  #55555//////rI   z.alternative,expected_statistic,expected_pvaluez	two-sided
decreasingg?
increasingc                 V    g d}t          ||          \  }}||k    sJ ||k    sJ d S )NrK  )alternativera  )rd   rf  rS  rT  rR  rU  rV  s          rG   test_alternativez3TestBreakvarHeteroskedasticityTest.test_alternative  sZ     988*J#+
 +
 +
'-  #55555//////rI   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 )NrK  rN  r;   F)use_f)rO  rH  r?  rP  r&   rQ  s         rG   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//////rI   N)rs   rt   ru   scipy.statsrH  rI  rW  r\  r   r1  parametrizerO  r?  rP  rb  rg  rj  ry   rI   rG   rG  rG    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 0rI   rG  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
    rZ   rL   rK   c                 F    t          | j        | j        t                     d S r   )r   coint_tra   	DECIMAL_4rc   s    rG   
test_tstatzCheckCoint.test_tstat  s    DL$-CCCCCrI   N)rs   rt   ru   rv   ro   r   rO   rP   rQ   y1y2rr  ry   rI   rG   rn  rn    sm          !  F 9 ""D	:		%B	9		$BD D D D DrI   rn  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 )Nr}   r   trendr   r   g{(vT"g9_aH)r)   rs  rt  rp  ra   r   s    rG   r   zTestCoint_t.setup_class"  s>     CFCF#aNNN
 "&rI   Nr   ry   rI   rG   rv  rv    s9          ' ' [' ' 'rI   rv  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   r<   )r<   r   r]  r   {   r9   r;   ry   
r   rx  r:   r   )g\yvg LٟgӯgA)g;,0W祽 n b)gA>"r~  r  r  )g3x֚gUgUpg$r}   )g$
gpʐȝg!
g҆gSZ)g%Ikţ/wσjEć!6)g1;];r  r  r  )gg+ggg`Ezctt)gSsgo$/ggx\tji)g3rq痼!L')g]ɬJ	r  r  r  )gkgȨK3g!S4Mg0r   g权ng8gȁgMncd)r}   r   r  r   gdy=rtolgv!>r  r  )ry  r   gIwvc+gq:i}f:g|=g<6S:)rB   rC   seedrE   cumsumroundprintr)   r   r  r   )nobsscale_econstunitrx   ry  res_egrangerr  r   r`   r  r2r1res1_0s                 rG   
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	     rI   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 )	Nr{  r<   r|  alwaysr}   r   rx  r  )rB   rC   r  rE   warningssimplefilterr   r   r#  r)   r   r
   isneginf)r  r  rx   r}   s       rG   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 )Nr{  r<   r|  r;   rM   gHz>r  T)recordr}   r   rx  r  )rB   rC   r  rE   sumr  r  r   catch_warningsr)   r   r
   r  )r  r  rw   rx   wr}   s         rG   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 )NrK   rL   r   rM   )g,`p?gV?   r;   
verbose ismatchr<   r  r;   Fverbose	ssr_ftest   decimalparams_ftestr   rO   rP   rQ   rR   rS   rB   rT   rU   r   r#  FutureWarningr*   r   )rd   rV   rP   r_resultgrs        rG   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 )NrK   rL   r   rM   r  r  r<   r  r;   Fr  r  r  r  r  r  )rd   rV   rP   r  gr2s        rG   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 )Nr^  r;   r  r  Fr  r:   )	rB   rC   randr   r#  r  r*   r   r   rd   reset_randomstaterw   s      rG    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  r;   )  r   )i  r<   zx contains NaNr  )	rB   rC   r  r   infr   r   r   r*   r  s      rG   "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  r;   zAmaxlag must be a non-empty list containing only positive integersr  )r   r<   r;   )rB   rC   r  r   r   r   r*   r  s      rG   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)rs   rt   ru   r  r  r  r  r  ry   rI   rG   r  r    s_        
 
 
 
 
 
$; ; ;( ( (0 0 0 0 0rI   r  c                   Z    e Z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 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 NrK   r   rO   rP   rQ   rw   rc   s    rG   setup_methodzTestKPSS.setup_method  )    )++		*1rI   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   r-   rw   rB   rC   r  r   r   r  s      rG   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 )Nr}   r  r"  Cr   CTzunclear hypothesis)r   r#  r   r-   rw   r   r   rc   s    rG   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 )Nr}   r:   g5;N@r   g?W[?)r   r#  r   r-   rw   r   r   )rd   	kpss_statr   s      rG   re   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 )Nr}   r:   {Gz?r   r   r#  r   r-   rw   r   )rd   r   pvals      rG   	test_pvalzTestKPSS.test_pval3  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 )Nr}   r:   T)	r   r#  r   r-   rw   r   r  rA  r  rd   r   r   s      rG   
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 )Nr}   autor"  r;   	   SUNACTIVITYr  volumer8   lncoinsr   K   invt   )r   r#  r   r-   rw   r   r   loadrP   r   r   r   rd   r  s     rG   	test_lagszTestKPSS.test_lagsE  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  r}   r"  )rA  rw   formatr   r   r   r-   )rd   r  msgs      rG   test_kpss_fails_on_nobs_checkz&TestKPSS.test_kpss_fails_on_nobs_checkZ  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   r<   r  *   )r   r   r   r  r"  )rB   r   r_tiler-   )rd   basedata_which_breaks_autolags      rG   5test_kpss_autolags_does_not_assign_lags_equal_to_nobsz>TestKPSS.test_kpss_autolags_does_not_assign_lags_equal_to_nobse  sV     x///00$&E"'$*A*A999*L$M!&f555555rI   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 )Nr}   r  r"  r;      r  r  s     rG   test_legacy_lagszTestKPSS.test_legacy_lagsm  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 )Nr}   unknownr"  )r   r   r   r-   rw   rc   s    rG   test_unknown_lagszTestKPSS.test_unknown_lagss  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-   rw   rc   s    rG   	test_nonezTestKPSS.test_nonex  s    \-(( 	% 	%t$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   >AAN)rs   rt   ru   rv   r  r  r  re   r  r  r  r  r  r  r  r  ry   rI   rG   r  r    s        	 	2 2 2+ + +
 
 
: : :! ! !$ $ $! ! !*	* 	* 	*6 6 6! ! !/ / /
% % % % %rI   r  c                   8    e Zd ZdZ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  rc   s    rG   r  zTestRUR.setup_method  r  rI   Fc                    t          |d          }t          |d          }|j        d         }||j        k    rt	          d|j         d          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 )#Nrw   r   r   zx of shape z not understood)r  g?r   g??gffffff?)   2   d      r{  rA   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@r<   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   r:   )r   r;   )r   r<   )r   r   )r]   r\   z2.5%r[   )ResultsStorezThe series is not stationaryzThe series is stationary)r   r   r  sizer   rB   r   r  r  r   r@  rA  r  warnr  r   statsmodels.stats.diagnosticr  r  H0HA)rd   rw   r   r  pvalsr   crit
inter_critr  rI  countmax_pmin_pvrur_statkp_valuewarn_msgr  	crit_dictr  rstores                         rG   
simple_rurzTestRUR.simple_rur  s,   q#%))wqz 16>>C17CCCDDD 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//rI   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 )Nr6  r;   )
r   r#  r   r4   rw   rB   rC   r  r   r   r  s      rG   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   r4   rw   r  r   r   )rd   r  r   simple_rur_stats       rG   re   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   r4   rw   r  r   )rd   r   r  simple_pvals       rG   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   r4   rw   r   r  rA  r  s      rG   r  zTestRUR.test_store  s    \.// 	@ 	@1$&$??NAq!U	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	UZTV-----s   AAAN)F)
rs   rt   ru   rv   r  r  r  re   r  r  ry   rI   rG   r  r  }  s         2 2 2
a0 a0 a0 a0F; ; ;B B B( ( (. . . . .rI   r  c                      t          t          dd                    } t          t          | d          t          | j        d                     d S )Nr<      Fr   )r   r	   r   r#   rQ   )ss    rG   test_pandasacovfr+  
  sI    va}}AaU+++U18-G-G-GHHHHHrI   c                    t          j                    j        }t          ddt                    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)startendfreqi5  YEARFr)  r^  r;   )r   rO   rP   r   r   indexr#   r   rQ   rB   rC   r   r   r   )r  dtar  rw   s       rG   test_acovf2dr6    s   


 
 
%CV(CCCDSDICIF



CeCJE222333
	!!A	z	"	"  aU                 s   -CCCdemeanTFr8  c                     t           j                            d          }t          || |d          }t          || |d          }t	          ||d           d S )Nr  r  Tr7  r8  r   Fr  r  )rB   rC   normalr#   r   )r7  r8  r  qF1F2s         rG   test_acovf_fft_vs_convolutionr?    sc     		c""A	q(	=	=	=B	q(	>	>	>BB******rI   c                     t           j                            d          }t           j                            d          }t          ||| |d          }t          ||| |d          }t	          ||d           d S )N   r9  Fr:  Tr  r  )rB   rC   r;  r(   r   )r7  r8  r  rw   rx   r=  r>  s          rG   test_ccovf_fft_vs_convolutionrB  $  s     		c""A
	c""A	q!FX5	A	A	AB	q!FX4	@	@	@BB******rI   r   c                     t           j                            d          }t          || ||          }t	          ||| ||          }t          ||d           d S )NrA  r9  r:  r  r  )rB   rC   r;  r#   r(   r   )r7  r8  r   r  rw   r=  r>  s          rG   test_compare_acovf_vs_ccovfrD  /  se     		c""A	q(	<	<	<B	q!FX3	?	?	?BB******rI   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t.          t1          |                    }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?r<   rA   i  aicbicr   )icry  )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@r8   r:   )r4  columns)r<   r;   z2000-1-1)r1  periodsr4  r;   )max_armax_marI  ry  )r;   r<   )r<   r<   )statsmodels.tsa.arima_processrF  rB   r   r  rC   r  r%   r   r	   r   rG  rQ   rH  r   aic_min_orderbic_min_orderr
   r4  equalsrJ  r   r   r   rA  r   )rF  arparamsmaparamsmaparamr  rx   r  aic_xbic_xrG  rH  r4  y_seriesres_pds                 rG   test_arma_order_select_icrZ  :  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*9c!ffEEEE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+++++rI   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)rB   r   r  r  r  r%   )rx   r  r  s      rG   !test_arma_order_select_ic_failurer]  w  s     		
 	
 	
	 	A0 OOO	 	 	"	" & &h'''"1%%& & & & & & & & & & & & & & & & & &s    AAAc                      t          t          j                    j        dg         dd          } t	          | j        d           d S )Nr  Tr6  )r   r   r<   )r"   r   rO   rP   r   ndim)results    rG   test_acf_fft_dataframera    sL     #]O4$b  F a     rI   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  r6  r{  Tisacovr<   r;   r   r  r  )rB   aranger.   r   r   )rhomacov
sigma2_epsarr0   r   s          rG   test_levinson_durbin_acovrk    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HrI   r   )r   r   r   r   c                     t          | ||||          }t          | ||||d          }t          |d d         |           d S )Nr8  r7  r   r   r^  r8  r7  r   r   nlagr(  )r#   r   rH   r8  r7  r   r   fulllimiteds          rG   test_acovf_nlagsrs    sk    
 Xf#w  D   G D"Iw'''''rI   r   r   c                     |                                  } t          j        | dd<   t          | ||||          }t          | ||||d          }t	          |d d         |           d S )Nr<   r:   rm  r^  rn  r(  )r  rB   r   r#   r   rp  s          rG   test_acovf_nlags_missingru    s    
 ""JfJqsOXf#w  D   G D"Iw'''''rI   c                     t          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )NrA   F)ro  r   )r   r   r   r#   )rH   s    rG   test_acovf_errorrw    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 )Nr^  r<   r   r  g      $@r  r  r8   r"  rY  r7   )rB   r  r/   r   re  )r0   rj  r"   s      rG   test_pacf2acf_arry    s    8B<<DDGDG"4((GBC	$/000BQRRt,,,,"4q111GBC	#.///BQqS	------rI   c                     dt          j        d          z   } d| d<   t          |           \  }}t          |dd          \  }}}}}t	          ||d	           t	          | |d	           g d
}t	          ||d	           d S )Nr        &@r<   r   r^  Trc  r  r  )
g7¤g4@"geX,gJ+1gUN1gd]F,g/$#gꕲqg=yXg_vOֿ-C6?)rB   re  r/   r.   r   )r0   rj  r"   r   ar_ldpacf_ld	ar_from_rs          rG   test_pacf2acf_levinson_durbinr    s    BIdOO#$DDG"4((GB-c2dCCCAugq!BD))))D'----  I B	------rI   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  r{  r<   r   r6  r"  r^  r3  )rB   re  r   r   r   r/   r  )r0   s    rG   test_pacf2acf_errorsr     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'  r<   r]  r  r^  gMb@?r  i'  r   r;   MbP?)
rB   rC   rD   rE   r1   r3   r   r   dotcumprod)	rF   erx   r0   sigma2yw_pacfyes2ysigma2_directs	            rG   test_pacf_burgr    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5rI   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)r6  r;   r^  r  e   )r   r   r   r1   rB   r   ry   rI   rG   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 )Nr<   r;   r9   r  r   g߿gkw#g6>W[r|  r  )g(\?g?g r?g#J{/L?r  )r  r   r  r  )rB   r   r+   r   )mar#   thetar  	exp_thetas        rG   %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$$$$$rI   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  r]  r<   r;   r   r  r  r  )r  r  )rB   r   r  r+   r   )r  r#   r  r  theta_2sigma2_2s         rG   test_innovations_algo_rtolr  0  s    	4+		BHa27--//)2a52a52a5=+@"Q%HIIE$U555ME6(StDDDGXE7###FH%%%%%rI   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  r<   r;   g@r  r  r;   r;   r   r  )rB   r   r   r   	TypeErrorr+   r   r   )r  r#   s     rG   test_innovations_errorsr  9  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  r<   r;   r9   r  r8   r  r   )	rB   r   r+   rC   rE   r,   r  appendr   )
r  r  r#   r  r   r  endogresidexpectedr  s
             rG   'test_innovations_filter_brockwell_davisr  F  s    	BHa"'k2&''EA...HE1
	AabbEB3B3KEue,,EazH1a[[ ? ?a5A;"#==>>>>x!!HE8$$$$$rI   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  r]  r<   r;   r   r^  r  z
2000-01-01)rK  rL  )rB   r   r  r+   rC   rE   r   r   r   r,   r   rQ   r   r4  )	r  r  r#   r  r   r  endog_pdr  resid_pds	            rG   test_innovations_filter_pandasr  T  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6rI   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  r<   r;   r9   r  r  r  )r<   r9   )
rB   r   r+   r   r   r   r,   r   r   r   )r  r#   r  r   s       rG   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 )Nr]  g?r<   r^  r9  r  g      r;   r   )ordergư>r  r  r  r  )rB   r   rC   r;  r    r  rA  r+   r,   rU   pir!   filterr   r   forecasts_errorfilter_resultskalman_gainllf_obs)r  	ar_params	ma_paramsr  r  r#   r  r  ur  modr  r  s                rG   *test_innovations_algo_filter_kalman_filterr  l  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4rI   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  r<   r;   zsample size is too shortr  r:   r   r   )rB   rC   standard_normalr$   r   r   r   r   )r  rx   r  s      rG   test_adfuller_short_seriesr    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   )rB   rC   r  r   r   r   r$   r  rx   s     rG   test_adfuller_maxlag_too_larger    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)rs   rt   ru   r   cur_dirr   r   r   run_dir	fail_filerB   asarrayr   r   fail_mdlry   rI   rG   r  r    sZ        Ggll7I..GWj11Irz+"+i0011HHHrI   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 )Nrw   r  r   r   r   r5   r  rc   s    rG   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 )Nr]  )trimr  rc   s    rG   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  r;   )r   r   r   r5   rB   rC   r  rc   s    rG   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  rc   s    rG   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   )AICrG  Aicc                 N    t          | j        |          }|d         dk    sJ d S )Nr  r:   r<   )r5   r  )rd   r   r  s      rG   test_autolag_case_sensitivityz.TestZivotAndrews.test_autolag_case_sensitivity  s+    DM7;;;1v{{{{{{rI   c                     t          | j        ddd           }t          |d         |d         |d         gg dd	           d S )
Nr6   r}   r   r   r   r   r<   r9   )g\CMg'>i?r6  r  r  )r5   r  r   r  s     rG   test_rgnp_casezTestZivotAndrews.test_rgnp_case  se    M!T
 
 
 	VSVSV$&=&=&=D	
 	
 	
 	
 	
 	
rI   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.csvr6   r}   t-statr  r   r<   r:   r9   )gPkw|gs?r8   r   r  r  
r   r   r   r  rB   r  r   r   r5   r   rd   mdlfilemdlr  s       rG   test_gnpdef_casez!TestZivotAndrews.test_gnpdef_case  s    ',,t|\::jW--..Cc8LLLVSVSVSV,&&&	
 	
 	
 	
 	
 	
rI   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.csvr6   r   r  r  r   r<   r:   r9   )gytmg}"O?r<   A   r  r  r  r  s       rG   test_stkprc_casez!TestZivotAndrews.test_stkprc_case  s    ',,t|\::jW--..CdHMMMVSVSVSV,&&&	
 	
 	
 	
 	
 	
rI   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   r<   r:   r9   )g*Wx8gCVzNz?r  f   r  r  r  r  s       rG   test_rgnpq_casez TestZivotAndrews.test_rgnpq_case  s    ',,t|[99jW--..CsHMMMVSVSVSV,(((	
 	
 	
 	
 	
 	
rI   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.csvr}   r  )r   r   r   r<   r:   r9   )g]3fg?r  i  r  r  r  r  s       rG   test_rand10000_casez$TestZivotAndrews.test_rand10000_case  s    ',,t|_==jW--..CCBBBVSVSVSV,)))	
 	
 	
 	
 	
 	
rI   N)rs   rt   ru   r  r  r  r  r   r1  rl  r  r  r  r  r  r  ry   rI   rG   r  r    s        9 9 93 3 31 1 19 9 9 [Y(=(=(=>>  ?>

 
 

 
 

 
 

 
 

 
 
 
 
rI   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  r<   r   r  r  r   r^  F)r   r   r   r(  r|  r  )rB   rC   r  r  r  r   r"   nanmeanr$  nansumr   )r  r  r  r`  r  r  r  gamma0s           rG   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;;;;;;rI   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 )Nc   zCan only compute partialr  r  )rB   rC   r  r   r   r   r0   )r  r  s     rG   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  r}   aegr   r  F)ry  r  r   r   return_resultsgffffff?)rB   rC   rD   r  r  r)   abs)rsrw   rx   r  s       rG   test_coint_auto_tstatr  	  s    			z	*	*B
	"$$S))**A
	"$$S))**A
		  C 6#a&>>D      rI   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  r9   Fr  )r   r   r   r#  r  r*   )r   s    rG   !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  r:   F)addconst)r   r   r   r*   NotImplementedErrorrW   s    rG   '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  r:   Tr  )r   r#  r  r*   r  s    rG   test_granger_causality_verboser	  4  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 r  )r:   r8   r  r  c                    t           j                            |           }t          |          }t	          |t           j                  sJ t          |          \  }}t	          |t           j                  sJ t	          |t           j                  sJ t          |          }t	          |t           j                  sJ t          |          }t	          |t           j                  sJ d S r   )	rB   rC   r  r0   
isinstancendarrayr1   r2   r3   )r  r  rx   r  r  s        rG   test_pacf_small_sampler  8  s    
	!!$''AQAa$$$$$Q<<DAqa$$$$$a$$$$$Aa$$$$$

Aa$$$$$$$rI   c                    t           j                            d          }t          j        t
                    5  t          |           d d d            n# 1 swxY w Y   t          j        t
                    5  t          |           d d d            n# 1 swxY w Y   t          j        t
                    5  t          |           d d d            n# 1 swxY w Y   t          |           d S rg   )
rB   rC   r  r   r   r   r0   r1   r2   r3   r  s     rG   test_pacf_1_obsr  F  sv   
	!!!$$A	z	"	"  Q              	z	"	"  !              	z	"	"                AJJJJJs5   AAA9BBB9CCC)statsmodels.compat.numpyr   statsmodels.compat.pandasr   r   r   statsmodels.compat.platformr   statsmodels.compat.pythonr   r	   r   r  numpyrB   numpy.testingr
   r   r   r   r   pandasr   r   r   r   r   scipyr   scipy.interpolater   statsmodels.datasetsr   r   r   r   r   statsmodels.tools.sm_exceptionsr   r   r   r   r   statsmodels.tools.validationr   r   rO  r    "statsmodels.tsa.statespace.sarimaxr!   statsmodels.tsa.stattoolsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r   r  rb   rq  r   rq   	DECIMAL_1r   dirnameabspath__file__r   fixturerH   rW   rY   r{   r   r   r   r   r   r1  rl  rq  r   r   r   r   r   r   r4  rG  rn  rv  r  r  r  r  r  r  r+  r6  r?  rB  rD  smokeslowrZ  r]  ra  rk  rs  ru  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   rD   r  random_sampler  
zeros_liker  df1df2	ones_likedf3df4gc_data_setsr  r  r	  r  r  ry   rI   rG   <module>r-     s   * * * * * * M M M M M M M M M M 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9< 9< 9< 9< 9<} 9< 9< 9<xW W W W W W W W: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w% w% w% w% w% w% w% w%tJ. J. J. J. J. J. J. J.Z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 			**
% 
% +*
%    rI   