
    !gU                     n   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlZd dlmZmZmZmZmZ d dlZd dlmZmZmZ d dlZd dlmZ d d	lmZ d d
lmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE dZFdZGdZHdZIdZJdZKdZLe
j                  j                  e
j                  j                  eP            ZQ ej                  d      d        ZS ej                  d      d        ZT G d d      ZU G d deU      ZV G d d eU      ZW G d! d"eU      ZX G d# d$eU      ZY G d% d&eU      ZZ G d' d(eU      Z[ej                  j                  d) ej                  dd*      g      d+        Z_ G d, d-      Z` G d. d/e`      Za G d0 d1e`      Zb G d2 d3e`      Zc G d4 d5e`      Zd G d6 d7      Ze G d8 d9      Zf G d: d;      Zg G d< d=eg      Zhd> Zid? Zjd@ Zk G dA dB      Zl G dC dD      Zm G dE dF      ZndG ZodH Zpej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dM               Zqej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dN               Zrej                  j                  dIdJdKg      ej                  j                  dLdJdKg      ej                  j                  dOdJdKg      dP                      Zsej                  j                  ej                  j                  dQ               ZvdR ZwdS ZxdT Zyej                  j                  dUg dV      ej                  j                  dOdKdJg      ej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dW                             Zzej                  j                  dUdXdYg      ej                  j                  dOdKdJg      ej                  j                  dIdJdKg      ej                  j                  dLdJdKg      dZ                             Z{d[ Z|d\ Z}d] Z~d^ Zd_ 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j2                  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)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    a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/tests/test_stattools.py
acovf_datarG   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floatrA   difflog)mdatarO   s     rF   gc_datarV   K   sR    !!#((E9j)*11E<<D77266$<a((rH   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%rJ   inflc                 T    t        | j                  d   | j                  t               y )Nr   )r   res1teststat	DECIMAL_5selfs    rF   test_teststatzCheckADF.test_teststat_   s    DIIaL$--CrH   c                 T    t        | j                  d   | j                  t               y Nr;   )r   r_   pvaluera   rb   s    rF   test_pvaluezCheckADF.test_pvalueb   s    DIIaL$++yArH   c                     | j                   D cg c]  }| j                  d   |    }}t        || j                  t               y c c}w )Nr8   )levelsr_   r   
critvalues	DECIMAL_2)rc   levrk   s      rF   test_critvalueszCheckADF.test_critvaluese   s<    37;;?Cdiil3'?
?JC @s   AN)__name__
__module____qualname____doc__rj   r   rN   rO   rP   xyrd   rh   rn    rH   rF   rX   rX   S   sX     !F 9  "D		)##A		&  ADBDrH   rX   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cr8   
regressionautolagmaxlagg"]3?gf?g+gMbg/$r#   rs   r_   r`   rg   rk   clss    rF   setup_classzTestADFConstant.setup_classo   -    CEEc4J!
1rH   Nro   rp   rq   rr   classmethodr   ru   rH   rF   rw   rw   j   s     2 2rH   rw   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ctr8   rz   g|kɴg?)gI+"~jt	r   r   s    rF   r   z TestADFConstantTrend.setup_classz   s-    CEEdDK!
1rH   Nr   ru   rH   rF   r   r   w   s    
2 2rH   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nr8   rz   gwr.@gwJ?gV-g333333gZd;r   r   s    rF   r   zTestADFNoConstant.setup_class   s/    CEEc4J 

 2rH   Nr   ru   rH   rF   r   r      s    
	2 	2rH   r   c                       e Zd Zed        Zy)TestADFConstant2c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nry   r;   rz   g
@HVgRjN=V9?r~   r#   rt   r_   r`   rg   rk   r   s    rF   r   zTestADFConstant2.setup_class   r   rH   Nro   rp   rq   r   r   ru   rH   rF   r   r          2 2rH   r   c                       e Zd Zed        Zy)TestADFConstantTrend2c                 n    t        | j                  dd d      | _        d| _        d| _        g d| _        y )Nr   r;   rz   gSKgZ`?)g/$r   r   r   r   s    rF   r   z!TestADFConstantTrend2.setup_class   s-    CEEdDK 
1rH   Nr   ru   rH   rF   r   r      r   rH   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;   rz   g'6zgKXc'?r   T)r{   r|   r}   store)r#   rt   r_   r`   rg   rk   r   )r   __1_2s       rF   r   zTestADFNoConstant2.setup_class   sS    CEEc4J!
 2'EEc4 
2r39rH   c                 L    t        | j                  j                         d       y )Nz$Augmented Dickey-Fuller Test Results)r   r   __str__rb   s    rF   test_store_strz!TestADFNoConstant2.test_store_str   s    JJ "H	
rH   N)ro   rp   rq   r   r   r   ru   rH   rF   r   r      s    	
 	

rH   r   rs         @c                 v    t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY wN)pytestraises
ValueErrorr#   )rs   s    rF   !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.
    rJ   resultszresults_corrgram.csv,	delimiterN)ro   rp   rq   rr   r   rN   rO   rs   ospathjoinCURR_DIRfilenamepdread_csvr   ru   rH   rF   r   r      sP     !9  "D		)Aww||Hi1GHHbkk(c2GrH   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   rs   r_   rP   confint_resr   s    rF   r   zTestACF.setup_class   sU    ++g&KK%	suuBd$EJ++z:&>?FFrH   c                 Z    t        | j                  d   dd | j                  t               y Nr   r;   )   r   r_   r!   	DECIMAL_8rb   s    rF   test_acfzTestACF.test_acf   s!    DIIaL2.)DrH   c                     | j                   d   | j                   d   j                  d      d d d f   z
  }t        |dd | j                  t               y )Nr;   r   )r_   meanr   r   r   )rc   centereds     rF   test_confintzTestACF.test_confint   sH    99Q<$))A,"3"3A"6q$w"??HQrND,<,<iHrH   c                 Z    t        | j                  d   d d | j                  t               y )Nr:   r   r   r_   r   	DECIMAL_3rb   s    rF   
test_qstatzTestACF.test_qstat   s!    DIIaL"-tzz9ErH   N)	ro   rp   rq   rr   r   r   r   r   r   ru   rH   rF   r   r      s/     G GEIFrH   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   rs   r_   r   s    rF   r   zTestACF_FFT.setup_class   s8    ++j)KK%	suuBd=rH   c                 Z    t        | j                  d   dd  | j                  t               y )Nr   r;   r   rb   s    rF   r   zTestACF_FFT.test_acf   s!    DIIaL,dhh	BrH   c                 T    t        | j                  d   | j                  t               y rf   r   rb   s    rF   r   zTestACF_FFT.test_qstat   s    DIIaL$**i@rH   N)ro   rp   rq   r   r   r   r   ru   rH   rF   r   r      s     > >
CArH   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)rA   concatenatearraynanrs   r   r!   r   res_dropres_conservativeemptyacf_none
qstat_noneres_noner   s    rF   r   zTestACFMissing.setup_class  s    "&& 2CEE:;++g&KK%	EE4tV
  #EE" 
 xx|bff,".EE4tV
rH   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!   rs   rb   s    rF   
test_raisezTestACFMissing.test_raise  sB    ]]+, 		 	 	s	   ?Ac                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r   r   rb   s    rF   test_acf_nonezTestACFMissing.test_acf_none$  s"    DMM!,Qr2DMM9MrH   c                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r!   r   rb   s    rF   test_acf_dropzTestACFMissing.test_acf_drop'  s"    DMM!,Qr2DHHiHrH   c                 Z    t        | j                  d   dd | j                  t               y r   )r   r   r!   r   rb   s    rF   test_acf_conservativez$TestACFMissing.test_acf_conservative*  s'    !!!$Qr*DHHi	
rH   c                 T    t        | j                  d   | j                  t               y )Nr:   )r   r   r   r   rb   s    rF   test_qstat_nonezTestACFMissing.test_qstat_none/  s    DMM!,dooyIrH   N)
ro   rp   rq   r   r   r   r   r   r   r   ru   rH   rF   r   r     s0    
 
*	NI

JrH   r   c                   @    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
y)	TestPACFc                 T    | j                   d   | _        | j                   d   | _        y )NPACOLSPACYW)r   pacfolspacfywr   s    rF   r   zTestPACF.setup_class<  s"    kk(+[[)
rH   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           )r/   rs   r   r   	DECIMAL_6r   r   )rc   r   confintr   ress        rF   test_olszTestPACF.test_olsA  s    bUKGABKyAW\\!_QW55I&'",HQrNC;Xa[3*-WQZ!Q(WQZ#rH   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 )Nr7   F)r   	efficientr   r;         ?)rcond:0yE>atol)r1   rs   copyr   shaperA   zerosr   ranger   r
   )	rc   lag_lenr   rs   r   lagsleaddirectis	            rF   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3rH   c                 p    t        | j                  dd      }t        |dd  | j                  t               y )Nr   mler   r   r;   )r2   rs   r   r   r   )rc   r   s     rF   test_ywzTestPACF.test_yw\  s*    r%8F12JY?rH   c                     t        j                  t              5  t        t	        j
                  d      d       d d d        y # 1 sw Y   y xY w)N   r6   r   )r   warnsr   r/   rA   onesrb   s    rF   test_yw_singularzTestPACF.test_yw_singular`  s5    \\,' 	'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)r2   rs   r/   r   r   )rc   r   pacflds      rF   test_ldzTestPACF.test_ldd  sb    r%8dffBu5FFI6dffBt4dffBu5FFI6rH   c                     t        | j                  d      \  }}t        | j                  dd      }t        ||t               y )Nr   r  burgr  )r0   rs   r/   r   r   )rc   	pacfburg_r   pacfburgs       rF   	test_burgzTestPACF.test_burgm  s4     r2	1b8Ix;rH   N)ro   rp   rq   r   r   r  r  r  r   r&  r+  ru   rH   rF   r   r   ;  s3    * *
$4@'7<rH   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&   rs   rt   r   r_   r   s    rF   r   zTestCCF.setup_class  s2    ++e$suucee399u%PrH   c                 N    t        | j                  | j                  t               y r   )r   r_   r&   r   rb   s    rF   test_ccfzTestCCF.test_ccf  s    DIItxx;rH   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   r1  r   r   r   r;   r  )scale       @)r&   rs   rt   r   r   r_   r   r   r   normcdfrA   sqrtlenrepeat)rc   r   res2r  alpha1s        rF   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VrH   N)ro   rp   rq   rr   r   rN   rO   rS   dropnars   rt   r   r   r   r   r   r   r   r   r   r   r   r3  r   ru   rH   rF   r-  r-  s  s     !9  "D		'!((*A		& '')Aww||Hi1BCHbkk(c2GEQ Q<WrH   r-  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  r6        @      @r        D@r:   )minrB  r8  sfr%   rc   input_residualsexpected_statisticexpected_pvalueactual_statisticactual_pvalues         rF   test_1d_inputz0TestBreakvarHeteroskedasticityTest.test_1d_input  s}    8JcFFJJ)1a0FFII(!Q/
 
 +K+
'-  #5555///rH   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  r6  )rE  rE  rE  )rF  rF  rF  )r   r   r   )      @rR  rR  )      @rS  rS  )       @rT  rT  g=@g     B@r:   r   r9   r;   )	rA   r   r   rH  rB  r8  rI  r%   r   rJ  s         rF   !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4rH   z0subset_length,expected_statistic,expected_pvaluer:   r         ?
   r9   c                 H    g d}t        ||      \  }}||k(  sJ ||k(  sJ y )NrD  )subset_lengthr%   )rc   rY  rL  rM  rK  rN  rO  s          rF   test_subset_lengthz5TestBreakvarHeteroskedasticityTest.test_subset_length  s>     9*J'+
'-
  #5555///rH   z.alternative,expected_statistic,expected_pvaluez	two-sided
decreasingg?
increasingc                 H    g d}t        ||      \  }}||k(  sJ ||k(  sJ y )NrD  )alternativerZ  )rc   r_  rL  rM  rK  rN  rO  s          rF   test_alternativez3TestBreakvarHeteroskedasticityTest.test_alternative  s>     9*J#+
'-  #5555///rH   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 )NrD  rG  r:   F)use_f)rH  rA  r8  rI  r%   rJ  s         rF   test_use_chi2z0TestBreakvarHeteroskedasticityTest.test_use_chi2  s    8JcIIMM!00!4IILL//3
 
 +K+
'-  #5555///rH   N)ro   rp   rq   scipy.statsrA  rB  rP  rU  r   markparametrizerH  r8  rI  r[  r`  rc  ru   rH   rF   r@  r@    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0rH   r@  c                       e Zd ZdZg dZ ej                         Zej                  d   j                  Z	ej                  d   j                  Z
d Zy)
CheckCointza
    Test Cointegration Test Results for 2-variable system

    Test values taken from Stata
    rY   rK   rJ   c                 N    t        | j                  | j                  t               y r   )r   coint_tr`   	DECIMAL_4rb   s    rF   
test_tstatzCheckCoint.test_tstat  s    DLL$--CrH   N)ro   rp   rq   rr   rj   r   rN   rO   rP   y1y2rl  ru   rH   rF   rh  rh    sL     !F 9  "D	:		%	%B	9		$	$BDrH   rh  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 )Nry   r   trendr}   r|   g{(vT"g9_aH)r(   rm  rn  rj  r`   r   s    rF   r   zTestCoint_t.setup_class  s8     CFFCFF#aN
 "&rH   Nr   ru   rH   rF   rp  rp    s     ' 'rH   rp  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   rV  r   {   r8   r:   ru   
r   rr  r9   r   )g\yvg LٟgӯgA)g;,0W祽 n b)gA>"rx  ry  rz  )g3x֚gUgUpg$ry   )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)ry   r   r~  r   gdy=rtolgv!>r  r  )rs  r}   gIwvc+gq:i}f:g|=g<6S:)rA   rB   seedrD   cumsumroundprintr(   r   r  r
   )nobsscale_econstunitrt   rs  res_egrangerr  r   r_   r  r2r1res1_0s                 rF   
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	rH   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)	Nru  r;   rv  alwaysry   r   rr  r   )rA   rB   r  rD   warningssimplefilterr   r   r  r(   r   r	   isneginf)r  r  rt   ry   s       rF   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)Nru  r;   rv  r:   rL   gHz>r  T)recordry   r   rr  r   )rA   rB   r  rD   sumr  r  r   catch_warningsr(   r   r	   r  )r  r  rs   rt   wry   s         rF   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)NrJ   rK   r   rL   )g,`p?gV?   r:   
verbose ismatchr;   r	  r:   Fverbose	ssr_ftest   decimalparams_ftestr   rN   rO   rP   rQ   rR   rA   rS   rT   r   r  FutureWarningr)   r   )rc   rU   rO   r_resultgrs        rF   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)NrJ   rK   r   rL   r  r  r;   r	  r:   Fr  r  r  r  r  r  )rc   rU   rO   r  gr2s        rF   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)NrW  r:   r  r  Fr  r9   )	rA   rB   randr   r  r  r)   r   r   rc   reset_randomstaters   s      rF    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  )	rA   rB   r  r   infr   r   r   r)   r  s      rF   "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:   )rA   rB   r  r   r   r   r)   r  s      rF   test_granger_fails_on_zero_lagz3TestGrangerCausality.test_granger_fails_on_zero_lag  sI    IINN4#]]U
 	0 "!Y/		0 	0 	0s   AAN)ro   rp   rq   r  r  r  r  r  ru   rH   rF   r  r    s    
 
$;(0rH   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 NrJ   r   rN   rO   rP   rs   rb   s    rF   setup_methodzTestKPSS.setup_method  ,    ))+		*11rH   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  r/  r:   )
r   r  r   r,   rs   rA   rB   r  r   r   r  s      rF   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)Nry   r  r  Cr   CTzunclear hypothesis)r   r  r   r,   rs   r   r   rb   s    rF   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)Nry   r9   g5;N@r   g?W[?)r   r  r   r,   rs   r   r   )rc   	kpss_statr   s      rF   rd   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)Nry   r9   {Gz?r   r   r  r   r,   rs   r   )rc   r   pvals      rF   	test_pvalzTestKPSS.test_pval/  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)Nry   r9   T)	r   r  r   r,   rs   r   r  r:  r  rc   r   r   s      rF   
test_storezTestKPSS.test_store8  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)Nry   autor  r:   	   SUNACTIVITYr  volumer7   lncoinsr   K   invt   )r   r  r   r,   rs   r   r   loadrO   r   r   r   rc   r  s     rF   	test_lagszTestKPSS.test_lagsA  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  ry   r  )r:  rs   formatr   r   r   r,   )rc   r  msgs      rF   test_kpss_fails_on_nobs_checkz&TestKPSS.test_kpss_fails_on_nobs_checkV  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  )rA   r   r_tiler,   )rc   basedata_which_breaks_autolags      rF   5test_kpss_autolags_does_not_assign_lags_equal_to_nobsz>TestKPSS.test_kpss_autolags_does_not_assign_lags_equal_to_nobsa  s=     xx/0$&EE"''$*A9*L$M!&f5rH   c                     t        j                  t              5  t        | j                  dd      }d d d        t        d   d       y # 1 sw Y   xY w)Nry   r  r  r:      r  r  s     rF   test_legacy_lagszTestKPSS.test_legacy_lagsi  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)Nry   unknownr  )r   r   r   r,   rs   rb   s    rF   test_unknown_lagszTestKPSS.test_unknown_lagso  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,   rs   rb   s    rF   	test_nonezTestKPSS.test_nonet  s1    \\-( 	%t$	% 	% 	%	   ;AN)ro   rp   rq   rr   r  r  r  rd   r  r  r  r  r  r  r  r  ru   rH   rF   r  r    sC    	2+
:!$!*	*6!/
%rH   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  rb   s    rF   r  zTestRUR.setup_method  r  rH   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 )#Nrs   r   r   zx of shape z not understood)r  g?r   g??gffffff?)   2   d      ru  r@   r  r  i  i  i  i  )gJ4?gX ?g`vOj?gkw#?g[ A@g}b@)gI&?gB?g?gMSt$?gDt@g(@)g/$?gOec?gcZB?gW[?ge`TR@gQI	@)gaTR'?g&S:?gZڊ?g48E?go!@gkw	@)gŏ1w?g?g;Nё\?gSt$?g58EGr@HP	@)g[ A?gX?g6<R?g䃞ͪ?gGx$@r  )g'W?gk	?gͪV?gݓ?g7d*@gY 
@)gݓZ?g	h"?g@?gOjM?g/n@gRI&B@)g	^)?gQ?g^I+?g9#J?gRI&@g"uq@)g(?gy&1?;MO?gHPs?g@g3@)g0*?goT?r  gn4@?g;O@g/L
@)gJ4?g?ggs?gTt$?gqh 	@gc=y@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   r9   )r   r:   )r   r;   )r   r   )r\   r[   z2.5%rZ   )ResultsStorezThe series is not stationaryzThe series is stationary)r   r   r  sizer   rA   r   r  r  r   r9  r:  r  warnr  r   statsmodels.stats.diagnosticr  r  H0HA)rc   rs   r   r  pvalsr   crit
inter_critr  rB  countmax_pmin_pvrur_statkp_valuewarn_msgr  	crit_dictr  rstores                         rF   
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//rH   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)Nr/  r:   )
r   r  r   r3   rs   rA   rB   r  r   r   r  s      rF   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   r3   rs   r  r   r   )rc   r  r   simple_rur_stats       rF   rd   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   r3   rs   r  r   )rc   r   r  simple_pvals       rF   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   r3   rs   r   r  r:  r  s      rF   r  zTestRUR.test_store  sX    \\./ 	@1$&&$?NAq!U	@ 	UZZTVV-		@ 	@s   A((A1N)F)
ro   rp   rq   rr   r  r  r  rd   r  r  ru   rH   rF   r  r  y  s(    2
a0F;B(.rH   r  c                      t        t        dd            } t        t        | d      t        | j                  d             y )Nr;      Fr   )r   r   r   r"   rP   )ss    rF   test_pandasacovfr$    s.    va}AaU+U188-GHrH   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"  rW  r:   )r   rN   rO   r   r   indexr"   r   rP   rA   rB   r   r   r   )r  dtar  rs   s       rF   test_acovf2dr/    s    



 
%
%CV(CDSICIF

CeCJJE23
		!A	z	" aU  s   "B99CdemeanTFr1  c                     t         j                  j                  d      }t        || |d      }t        || |d      }t	        ||d       y )Nr  r  Tr0  r1  r   Fr  r  )rA   rB   normalr"   r   )r0  r1  r  qF1F2s         rF   test_acovf_fft_vs_convolutionr8    sG     			c"A	q(	=B	q(	>BB*rH   c                     t         j                  j                  d      }t         j                  j                  d      }t        ||| |d      }t        ||| |d      }t	        ||d       y )N   r2  Fr3  Tr  r  )rA   rB   r4  r'   r   )r0  r1  r  rs   rt   r6  r7  s          rF   test_ccovf_fft_vs_convolutionr;     sb     			c"A
		c"A	q!FX5	AB	q!FX4	@BB*rH   r   c                     t         j                  j                  d      }t        || ||      }t	        ||| ||      }t        ||d       y )Nr:  r2  r3  r  r  )rA   rB   r4  r"   r'   r   )r0  r1  r   r  rs   r6  r7  s          rF   test_compare_acovf_vs_ccovfr=  +  sI     			c"A	q(	<B	q!FX3	?BB*rH   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;   r@   i  aicbicr   )icrs  )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@r7   r9   )r-  columns)r;   r:   z2000-1-1)r*  periodsr-  r:   )max_armax_marB  rs  )r:   r;   )r;   r;   )statsmodels.tsa.arima_processr?  rA   r   r  rB   r  r$   r   r   r   r@  rP   rA  r   aic_min_orderbic_min_orderr	   r-  equalsrC  r   r   r   r:  r   )r?  arparamsmaparamsmaparamr  rt   r  aic_xbic_xr@  rA  r-  y_seriesres_pds                 rF   test_arma_order_select_icrS  6  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+rH   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)rA   r   r  r  r  r$   )rt   r  r  s      rF   !test_arma_order_select_ic_failurerV  s  sY     		
	A0 	 	 	 	" &h'"1%& & &s   AAc                      t        t        j                         j                  dg   dd      } t	        | j
                  d       y )Nr  Tr/  )r   r   r;   )r!   r   rN   rO   r   ndim)results    rF   test_acf_fft_dataframerZ    s;     ##]O4$bF a rH   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  r/  ru  Tisacovr;   r:   r   r
  r  )rA   aranger-   r
   r   )rhomacov
sigma2_epsarr/   r   s          rF   test_levinson_durbin_acovrd    s    
C
A"))C. D!0q!FJD!QJC1H-B#!A!67dCD"((As8qcQUm#;<4HrH   r   )r   r   r   r   c                 d    t        | ||||      }t        | ||||d      }t        |d d |       y )Nr1  r0  r   r   rW  r1  r0  r   r   nlagr!  )r"   r
   rG   r1  r0  r   r   fulllimiteds          rF   test_acovf_nlagsrl    sI    
 Xf#wD G D"Iw'rH   r   r   c                     | j                         } t        j                  | dd t        | ||||      }t        | ||||d      }t	        |d d |       y )Nr;   r9   rf  rW  rg  r!  )r  rA   r   r"   r
   ri  s          rF   test_acovf_nlags_missingrn    sd    
 "JffJqOXf#wD G D"Iw'rH   c                 |    t        j                  t              5  t        | dd       d d d        y # 1 sw Y   y xY w)Nr@   F)rh  r   )r   r   r   r"   )rG   s    rF   test_acovf_errorrp    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 )NrW  r;   r   r  g      $@r
  r  r7   r  rR  r6   )rA   r  r.   r
   r^  )r/   rc  r!   s      rF   test_pacf2acf_arrr    s    88B<DDGDG"4(GBC		$/0BQRt,"4q1GBC		#./BQq	-rH   c                      dt        j                  d      z   } d| d<   t        |       \  }}t        |dd      \  }}}}}t	        ||d	       t	        | |d	       g d
}t	        ||d	       y )Nr        &@r;   r   rW  Tr\  r
  r  )
g7¤g4@"geX,gJ+1gUN1gd]F,g/$#gꕲqg=yXg_vOֿ-C6?)rA   r^  r.   r-   r
   )r/   rc  r!   r   ar_ldpacf_ld	ar_from_rs          rF   test_pacf2acf_levinson_durbinry    st    BIIdO#$DDG"4(GB-c2dCAugq!BD)D'-I B	-rH   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  rt  r;   r   r/  r  rW  r,  )rA   r^  r   r   r   r.   r  )r/   s    rF   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;   rV  r	  rW  gMb@?r  i'  r   r:   MbP?)
rA   rB   rC   rD   r0   r2   r
   r   dotcumprod)	rE   ert   r/   sigma2yw_pacfyes2ysigma2_directs	            rF   test_pacf_burgr  	  s    
))


&C		%A	!"afAQ#LD&anGD'-	
QVVXB
&&*u
CDG"**Q]33MFM5rH   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)r/  r:   rW  r  e   )r   r   r   r0   rA   r   ru   rH   rF   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:   r8   r  r   g߿gkw#g6>W[ru  r  )g(\?g?g r?g#J{/L?r  )r	  r   r	  r  )rA   r   r*   r
   )mar"   thetar  	exp_thetas        rF   %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$rH   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  rV  r;   r:   r   r  r  r
  )r  r  )rA   r   r  r*   r
   )r  r"   r  r  theta_2sigma2_2s         rF   test_innovations_algo_rtolr  ,  s    	4+	BHHa27--/)2a52a52a5=+@"Q%HIE$U5ME6(StDGXE7#FH%rH   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  )rA   r   r   r   	TypeErrorr*   r   r   )r  r"   s     rF   test_innovations_errorsr  5  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:   r8   r  r7   r	  r   )	rA   r   r*   rB   rD   r+   r  appendr
   )
r  r  r"   r  r   r  endogresidexpectedr  s
             rF   'test_innovations_filter_brockwell_davisr  B  s    	BHHa"'k2&'EA.HE1
		AabEB3BKEue,EazH1a[ ?a5A;"#==>?xx!HE8$rH   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  rV  r;   r:   r   rW  r  z
2000-01-01)rD  rE  )rA   r   r  r*   rB   rD   r   r   r   r+   r
   rP   r   r-  )	r  r  r"   r  r   r  endog_pdr  resid_pds	            rF   test_innovations_filter_pandasr  P  s    	4+	BHHa27--/)2a52a52a5=+@"Q%HIEB/HE1IIOOBEyybmmL"&MNHue,E!(E2HE8??+x~~x~~6rH   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:   r8   r  r  r	  )r;   r8   )
rA   r   r*   r   r   r   r+   r   r   r   )r  r"   r  r   s       rF   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 )NrV  g?r;   rW  r2  r  g      r:   r   )ordergư>r   r  r	  r  )rA   r   rB   r4  r   r  r:  r*   r+   rT   pir    filterr   r
   forecasts_errorfilter_resultskalman_gainllf_obs)r  	ar_params	ma_paramsr  r  r"   r  r  ur  modr  r  s                rF   *test_innovations_algo_filter_kalman_filterr  h  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4rH   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  r9   r   r{   )rA   rB   standard_normalr#   r}   r   r   r   )r  rt   r  s      rF   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}   )rA   rB   r  r   r   r   r#   r  rt   s     rF   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)ro   rp   rq   r   cur_dirr   r   r   run_dir	fail_filerA   asarrayr   r   fail_mdlru   rH   rF   r  r    sJ    Gggll7I.GWj1Irzz+"++i01HrH   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)Nrs   r  r   r   r   r4   r  rb   s    rF   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)NrV  )trimr  rb   s    rF   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   r4   rA   rB   r  rb   s    rF   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  rb   s    rF   test_fail_autolag_typez'TestZivotAndrews.test_fail_autolag_type  s1    ]]:& 	9$--8	9 	9 	9r  r|   )AICr@  Aicc                 F    t        | j                  |      }|d   dk(  sJ y )Nr  r9   r;   )r4   r  )rc   r|   r  s      rF   test_autolag_case_sensitivityz.TestZivotAndrews.test_autolag_case_sensitivity  s"    DMM7;1v{{rH   c                 n    t        | j                  ddd       }t        |d   |d   |d   gg dd	       y )
Nr5   ry   r}   r{   r|   r   r;   r8   )g\CMg'>i?r/  r}  r  )r4   r  r
   r  s     rF   test_rgnp_casezTestZivotAndrews.test_rgnp_case  s>    MM!T
 	VSVSV$&=D	
rH   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.csvr5   ry   t-statr  r   r;   r9   r8   )gPkw|gs?r7   r   r}  r  
r   r   r   r  rA   r  r   r   r4   r
   rc   mdlfilemdlr  s       rF   test_gnpdef_casez!TestZivotAndrews.test_gnpdef_case  sk    '',,t||\:jjW-.Cc8LVSVSVSV,&	
rH   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.csvr5   r   r  r  r   r;   r9   r8   )gytmg}"O?r;   A   r}  r  r  r  s       rF   test_stkprc_casez!TestZivotAndrews.test_stkprc_case  sk    '',,t||\:jjW-.CdHMVSVSVSV,&	
rH   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;   r9   r8   )g*Wx8gCVzNz?r  f   r}  r  r  r  s       rF   test_rgnpq_casez TestZivotAndrews.test_rgnpq_case  sk    '',,t||[9jjW-.CsHMVSVSVSV,(	
rH   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.csvry   r  )r{   r|   r   r;   r9   r8   )g]3fg?r  i  r}  r  r  r  s       rF   test_rand10000_casez$TestZivotAndrews.test_rand10000_case  si    '',,t||_=jjW-.CCBVSVSVSV,)	
rH   N)ro   rp   rq   r  r  r  r  r   re  rf  r  r  r  r  r  r  ru   rH   rF   r  r    sU    9319 [[Y(=> ?





rH   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   rW  F)r   r   r   r!  ru  r  )rA   rB   r  r  r  r   r!   nanmeanr  nansumr
   )r  r  r  rY  r  r  r  gamma0s           rF   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;rH   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  )rA   rB   r  r   r   r   r/   )r  r  s     rF   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  ry   aegr   r  F)rs  r   r}   r|   return_resultsgffffff?)rA   rB   rC   r  r  r(   abs)rsrs   rt   r  s       rF   test_coint_auto_tstatr    s    			z	*B
		"$$S)*A
		"$$S)*A
		C 66#a&>D   rH   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  r8   Fr  )r   r   r   r  r  r)   )r  s    rF   !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  r9   F)addconst)r   r   r   r)   NotImplementedErrorrV   s    rF   '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  r9   Tr  )r   r  r  r)   r  s    rF   test_granger_causality_verboser  0  s1    	m9	5 8gq$78 8 8s   4=r  )r9   r7   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   )	rA   rB   r  r/   
isinstancendarrayr0   r1   r2   )r  r  rt   r  r  s        rF   test_pacf_small_sampler  4  s    
		!!$'AQAa$$$Q<DAqa$$$a$$$Aa$$$
Aa$$$rH   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rf   )
rA   rB   r  r   r   r   r/   r0   r1   r2   r  s     rF   test_pacf_1_obsr  B  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  numpyrA   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   rH  r   "statsmodels.tsa.statespace.sarimaxr    statsmodels.tsa.stattoolsr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r   r  ra   rk  r   rl   	DECIMAL_1r   dirnameabspath__file__r   fixturerG   rV   rX   rw   r   r   r   r   r   re  rf  rj  r   r   r   r   r   r   r-  r@  rh  rp  r  r  r  r  r  r  r$  r/  r8  r;  r=  smokeslowrS  rV  rZ  rd  rl  rn  rp  rr  ry  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rB   rC   r  random_sampler  
zeros_liker  df1df2	ones_likedf3df4gc_data_setsr  r   r  r  r  ru   rH   rF   <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5<} 5<p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 	*
% +
%rH   