
    g                     r   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j                  j                  ej                  j                  eQ            ZR ej                  d      d        ZT ej                  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                  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                  j                  dIdJdKg      ej                  j                  dLdJdKg      dM               Zrej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dN               Zsej                  j                  dIdJdKg      ej                  j                  dLdJdKg      ej                  j                  dOdJdKg      dP                      Ztej                  j                  ej                  j                  dQ               ZwdR ZxdS ZydT Zzej                  j                  dUg dV      ej                  j                  dOdKdJg      ej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dW                             Z{ej                  j                  dUdXdYg      ej                  j                  dOdKdJg      ej                  j                  dIdJdKg      ej                  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"                  j%                  d      Zej)                  dq      Z ej,                  e      Z ej.                  eedr      Z ej.                  eeds      Z ej4                  e      Z ej.                  eedr      Z ej.                  eeds      ZeeeegZej                  j                  dte      du        Zdv Zdw Zej                  j                  dxg dy      dz        Zd{ Zy)|    )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                  b    t         j                  j                  d      } | j                  d      S )N90     )nprandomRandomStaterandn)rnds    W/var/www/html/venv/lib/python3.12/site-packages/statsmodels/tsa/tests/test_stattools.py
acovf_datarH   E   s$    
))


&C99S>    c                      t        j                         j                  } | ddg   j                  } | 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   sR    !!#((E9j)*11E<<D77266$<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y)	CheckADFzI
    Test Augmented Dickey-Fuller

    Test values taken from Stata.
    1%5%10%rK   inflc                 T    t        | j                  d   | j                  t               y )Nr   )r   res1teststat	DECIMAL_5selfs    rG   test_teststatzCheckADF.test_teststat_   s    DIIaL$--CrI   c                 T    t        | j                  d   | j                  t               y Nr<   )r   r`   pvaluerb   rc   s    rG   test_pvaluezCheckADF.test_pvalueb   s    DIIaL$++yArI   c                     | j                   D cg c]  }| j                  d   |    }}t        || j                  t               y c c}w )Nr9   )levelsr`   r   
critvalues	DECIMAL_2)rd   levrl   s      rG   test_critvalueszCheckADF.test_critvaluese   s<    37;;?Cdiil3'?
?JC @s   AN)__name__
__module____qualname____doc__rk   r   rO   rP   rQ   xyre   ri   ro    rI   rG   rY   rY   S   sX     !F 9  "D		)##A		&  ADBDrI   rY   c                        e Zd ZdZed        Zy)TestADFConstantz*
    Dickey-Fuller test for unit root
    c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Ncr9   
regressionautolagmaxlagg"]3?gf?g+gMbg/$r$   rt   r`   ra   rh   rl   clss    rG   setup_classzTestADFConstant.setup_classo   -    CEEc4J!
1rI   Nrp   rq   rr   rs   classmethodr   rv   rI   rG   rx   rx   j   s     2 2rI   rx   c                        e Zd ZdZed        Zy)TestADFConstantTrend c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nctr9   r{   g|kɴg?)gI+"~jt	r   r   s    rG   r   z TestADFConstantTrend.setup_classz   s-    CEEdDK!
1rI   Nr   rv   rI   rG   r   r   w   s    
2 2rI   r   c                        e Zd ZdZed        Zy)TestADFNoConstantr   c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nnr9   r{   gwr.@gwJ?gV-g333333gZd;r   r   s    rG   r   zTestADFNoConstant.setup_class   s/    CEEc4J 

 2rI   Nr   rv   rI   rG   r   r      s    
	2 	2rI   r   c                       e Zd Zed        Zy)TestADFConstant2c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nrz   r<   r{   g
@HVgRjN=V9?r   r$   ru   r`   ra   rh   rl   r   s    rG   r   zTestADFConstant2.setup_class   r   rI   Nrp   rq   rr   r   r   rv   rI   rG   r   r          2 2rI   r   c                       e Zd Zed        Zy)TestADFConstantTrend2c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nr   r<   r{   gSKgZ`?)g/$r   r   r   r   s    rG   r   z!TestADFConstantTrend2.setup_class   s-    CEEdDK 
1rI   Nr   rv   rI   rG   r   r      r   rI   r   c                   "    e Zd Zed        Zd Zy)TestADFNoConstant2c                     t        | j                  dd d      | _        d| _        d| _        g d| _        t        | j                  dd dd      \  }}}| _        y )	Nr   r<   r{   g'6zgKXc'?r   T)r|   r}   r~   store)r$   ru   r`   ra   rh   rl   r   )r   __1_2s       rG   r   zTestADFNoConstant2.setup_class   sS    CEEc4J!
 2'EEc4 
2r39rI   c                 L    t        | j                  j                         d       y )Nz$Augmented Dickey-Fuller Test Results)r   r   __str__rc   s    rG   test_store_strz!TestADFNoConstant2.test_store_str   s    JJ "H	
rI   N)rp   rq   rr   r   r   r   rv   rI   rG   r   r      s    	
 	

rI   r   rt         @c                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wN)pytestraises
ValueErrorr$   )rt   s    rG   !test_adfuller_resid_variance_zeror      s*    	z	"   s   /8c                       e Zd ZdZ ej
                         Zej                  d   Zej                  j                  edd      Z ej                  ed      Zy)CheckCorrGramz%
    Set up for ACF, PACF tests.
    rK   resultszresults_corrgram.csv,	delimiterN)rp   rq   rr   rs   r   rO   rP   rt   ospathjoinCURR_DIRfilenamepdread_csvr   rv   rI   rG   r   r      sP     !9  "D		)Aww||Hi1GHHbkk(c2GrI   r   c                   2    e Zd ZdZed        Zd Zd Zd Zy)TestACFz'
    Test Autocorrelation Function
    c                     | j                   d   | _        | j                   d   | _        t        | j                  dddd      | _        | j                   dd	g   j
                  | _        y )
NacvarQ1(   T皙?F)nlagsqstatalphafftacvar_lbacvar_ub)r   r"   r   rt   r`   rQ   confint_resr   s    rG   r   zTestACF.setup_class   sU    ++g&KK%	suuBd$EJ++z:&>?FFrI   c                 Z    t        | j                  d   dd | j                  t               y Nr   r<   )   r   r`   r"   	DECIMAL_8rc   s    rG   test_acfzTestACF.test_acf   s!    DIIaL2.)DrI   c                     | j                   d   | j                   d   j                  d      d d d f   z
  }t        |dd | j                  t               y )Nr<   r   )r`   meanr   r   r   )rd   centereds     rG   test_confintzTestACF.test_confint   sH    99Q<$))A,"3"3A"6q$w"??HQrND,<,<iHrI   c                 Z    t        | j                  d   d d | j                  t               y )Nr;   r   r   r`   r   	DECIMAL_3rc   s    rG   
test_qstatzTestACF.test_qstat   s!    DIIaL"-tzz9ErI   N)	rp   rq   rr   rs   r   r   r   r   r   rv   rI   rG   r   r      s/     G GEIFrI   r   c                   (    e Zd Zed        Zd Zd Zy)TestACF_FFTc                     | j                   d   | _        | j                   d   | _        t        | j                  ddd      | _        y )Nacvarfftr   r   T)r   r   r   )r   r"   r   rt   r`   r   s    rG   r   zTestACF_FFT.setup_class   s8    ++j)KK%	suuBd=rI   c                 Z    t        | j                  d   dd  | j                  t               y )Nr   r<   r   rc   s    rG   r   zTestACF_FFT.test_acf   s!    DIIaL,dhh	BrI   c                 T    t        | j                  d   | j                  t               y rg   r   rc   s    rG   r   zTestACF_FFT.test_qstat   s    DIIaL$**i@rI   N)rp   rq   rr   r   r   r   r   rv   rI   rG   r   r      s     > >
CArI   r   c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestACFMissingc                 P   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      | _        y )Nr   r   r   Tr   dropF)r   r   r   missingr   conservative)r   r   r   r   r   none)rB   concatenatearraynanrt   r   r"   r   res_dropres_conservativeemptyacf_none
qstat_noneres_noner   s    rG   r   zTestACFMissing.setup_class  s    "&& 2CEE:;++g&KK%	EE4tV
  #EE" 
 xx|bff,".EE4tV
rI   c           	          t        j                  t              5  t        | j                  ddddd       d d d        y # 1 sw Y   y xY w)Nr   TFr   raise)r   r   r   r   r   )r   r   r   r"   rt   rc   s    rG   
test_raisezTestACFMissing.test_raise  sB    ]]+, 		 	 	s	   ?Ac                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r   r   rc   s    rG   test_acf_nonezTestACFMissing.test_acf_none$  s"    DMM!,Qr2DMM9MrI   c                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r"   r   rc   s    rG   test_acf_dropzTestACFMissing.test_acf_drop'  s"    DMM!,Qr2DHHiHrI   c                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r"   r   rc   s    rG   test_acf_conservativez$TestACFMissing.test_acf_conservative*  s'    !!!$Qr*DHHi	
rI   c                 T    t        | j                  d   | j                  t               y )Nr;   )r   r   r   r   rc   s    rG   test_qstat_nonezTestACFMissing.test_qstat_none/  s    DMM!,dooyIrI   N)
rp   rq   rr   r   r   r   r   r   r   r   rv   rI   rG   r   r     s0    
 
*	NI

JrI   r   c                       e Zd Zed        Zd Zd Zd Zej                  j                  ed      d        Zd Zd	 Zy
)TestPACFc                 T    | j                   d   | _        | j                   d   | _        y )NPACOLSPACYW)r   pacfolspacfywr   s    rG   r   zTestPACF.setup_class<  s"    kk(+[[)
rI   c                 H   t        | j                  ddd      \  }}t        |dd  | j                  t               ||j                  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       y )Nr   r   ols)r   r   methodr<   gS㥛gS㥛?r   r           )r0   rt   r   r   	DECIMAL_6r   r   )rd   r   confintr   ress        rG   test_olszTestPACF.test_olsA  s    bUKGABKyAW\\!_QW55I&'",HQrNC;Xa[3*-WQZ!Q(WQZ#rI   c                    d}t        | j                  |d      }| j                  j                         }||j                         z  }|j                  d   }t        j                  |dz
  df      }|dd  }t        j                  |dz         }d|d<   t        |      D ]>  }|d|dz   z
  |dz     |d d |f<   t        |d d d |dz   f   |d       d   d   ||dz   <   @ t        ||d	
       y )Nr8   F)r   	efficientr   r<         ?)rcond:0yE>atol)r2   rt   copyr   shaperB   zerosr   ranger   r   )	rd   lag_lenr   rt   r   lagsleaddirectis	            rG   test_ols_inefficientzTestPACF.test_ols_inefficientM  s    466EBFFKKM	QVVXGGAJxxQ
#u'A+&q	w 	OA1A;1q52DAJ!$q)QU)|"4d$GJ2NF1q5M	O 	d3rI   c                 p    t        | j                  dd      }t        |dd  | j                  t               y )Nr   mler   r   r<   )r3   rt   r   r   r   )rd   r   s     rG   test_ywzTestPACF.test_yw\  s*    r%8F12JY?rI   zNo fp exception support in WASM)reasonc                     t        j                  t              5  t        t	        j
                  d      d       d d d        y # 1 sw Y   y xY w)N   r7   r   )r   warnsr   r0   rB   onesrc   s    rG   test_yw_singularzTestPACF.test_yw_singular`  s7    
 \\,' 	'A&	' 	' 	's   !AAc                    t        | j                  dd      }t        | j                  dd      }t        ||t               t        | j                  dd      }t        | j                  dd      }t        ||t               y )Nr   r  r  ldbywlda)r3   rt   r0   r   r   )rd   r   pacflds      rG   test_ldzTestPACF.test_ldh  sb    r%8dffBu5FFI6dffBt4dffBu5FFI6rI   c                     t        | j                  d      \  }}t        | j                  dd      }t        ||t               y )Nr   r  burgr  )r1   rt   r0   r   r   )rd   	pacfburg_r   pacfburgs       rG   	test_burgzTestPACF.test_burgq  s4     r2	1b8Ix;rI   N)rp   rq   rr   r   r   r  r  r  r   markskipifr   r"  r(  r-  rv   rI   rG   r   r   ;  s\    * *
$4@ [[0  '	'7<rI   r   c                   `   e Zd ZdZ ej
                         Zej                  d   j                         j                         Z	ej                  d   j                         j                         Z
ej                  j                  edd      Z ej"                  ed      ZdZed	        Zd
 Zd Zy)TestCCFz)
    Test cross-correlation function
    unempr^   r   zresults_ccf.csvr   r      c                     | j                   d   | _        t        | j                  | j                  | j                  dd      | _        y )Nr'   F)r   adjustedr   )r   r'   rt   ru   r   r`   r   s    rG   r   zTestCCF.setup_class  s2    ++e$suucee399u%PrI   c                 N    t        | j                  | j                  t               y r   )r   r`   r'   r   rc   s    rG   test_ccfzTestCCF.test_ccf  s    DIItxx;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                  j                  |d d df   |z
  dt        j                  t        | j                              z        }t        |t        j                  d|dz  z
  | j                        t               y )	Nr   F)r   r5  r   r   r   r<   r  )scale       @)r'   rt   ru   r   r   r`   r   r   r   normcdfrB   sqrtlenrepeat)rd   r   res2r  alpha1s        rG   r   zTestCCF.test_confint  s    DFFDFF$**uRW_degT499%D71a4=0'!Q$-$2F	R1 4C"''#dff+BV<VWFBIIa%#+otzz$JIVrI   N)rp   rq   rr   rs   r   rO   rP   rT   dropnart   ru   r   r   r   r   r   r   r   r   r   r   r   r7  r   rv   rI   rG   r1  r1  w  s     !9  "D		'!((*A		& '')Aww||Hi1BCHbkk(c2GEQ Q<WrI   r1  c                   *   e Zd ZddlmZmZ d Zd Zej                  j                  dddd eej                  ddd      ej                  ddd            z  fdd	d eej                  d	d
d
      ej                  d	d
d
            z  fg      d        Zej                  j                  dddd eej                  ddd      ej                  ddd            z  fddej                  ddd      fddej                  ddd      fg      d        Zd Zy)"TestBreakvarHeteroskedasticityTestr   )chi2fc           	          g d}d}dt        | j                  j                  |dd      | j                  j                  |dd            z  }t	        |      \  }}||k(  sJ ||k(  sJ y )Nr  r  r:        @      @r        D@r;   )minrF  r<  sfr&   rd   input_residualsexpected_statisticexpected_pvalueactual_statisticactual_pvalues         rG   test_1d_inputz0TestBreakvarHeteroskedasticityTest.test_1d_input  s}    8JcFFJJ)1a0FFII(!Q/
 
 +K+
'-  #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                  j                  |d   dd      | j                  j                  |d   dd            z  dt        | j                  j                  |d   dd      | j                  j                  |d   dd            z  t         j                  g      }t        |      \  }}t        ||       t        ||       y )Nr  r  r:  )rI  rI  rI  )rJ  rJ  rJ  )r   r   r   )      @rV  rV  )      @rW  rW  )       @rX  rX  g=@g     B@r;   r   r:   r<   )	rB   r   r   rL  rF  r<  rM  r&   r   rN  s         rG   !test_2d_input_with_missing_valueszDTestBreakvarHeteroskedasticityTest.test_2d_input_with_missing_values  sL   ((c266"bffc"c266"

  XX3H	
 ((FFJJ1!4a;FFII03Q:
 FFJJ1!4a;FFII03Q:
 
 +K+
'- 	%'9:]O4rI   z0subset_length,expected_statistic,expected_pvaluer;   r         ?
   r:   c                 H    g d}t        ||      \  }}||k(  sJ ||k(  sJ y )NrH  )subset_lengthr&   )rd   r]  rP  rQ  rO  rR  rS  s          rG   test_subset_lengthz5TestBreakvarHeteroskedasticityTest.test_subset_length  s>     9*J'+
'-
  #5555///rI   z.alternative,expected_statistic,expected_pvaluez	two-sided
decreasingg?
increasingc                 H    g d}t        ||      \  }}||k(  sJ ||k(  sJ y )NrH  )alternativer^  )rd   rc  rP  rQ  rO  rR  rS  s          rG   test_alternativez3TestBreakvarHeteroskedasticityTest.test_alternative  s>     9*J#+
'-  #5555///rI   c                     g d}d}dt        | j                  j                  d|z  d      | j                  j                  d|z  d            z  }t	        |d      \  }}||k(  sJ ||k(  sJ y )NrH  rK  r;   F)use_f)rL  rE  r<  rM  r&   rN  s         rG   test_use_chi2z0TestBreakvarHeteroskedasticityTest.test_use_chi2  s    8JcIIMM!00!4IILL//3
 
 +K+
'-  #5555///rI   N)rp   rq   rr   scipy.statsrE  rF  rT  rY  r   r.  parametrizerL  r<  rM  r_  rd  rg  rv   rI   rG   rD  rD    s"   #0 +5Z [[:AAEE"aOQTT"a^<<="a#aeeB1oqttB1~>>?	
00 [[8"a#aeeB1oqttB1~"FFG61441#562qttB1~.	

0
00rI   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y)
CheckCointza
    Test Cointegration Test Results for 2-variable system

    Test values taken from Stata
    rZ   rL   rK   c                 N    t        | j                  | j                  t               y r   )r   coint_tra   	DECIMAL_4rc   s    rG   
test_tstatzCheckCoint.test_tstat  s    DLL$--CrI   N)rp   rq   rr   rs   rk   r   rO   rP   rQ   y1y2ro  rv   rI   rG   rk  rk    sL     !F 9  "D	:		%	%B	9		$	$BDrI   rk  c                        e Zd ZdZed        Zy)TestCoint_tz*
    Get AR(1) parameter on residuals
    c                 x    t        | j                  | j                  ddd       d   | _        d| _        d| _        y )Nrz   r   trendr~   r}   g{(vT"g9_aH)r)   rp  rq  rm  ra   r   s    rG   r   zTestCoint_t.setup_class"  s8     CFFCFF#aN
 "&rI   Nr   rv   rI   rG   rs  rs    s     ' 'rI   rs  c            
      |   d} d}g d}t         j                  j                  d       t         j                  j                  |       j	                         }|t         j                  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 ]@  }
||   }t        |	|
   d	   ||
   d	   d"#       ||
   dd  }|	|
   d   }t        ||d	d$%       B  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*%       y )+N   r<   )r<   r   rZ  r   {   r9   r;   rv   
r   ru  r:   r   )g\yvg LٟgӯgA)g;,0W祽 n b)gA>"r{  r|  r}  )g3x֚gUgUpg$rz   )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)rz   r   r  r   gdy=rtolgv!>r  r  )rv  r~   gIwvc+gq:i}f:g|=g<6S:)rB   rC   seedrE   cumsumroundprintr)   r   r  r   )nobsscale_econstunitru   rv  res_egrangerr  r   r`   r  r2r1res1_0s                 rG   
test_cointr  ,  s   DGEIINN399??4 '')D"))//$**Aa!eHQWHJA
AA  MdEeAadGQq!tWE!TJKeAadGQq!A#vYeAtLMeAadGQq!"uXU1dKLeAadGQq!"uXU1dKLM L!!C,t
CFCFCF OCF ! C,s
CF #CF1ICFCFCF !#"C,u
CF PCFOCFCF ! C,s

&&C!3S1CF!3S1CF!3S1CF!3S1CF( 7!Q$1a4aNQadGQq!A#vYeAt
Q !Q$1ab5q$OQ!Q$1ab5q$OQq 	7Au%CDGAJAq	>QBaBB6	77$ 1QT7AadG4:FF1I|D1!4QR8qtLr
	34	rI   c                     d} d}t         j                  j                  d       |t         j                  j                  |       z  }t	        j
                  dt               t        j                  t              5  t        ||ddd       }d d d        t        d   d       t        t        j                  |d                y # 1 sw Y   :xY w)	Nrx  r<   ry  alwaysrz   r   ru  r  )rB   rC   r  rE   warningssimplefilterr   r   r   r)   r   r
   isneginf)r  r  ru   rz   s       rG   test_coint_identical_seriesr    s    DGIINN3"))//$''A($78	)	* ;!Qc!T:;1sBKK!; ;s   9CCc                  
   d} d}t         j                  j                  d       |t         j                  j                  | d      z  }d|j	                  d      z   dt         j                  j                  |       z  z   }t        j                  dt               t        j                  d	      5 }t        ||d
dd       }d d d        t        d   d       t        t        j                  |d                y # 1 sw Y   :xY w)Nrx  r<   ry  r;   rM   gHz>r  T)recordrz   r   ru  r  )rB   rC   r  rE   sumr  r  r   catch_warningsr)   r   r
   r  )r  r  rt   ru   wrz   s         rG   test_coint_perfect_collinearityr    s    DGIINN3"))//$**A	AEEqEMD299??4#888A($78		 	 	- ;!Qc!T:;1sBKK!; ;s   /C99Dc                   *    e Zd Zd Zd Zd Zd Zd Zy)TestGrangerCausalityc                    t        j                         j                  }|ddg   j                  }|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        t        |d
   d   d   d       t        |d
   d   d   |d
   d   d   d       y # 1 sw Y   AxY w)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  s    %%',,y*-.55||E"wwrvvd|!, 1\\-|< 	I&tAqu"uH~q%HB	IHbeAh{&;QGqE!H^$beAh{&;Q	
	I 	Is   C''C0c                    t        j                         j                  }|ddg   j                  }|j	                  t
              }t        j                  t        j                  |      d      }t        j                  t        d      5  t        |d d dd df   d	d
      }d d d        t        j                  t        d      5  t        |d d dd df   d	gd
      }d d d        dv sJ dvsJ t        |d	   d   d   |d	   d   d   d       t        |d	   d   d   |d	   d   d   d       y # 1 sw Y   xY w# 1 sw Y   bxY w)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  sD   %%',,y*-.55||E"wwrvvd|!,\\-|< 	I&tAqu"uH~q%HB	I\\-|< 	L'Q2XUKC	LBww||qE!H[!3q6!9[#91	
 	qE!H^$c!fQi&<a	
	I 	I	L 	Ls   
D5E5D>E
c                    t         j                  j                  dd      }t        j                  t
        d      5  t        |dd       d d d        t        j                  t              5  t        j                  t
        d      5  t        |dd       d d d        d d d        y # 1 sw Y   ^xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr[  r;   r  r  Fr  r:   )	rB   rC   randr   r   r  r*   r   r   rd   reset_randomstatert   s      rG    test_granger_fails_on_nobs_checkz5TestGrangerCausality.test_granger_fails_on_nobs_check  s    IINN2q!\\-|< 	7!!Q6	7]]:& 	;m<@ ;%aE:;	; 	;	7 	7; ;	; 	;s/   B(,C B4C (B14B=	9C  C	c                    t         j                  j                  dd      }t         j                  |d<   t         j                  |d<   t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)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^    IINN4#FF&	FF&	]]:-=> 	(!!Q'	( 	( 	(s   "A88Bc                     t         j                  j                  dd      }t        j                  t
        d      5  t        |g d       d d d        y # 1 sw Y   y xY w)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  sI    IINN4#]]U
 	0 "!Y/		0 	0 	0s   AAN)rp   rq   rr   r  r  r  r  r  rv   rI   rG   r  r    s    
 
$;(0rI   r  c                   X    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y)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                     t        j                         | _        | j                  j                  d   j                  | _        y NrK   r   rO   rP   rQ   rt   rc   s    rG   setup_methodzTestKPSS.setup_method  ,    ))+		*11rI   c                     t        j                  t              5  t        | j                  d       d d d        t
        j                  j                  dd      }t        t        t        |       y # 1 sw Y   ?xY w)Nlegacyr  r3  r;   )
r   r   r   r-   rt   rB   rC   r  r   r   r  s      rG   test_fail_nonvector_inputz"TestKPSS.test_fail_nonvector_input  sT    \\./ 	)x(	) IINN2q!j$*		) 	)s   A00A9c                 x   t        j                  t              5  t        | j                  dd       d d d        t        j                  t              5  t        | j                  dd       d d d        t        j                  t              5  t        | j                  dd       d d d        t        j                  t              5  t        | j                  dd       d d d        t        t        t        | j                  dd       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   PxY w)Nrz   r  r  Cr   CTzunclear hypothesis)r   r   r   r-   rt   r   r   rc   s    rG   test_fail_unclear_hypothesisz%TestKPSS.test_fail_unclear_hypothesis  s    \\./ 	.H-	.\\./ 	.H-	.\\./ 	/X.	/\\./ 	/X.	/ 	dff&:(	
	. 	.	. 	.	/ 	/	/ 	/s/   DDD$D0DD!$D-0D9c                 p   t        j                  t              5  t        | j                  dd      \  }}}}d d d        t        dt               t        j                  t              5  t        | j                  dd      \  }}}}d d d        t        |dt               y # 1 sw Y   jxY w# 1 sw Y   'xY w)Nrz   r:   g5;N@r   g?W[?)r   r   r   r-   rt   r   r   )rd   	kpss_statr   s      rG   re   zTestKPSS.test_teststat*  s    \\./ 	6!%dffc1!5Iq!Q	6Ivy9\\./ 	7!%dffdA!6Iq!Q	7Ivy9	6 	6	7 	7s   B )B, B),B5c                 \   t        j                  t              5  t        | j                  dd      \  }}}}d d d        t        d       t        j                  t              5  t        | j                  dd      \  }}}}d d d        t        |d       y # 1 sw Y   `xY w# 1 sw Y   "xY w)Nrz   r:   {Gz?r   r   r   r   r-   rt   r   )rd   r   pvals      rG   	test_pvalzTestKPSS.test_pval3  s    \\./ 	1 a0MAtQ	1T4 \\./ 	2 q1MAtQ	2T4 	1 	1	2 	2s   B$B"B"B+c                    t        j                  t              5  t        | j                  ddd      \  }}}}d d d        t        j                  t        | j                               t        |j                  d       y # 1 sw Y   IxY w)Nrz   r:   T)	r   r   r   r-   rt   r   r  r>  r  rd   r   r   s      rG   
test_storezTestKPSS.test_store<  sf    \\./ 	8!$&&#q$7NAq!U	8 	UZZTVV-UZZ#	8 	8s   B  B	c                    t        j                  t              5  t        | j                  dd      }d d d        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        t        |d   d	       t        j                  t              5  t        t        j                         j                  d
   dd      }d d d        t        |d   d       t        j                  t              5  t        t        j                         j                  d   dd      }d d d        t        |d   d       y # 1 sw Y   pxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   >xY w)Nrz   autor  r;   	   SUNACTIVITYr  volumer8   lncoinsr   K   invt   )r   r   r   r-   rt   r   r   loadrP   r   r   r   rd   r  s     rG   	test_lagszTestKPSS.test_lagsE  sk   \\./ 	2tvvs&1C	2SVQ8==?''66JSVQ\\./ 	Ftyy{''13fEC	FSVQ\\./ 	Kw||~**95t6JC	KSVR \\./ 	Kz(--f5t6JC	KSVR #	2 	2	F 	F	K 	K	K 	Ks/   F!.F.=.F:.G!F+.F7:GGc                     t        | j                        }dj                  ||      }t        j                  t
        |      5  t        | j                  d|       d d d        y # 1 sw Y   y xY w)Nz3lags \({}\) must be < number of observations \({}\)r  rz   r  )r>  rt   formatr   r   r   r-   )rd   r  msgs      rG   test_kpss_fails_on_nobs_checkz&TestKPSS.test_kpss_fails_on_nobs_checkZ  s[     466{DKK$
 ]]:S1 	*D)	* 	* 	*s   A%%A.c                     t        j                  g d      }t         j                  t        j                  |d      g df   }t	        |d       y )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  s=     xx/0$&EE"''$*A9*L$M!&f5rI   c                     t        j                  t              5  t        | j                  dd      }d d d        t        d   d       y # 1 sw Y   xY w)Nrz   r  r  r;      r  r  s     rG   test_legacy_lagszTestKPSS.test_legacy_lagsm  sD    \\./ 	4tvvs(3C	4SVR 	4 	4s   AAc                     t        j                  t              5  t        | j                  dd       d d d        y # 1 sw Y   y xY w)Nrz   unknownr  )r   r   r   r-   rt   rc   s    rG   test_unknown_lagszTestKPSS.test_unknown_lagss  s3    ]]:& 	/I.	/ 	/ 	/s	   <Ac                     t        j                  t              5  t        | j                  d        d d d        y # 1 sw Y   y xY w)Nr  )r   r   r  r-   rt   rc   s    rG   	test_nonezTestKPSS.test_nonex  s1    \\-( 	%t$	% 	% 	%	   ;AN)rp   rq   rr   rs   r  r  r  re   r  r  r  r  r  r  r  r  rv   rI   rG   r  r    sC    	2+
:!$!*	*6!/
%rI   r  c                   6    e Zd ZdZd Zd	dZd Zd Zd Zd Z	y)
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                     t        j                         | _        | j                  j                  d   j                  | _        y r  r  rc   s    rG   r  zTestRUR.setup_method  r  rI   c                 6   t        |d      }t        |d      }|j                  d   }||j                  k7  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 ]  }||kD  r|}|
dz   }
||k  s|}|
dz   }
 |
t        j                  t        |            z  }t        |      dz
  }t        t        |      dz
  dd      D ]  }||d|f   k  r|} n ||   }d}d}||d   k(  rd}n
||d   k(  rd}|r*t        j                  |j                  |      t               |d   |d   |d   |d   d}|r(dd lm}  |       }||_        d!|_        d"|_        ||||fS |||fS )#Nrt   r   r   zx of shape z not understood)r  g?r   g??gffffff?)   2   d      rx  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=  r>  r  warnr  r   statsmodels.stats.diagnosticr	  r  H0HA)rd   rt   r   r  pvalsr   crit
inter_critr  rF  countmax_pmin_pvrur_statkp_valuewarn_msgr  	crit_dictr	  rstores                         rG   
simple_rurzTestRUR.simple_rur  sv   q#%)wwqz 166>{177)?CDD 6HHK
 xx@@?@@@@@@@@@
$ XXq$**Q-01
tzz!}% 	'ADAJ'A wJq!t	'
 !!12 	"A5y	5y		" 2773q6?*JNs5zA~r2. 	A*QT**		 ( 	eBi!Ia  IMM)46J
 d#T"t$T"	
	 A!^FFK6FI2FIWi77Wi//rI   c                     t        j                  t              5  t        | j                         d d d        t
        j                  j                  dd      }t        t        t        |       y # 1 sw Y   ?xY w)Nr3  r;   )
r   r   r   r4   rt   rB   rC   r  r   r   r  s      rG   r  z!TestRUR.test_fail_nonvector_input  sS    \\./ 	) (	) IINN2q!j"6:		) 	)s   A..A7c                     t        j                  t              5  t        | j                        \  }}}| j                  | j                        \  }}}d d d        t        t               y # 1 sw Y   xY wr   )r   r   r   r4   rt   r  r   r   )rd   r  r   simple_rur_stats       rG   re   zTestRUR.test_teststat  s_    \\./ 	<1$&&9NHa$(OODFF$;!OQ	< 	HoyA	< 	<s   9A--A6c                     t        j                  t              5  t        | j                        \  }}}| j                  | j                        \  }}}d d d        t               y # 1 sw Y   xY wr   )r   r   r   r4   rt   r  r   )rd   r   r  simple_pvals       rG   r  zTestRUR.test_pval  s]    \\./ 	8-dff5JAtQ $ 7A{A	8 	T;'	8 	8s   9A((A1c                     t        j                  t              5  t        | j                  d      \  }}}}d d d        t        j                  t        | j                               y # 1 sw Y   3xY w)NT)r   r   r   r4   rt   r   r  r>  r  s      rG   r  zTestRUR.test_store  sX    \\./ 	@1$&&$?NAq!U	@ 	UZZTVV-		@ 	@s   A((A1N)F)
rp   rq   rr   rs   r  r  r  re   r  r  rv   rI   rG   r  r  }  s(    2
a0F;B(.rI   r  c                      t        t        dd            } t        t        | d      t        | j                  d             y )Nr<      Fr   )r   r	   r   r#   rQ   )ss    rG   test_pandasacovfr'  
  s.    va}AaU+U188-GHrI   c                    t        j                         j                  }t        ddt              d d |_        |d= t        |d      }t        |t        |j                  d             t        j                  j                  d      }t        j                  t              5  t        |d       d d d        y # 1 sw Y   y xY w)	N17002009)startendfreqi5  YEARFr%  r[  r;   )r   rO   rP   r   r   indexr#   r   rQ   rB   rC   r   r   r   )r  dtar  rt   s       rG   test_acovf2dr2    s    



 
%
%CV(CDSICIF

CeCJJE23
		!A	z	" aU  s   "B99CdemeanTFr5  c                     t         j                  j                  d      }t        || |d      }t        || |d      }t	        ||d       y )Nr  r
  Tr3  r5  r   Fr  r  )rB   rC   normalr#   r   )r3  r5  r  qF1F2s         rG   test_acovf_fft_vs_convolutionr;    sG     			c"A	q(	=B	q(	>BB*rI   c                     t         j                  j                  d      }t         j                  j                  d      }t        ||| |d      }t        ||| |d      }t	        ||d       y )N   r5  Fr6  Tr  r  )rB   rC   r7  r(   r   )r3  r5  r  rt   ru   r9  r:  s          rG   test_ccovf_fft_vs_convolutionr>  $  sb     			c"A
		c"A	q!FX5	AB	q!FX4	@BB*rI   r   c                     t         j                  j                  d      }t        || ||      }t	        ||| ||      }t        ||d       y )Nr=  r5  r6  r  r  )rB   rC   r7  r#   r(   r   )r3  r5  r   r  rt   r9  r:  s          rG   test_compare_acovf_vs_ccovfr@  /  sI     			c"A	q(	<B	q!FX3	?BB*rI   c                  N   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
                  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'                  |	j$                               t#        |j                  j(                  j'                  |	j(                               t#        |j                  j$                  j'                  |
j$                               t#        |j                  j(                  j'                  |
j(                               t+        j,                  dt.        t1        |            }t+        j2                  ||      }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'                  |	j$                               t#        |j                  j(                  j'                  |	j(                               t        |j                  d       y )#Nr   )arma_generate_sampleg      ?g      пg?gffffff?r<   rA   i  aicbicr   )icrv  )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:   )r0  columns)r<   r;   z2000-1-1)r-  periodsr0  r;   )max_armax_marE  rv  )r;   r<   )r<   r<   )statsmodels.tsa.arima_processrB  rB   r   r  rC   r  r%   r   r	   r   rC  rQ   rD  r   aic_min_orderbic_min_orderr
   r0  equalsrF  r   r   r   r>  r   )rB  arparamsmaparamsmaparamr  ru   r  aic_xbic_xrC  rD  r0  y_seriesres_pds                 rG   test_arma_order_select_icrV  :  s    Cxxu&Hxxt%HuuQ	\"HeeAxK GDIINN4Xx6A
qeU^3
?CHH55664	
E HH66666	
E EF1I
>C
EF1I
>C

A6

A6""F+""F+CGGMM  +,CGGOO""3;;/0CGGMM  +,CGGOO""3;;/0MM*9c!fEEyy%(H!1%sF 

))3::bqb"1"f+=qA

))3::bqb"1"f+=qA%%v.%%v.
qU#
6C

A6CGGMM  +,CGGOO""3;;/0""F+rI   c                      t        j                  g d      } dd l} |j                         5   |j                  d       t        |       }d d d        y # 1 sw Y   y xY w)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%   )ru   r  r  s      rG   !test_arma_order_select_ic_failurerY  w  sY     		
	A0 	 	 	 	" &h'"1%& & &s   AAc                      t        t        j                         j                  dg   dd      } t	        | j
                  d       y )Nr  Tr3  )r   r   r<   )r"   r   rO   rP   r   ndim)results    rG   test_acf_fft_dataframer]    s;     ##]O4$bF a rI   c            	      :   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	
       y )Nr  r3  rx  Tisacovr<   r;   r   r  r  )rB   aranger.   r   r   )rhomacov
sigma2_epsarr0   r   s          rG   test_levinson_durbin_acovrg    s    
C
A"))C. D!0q!FJD!QJC1H-B#!A!67dCD"((As8qcQUm#;<4HrI   r   )r   r   r   r   c                 d    t        | ||||      }t        | ||||d      }t        |d d |       y )Nr5  r3  r   r   r[  r5  r3  r   r   nlagr$  )r#   r   rH   r5  r3  r   r   fulllimiteds          rG   test_acovf_nlagsro    sI    
 Xf#wD G D"Iw'rI   r   r   c                     | j                         } t        j                  | dd t        | ||||      }t        | ||||d      }t	        |d d |       y )Nr<   r:   ri  r[  rj  r$  )r  rB   r   r#   r   rl  s          rG   test_acovf_nlags_missingrq    sd    
 "JffJqOXf#wD G D"Iw'rI   c                 |    t        j                  t              5  t        | dd       d d d        y # 1 sw Y   y xY w)NrA   F)rk  r   )r   r   r   r#   )rH   s    rG   test_acovf_errorrs    s/    	z	" /js./ / /s   2;c                  J   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       y )Nr[  r<   r   r  g      $@r  r  r8   r  rV  r7   )rB   r  r/   r   ra  )r0   rf  r"   s      rG   test_pacf2acf_arru    s    88B<DDGDG"4(GBC		$/0BQRt,"4q1GBC		#./BQq	-rI   c                      dt        j                  d      z   } d| d<   t        |       \  }}t        |dd      \  }}}}}t	        ||d	       t	        | |d	       g d
}t	        ||d	       y )Nr        &@r<   r   r[  Tr_  r  r  )
g7¤g4@"geX,gJ+1gUN1gd]F,g/$#gꕲqg=yXg_vOֿ-C6?)rB   ra  r/   r.   r   )r0   rf  r"   r   ar_ldpacf_ld	ar_from_rs          rG   test_pacf2acf_levinson_durbinr|    st    BIIdO#$DDG"4(GB-c2d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        t        j                  t              5  t        | dd         d d d        t        j                  t              5  t        t        j                  d             d d d        t        j                  t              5  t        t        j                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)	Nr  rw  r<   r   r3  r  r[  r/  )rB   ra  r   r   r   r/   r  )r0   s    rG   test_pacf2acf_errorsr~     s    BIIdO#$DDG	z	" -T,-	z	" 'T!"X&'	z	" +RXXb\*+	z	" 0RXXg./0 0- -' '+ +0 0s/   C?'DDD#?DDD #D,c                     t         j                  j                  d      } | j                  d      }|dd  d|d d z  z   }t	        |d      \  }}t        |d      }t        ||d       ||j                         z
  }|j                  |      d	z  }d
|d
<   |t        j                  d|dz  z
        z  }t        ||d       y )Nr@   i'  r<   rZ  r
  r[  gMb@?r  i'  r   r;   MbP?)
rB   rC   rD   rE   r1   r3   r   r   dotcumprod)	rF   eru   r0   sigma2yw_pacfyes2ysigma2_directs	            rG   test_pacf_burgr    s    
))


&C		%A	!"afAQ#LD&anGD'-	
QVVXB
&&*u
CDG"**Q]33MFM5rI   c                  8   t        j                  t              5  t        t	        j
                  d      d       d d d        t        j                  t              5  t        t	        j
                  d      d       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)N)r3  r;   r[  r  e   )r   r   r   r1   rB   r   rv   rI   rG   test_pacf_burg_errorr    sn    	z	" )"((7#R()	z	" &"((3-%& &) )& &s    B BBBc                  4   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       y )Nr<   r;   r9   r  r   g߿gkw#g6>W[rx  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HHa"'k2&'E$U3ME61#y7)gY?@IE940F:F$U5ME6E%L"%F2J$rI   c                      t        j                  ddg      } t        j                  d| dz  j                         z   | d   | d   | d   z  z   | d   g      }t        |d      \  }}t        |dd	      \  }}t	        ||       t	        ||       y )
Nr  rZ  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HHa27--/)2a52a52a5=+@"Q%HIE$U5ME6(StDGXE7#FH%rI   c                  <   d} t        j                  d| dz  z   | g      }t        j                  t              5  t        |d       d d d        t        j                  t              5  t        |d       d d d        t        j                  t              5  t        t        j                  d             d d d        t        j                  t              5  t        |d	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)
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HHa"'k2&'E	y	! *S)*	z	" )R()	z	" +&)*+	y	! -V,- -* *) )+ +- -s/   C.(C:DD.C7:DDDc                    d}t        j                  d|dz  z   |g      }t        |d      \  }}t         j                  j	                  d      }|dd  ||d d z  z   }t        ||      }|d   g}t        dd      D ]$  }	|j                  ||	   ||	df   |d   z  z
         & t        j                  |      }t        ||       y )	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HHa"'k2&'EA.HE1
		AabEB3BKEue,EazH1a[ ?a5A;"#==>?xx!HE8$rI   c                     t        j                  ddg      }t        j                  d|dz  j                         z   |d   |d   |d   z  z   |d   g      }t        |d      \  }}t         j                  j                  d      }t        j                  |t        j                  dd	      
      }t        ||      }t        ||      }t        ||j                         t        |j                  |j                         y )Nr  rZ  r<   r;   r   r[  r  z
2000-01-01)rG  rH  )rB   r   r  r+   rC   rE   r   r   r   r,   r   rQ   r   r0  )	r  r  r#   r  r   r  endog_pdr  resid_pds	            rG   test_innovations_filter_pandasr  T  s    	4+	BHHa27--/)2a52a52a5=+@"Q%HIEB/HE1IIOOBEyybmmL"&MNHue,E!(E2HE8??+x~~x~~6rI   c                  \   d} t        j                  d| dz  z   | g      }t        |d      \  }}t        j                  t
              5  t        t        j                  d      |       d d d        t        j                  t
              5  t        t        j                  d      |d d        d d d        t        j                  t
              5  t        t        j                  t        j                  d            |       d d d        y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)	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HHa"'k2&'EA.HE1	z	" 4288F+U34	z	" 4288A;cr
34	z	" B2<<(895AB B	4 44 4B Bs$   	 D

#D3D"
DD"D+c                 2   t        j                  dg      }t        j                  dg      }d}t         j                  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
      }
|
j                  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$                  |       y )NrZ  g?r<   r[  r5  r  g      r;   r   )ordergư>r  r  r
  r  )rB   r   rC   r7  r    r  r>  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  si    #I#I FII"%E 
a)mbeeAyL1E
E  &HE15%(AQ!Vmvz*S266!bee)a-3H-HHG %I3y>B
CC
**RUU9i78
9C  4SDAs**1-DtDab!ec((44Q3B3Y?d GS[[t4rI   c                    t         j                  j                  d      }t        |d      }|d   j                  dk(  sJ t         j                  j                  d      }t        j                  t        d      5  t        |       d d d        t         j                  j                  d	      }t        j                  t        d      5  t        |d
       d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr  T)r   r
  r<   r;   zsample size is too shortr  r:   r   r|   )rB   rC   standard_normalr$   r~   r   r   r   )r  ru   r  s      rG   test_adfuller_short_seriesr    s    
		!!!$A
1D
!Cr7>>Q
		!!!$A	z)C	D 
		!!!$A	z)C	D %t$% % % %s   ;C 	C, C),C5c                     t         j                  j                  d      }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nr  zmaxlag must be less thanr  3   r~   )rB   rC   r  r   r   r   r$   r  ru   s     rG   test_adfuller_maxlag_too_larger    sD    
		!!#&A	z)C	D 2  s   AAc                       e Zd ZeZej                  j                  ed      Zej                  j                  ed      Z	 e
j                   ej                  e	            Zy)SetupZivotAndrewsr   zrgnp.csvN)rp   rq   rr   r   cur_dirr   r   r   run_dir	fail_filerB   asarrayr   r   fail_mdlrv   rI   rG   r  r    sJ    Gggll7I.GWj1Irzz+"++i01HrI   r  c                       e Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Z
d Zd	 Zd
 Zd Zd Zy)TestZivotAndrewsc                     t        j                  t              5  t        | j                  d       d d d        y # 1 sw Y   y xY w)Nrt   r  r   r   r   r5   r  rc   s    rG   test_fail_regression_typez*TestZivotAndrews.test_fail_regression_type  s1    ]]:& 	9$--C8	9 	9 	9r  c                     t        j                  t              5  t        | j                  d       d d d        y # 1 sw Y   y xY w)NrZ  )trimr  rc   s    rG   test_fail_trim_valuez%TestZivotAndrews.test_fail_trim_value  s1    ]]:& 	3$--c2	3 	3 	3r  c                     t        j                  t              5  t        t        j
                  j                  dd             d d d        y # 1 sw Y   y xY w)Nr  r;   )r   r   r   r5   rB   rC   r  rc   s    rG   test_fail_array_shapez&TestZivotAndrews.test_fail_array_shape  s:    ]]:& 	1"))..Q/0	1 	1 	1s   *AAc                     t        j                  t              5  t        | j                  d       d d d        y # 1 sw Y   y xY w)NNoner}   r  rc   s    rG   test_fail_autolag_typez'TestZivotAndrews.test_fail_autolag_type  s1    ]]:& 	9$--8	9 	9 	9r  r}   )AICrC  Aicc                 F    t        | j                  |      }|d   dk(  sJ y )Nr  r:   r<   )r5   r  )rd   r}   r  s      rG   test_autolag_case_sensitivityz.TestZivotAndrews.test_autolag_case_sensitivity  s"    DMM7;1v{{rI   c                 n    t        | j                  ddd       }t        |d   |d   |d   gg dd	       y )
Nr6   rz   r~   r|   r}   r   r<   r9   )g\CMg'>i?r3  r  r  )r5   r  r   r  s     rG   test_rgnp_casezTestZivotAndrews.test_rgnp_case  s>    MM!T
 	VSVSV$&=D	
rI   c                    t         j                  j                  | j                  d      }t	        j
                  t        j                  |            }t        |ddd      }t        |d   |d   |d   |d	   gg d
d       y )Nz
gnpdef.csvr6   rz   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  sk    '',,t||\:jjW-.Cc8LVSVSVSV,&	
rI   c                    t         j                  j                  | j                  d      }t	        j
                  t        j                  |            }t        |ddd      }t        |d   |d   |d   |d	   gg d
d       y )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  sk    '',,t||\:jjW-.CdHMVSVSVSV,&	
rI   c                    t         j                  j                  | j                  d      }t	        j
                  t        j                  |            }t        |ddd      }t        |d   |d   |d   |d	   gg d
d       y )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  sk    '',,t||[9jjW-.CsHMVSVSVSV,(	
rI   c                    t         j                  j                  | j                  d      }t	        j
                  t        j                  |            }t        |dd      }t        |d   |d   |d   |d   gg d	d
       y )Nzrand10000.csvrz   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  si    '',,t||_=jjW-.CCBVSVSVSV,)	
rI   N)rp   rq   rr   r  r  r  r  r   r.  ri  r  r  r  r  r  r  rv   rI   rG   r  r    sU    9319 [[Y(=> ?





rI   r  c                 *   t         j                  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 ])  }t        j                  ||d  |d ||z
   z        |z  ||<   + t        ||dd       y )Nr  r<   r   r  r  r   r[  F)r   r   r   r$  rx  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1aggaj! 	!aAhVVAccFN"%@F

1Ewwr{H771:DYYuu}%F1f Hiiab	E*D1H,= =>GHFH4d;rI   c                     t         j                  j                  d      }t        j                  t
        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nc   zCan only compute partialr  r  )rB   rC   r  r   r   r   r0   )r  r  s     rG   test_pacf_nlags_errorr    sC    
		!!"%A	z)C	D Q  s   AAc            	      0   t         j                  j                  d      } t        j                  | j	                  d            }t        j                  | j	                  d            }t        ||ddddd      }t        j                  |d         d	k  sJ y )
Nl   0= r  rz   aegr   r  F)rv  r   r~   r}   return_resultsgffffff?)rB   rC   rD   r  r  r)   abs)rsrt   ru   r  s       rG   test_coint_auto_tstatr  	  s    			z	*B
		"$$S)*A
		"$$S)*A
		C 66#a&>D   rI   x   )ba)r  r  datasetc                     t        j                  t              5  t        j                  t        d      5  t        | dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r9   Fr  )r   r   r   r   r  r*   )r  s    rG   !test_granger_causality_exceptionsr  &  sX    	*	+ =\\-y9 	=!'1e<	== =	= 	== =s"   A"AA"A	A""A+c                     t        j                  t        d      5  t        | d       d d d        t        j                  t              5  t        | dd       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)Nzmaxlag must ber  r
  r  r:   F)addconst)r   r   r   r*   NotImplementedErrorrW   s    rG   'test_granger_causality_exception_maxlagr  -  sc    	z)9	: 2gb12	*	+ :gq59: :2 2: :s   A#A/#A,/A8c                     t        j                  t        d      5  t        | dd       d d d        y # 1 sw Y   y xY w)Nr  r  r:   Tr  )r   r   r  r*   r  s    rG   test_granger_causality_verboser  4  s1    	m9	5 8gq$78 8 8s   4=r
  )r:   r8   r  r  c                    t         j                  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 y r   )	rB   rC   r  r0   
isinstancendarrayr1   r2   r3   )r
  r  ru   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                  j                  d      }t        j                  t
              5  t        |       d d d        t        j                  t
              5  t        |       d d d        t        j                  t
              5  t        |       d d d        t        |       y # 1 sw Y   oxY w# 1 sw Y   NxY w# 1 sw Y   -xY wrg   )
rB   rC   r  r   r   r   r0   r1   r2   r3   r  s     rG   test_pacf_1_obsr  F  s    
		!!!$A	z	" Q	z	" !	z	" AJ   s#   B3&B?C3B<?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   rK  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   rn  r   rm   	DECIMAL_1r   dirnameabspath__file__r   fixturerH   rW   rY   rx   r   r   r   r   r   r.  ri  rm  r   r   r   r   r   r   r1  rD  rk  rs  r  r  r  r  r  r  r'  r2  r;  r>  r@  smokeslowrV  rY  r]  rg  ro  rq  rs  ru  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  rv   rI   rG   <module>r)     s   * M M 4 > 	     0 0   & O O  ? 4 6     . 							77??277??845 h  
 h)  )D D.
2h 
228 2&2 2&2x 22H 2
 
& wrwwq#/0 1
3 3Fm F<A- A 0J] 0Jt9<} 9<xW W:u0 u0pD D"'* '~B	90 90xw% w%tJ. J.ZI
 D%=1dE]3+ 4 2+ D%=1dE]3+ 4 2+ D%=1dE]3u.+ / 4 2+ 8,  8,v!&H!I $MN.D%=1dE]3( 4 2 / O( ^V$<=.D%=1dE]3( 4 2 / >("/

..0
06&
%&
-%	7	B5D	%2 2G
( G
T< !  YY1SBMM!bll#$bll#$BLLObll#$bll#$S#s# L1= 2=:8 	*
% +
%rI   