
    "g^                        d dl mZ d dlZd dlmZ d dlZd dlm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZ d d
lmZ  ej4                         j6                  Z G d de      Z e
j<                  ddd dg dg      d        Z e
j<                  ddg dddddddgddgdg      d        Z  e
j<                  ddddddg      d        Z! e
j<                  dddg      d        Z" e
j<                  dg d      d        Z# e
j<                  dddg      d        Z$ e
j<                  dd dg      d        Z% e
j<                  ddddddg      d        Z& e
j<                  dddg      d         Z' e
j<                  dddg      d!        Z( e
j<                  ddd"g      d#        Z) e
j<                  d$      d%        Z e
j<                  dddg      d&        Z*d'efd(Z+d) Z,d*efd+Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d*efd1Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<e
jz                  j|                  d;        Z?d< Z@e
jz                  j                  d=g d>      e
jz                  j                  d?dd@g      e
jz                  j                  dAd@dg      dB                      ZBdC ZCdD ZDdE ZEdF ZFdG ZGdH ZHdI ZIdJ ZJdK ZKdL ZLe
jz                  j|                  e
jz                  j                  e
jz                  j                  dMg d      e
jz                  j                  dNddg      dO                             ZNd*efdPZOdQ ZPd*efdRZQdS ZRe
jz                  j                  dTddg      e
jz                  j                  dUddg      dV               ZSe
jz                  j                  dWg dX      dY        ZTe
jz                  j                  dWg dX      dZ        ZUe
jz                  j                  d[dej                  j                  d       d ddgej                  j                  ddg      g      d\        ZYd] ZZy)^    )
NamedTupleN)assert_allclose)assert_index_equal)danish_data)Summary)SpecificationWarning)AutoReg)ARDLUECMARDLResultsardl_select_order)DeterministicProcessc                   J    e Zd ZU ej                  ed<   ej                  ed<   y)DatasetyxN)__name__
__module____qualname__pdSeries__annotations__	DataFrame     a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/ardl/tests/test_ardl.pyr   r      s    	yyL	||Or   r   module   )         )scopeparamsc                     | j                   S Nparamrequests    r   lagsr*          ==r   r    )r   r      r   lryiboidec                     | j                   S r%   r&   r(   s    r   orderr2   "   s     ==r   c                     | j                   S r%   r&   r(   s    r   
uecm_orderr4   /   s     ==r   c                     | j                   S r%   r&   r(   s    r   	uecm_lagsr6   :   r+   r   )ncctc                     | j                   S r%   r&   r(   s    r   trendr;   ?   r+   r   TFc                     | j                   S r%   r&   r(   s    r   causalr=   D   r+   r   c                     | j                   S r%   r&   r(   s    r   maxlagr?   I   r+   r   c                     | j                   S r%   r&   r(   s    r   maxorderrA   N   r+   r   c                     | j                   S r%   r&   r(   s    r   seasonalrC   S   r+   r   c                     | j                   S r%   r&   r(   s    r   	use_numpyrE   X   r+   r   
   c                     | j                   S r%   r&   r(   s    r   	hold_backrH   ]   r+   r   )r"   c                  P    t         j                  } t         g d   }t        | |      S )Nr-   )	dane_datalrmr   )r   r   s     r   datarL   b   s"    A'(A1a=r   c                    | j                   y t        j                  j                  }t        j
                  j                  d      }t        j                  |j                  dt        j                  j                  d   df      |ddg      S )Nr   rF   r    z0z1)indexcolumns)r'   rJ   rK   rP   nprandomdefault_rngr   r   
standard_tshape)r)   rP   gens      r   fixedrX   i   so    }}MME
))


"C<<rIMM//2A67t r   resc                 (   | j                   }|j                  j                  \  }}|j                  | j                        j                  |fk(  sJ |j                  | j                        j                  ||fk(  sJ t        |j                  | j                        t              sJ |j                  | j                        j                  ||fk(  sJ t        |j                  t              sJ |j                  t        |j                  t              sJ t        |j                  t              sJ t        |j                  t               sJ t        |j"                  t$              sJ t        |j&                  t               sJ t        |j(                  t               sJ t        |j*                  t,              sJ t        |j.                  t               sJ | j1                          | j3                          | j5                          | j                  t        | j                  t              sJ | j6                  | j(                  | j&                  z
  k(  sJ | j8                  | j:                  k(  sJ t        | j<                  t              sJ y r%   )model_xrV   scorer#   hessian
isinstanceloglikefloatinformation
exog_nameslistar_lagsrC   boolrH   int
ardl_ordertupledf_modelnobsendog_namesstr
k_constantsummarytest_heteroskedasticitydiagnostic_summarydf_residscalesigma2fpe)rY   r[   r7   ks       r   check_resultsrw   v   s   ))E88>>DAq;;szz"((QD000==$**q!f444emmCJJ/777SZZ(..1a&888e&&---== Ju}}d$CCCennd+++eoos+++e&&...ennc***ejj#&&&e''---e&&,,,KKM!;;*S[[$"???<<CHHs||344499

"""cggu%%%r   c                 ^   | j                   }| j                  }|}d }|rt        j                  |      }t        j                  |      }t	        |t
              r,t        |j                               D 	
ci c]  \  }	}
|	|

 }}	}
|t        j                  |      }|rdnd }|||||fS c c}
}	w )Nr!   )r   r   rR   asarrayr_   dict	enumeratevalues)rL   rX   r2   rC   rE   r   r   zperiodivs              r   _convert_to_numpyr      s    AAAFJJqMJJqMeT"&/&?@daQT@E@

5!ADaE6!!	 As   5B)rL   c                 0   t        | ||||      \  }}	}
}}t        |||	||||
||	      }|j                         }t        |       |j	                          d }|
St        j                  |
      d d }t        |
t        j                        r!t        j                  ||
j                        }d }|	St        j                  |	      d d }t        |	t        j                        r!t        j                  ||	j                        }|j                  d||       y )Nr=   rX   rC   r~      )rQ   )exogrX   )r   r
   fitrw   predictrR   arrayr_   r   r   rQ   forecast)rL   r*   r2   r;   r=   rX   rE   rC   r   r   r}   r~   modrY   	fixed_oosexog_ooss                   r   test_model_initr      s     /eUHiAq!UF 		
C '')C#KKMI}HHQK$	a&Y		BIH}88A;s#a&||Haii@HLL()L4r   c           
      F   t        j                  t        d      5  t        | j                  d       d d d        t        j                  t        d      5  t        | j                  g d       d d d        t        j                  t        d      5  t        | j                  d| j
                  dd	
       d d d        t        j                  t        d      5  t        | j                  d| j
                  dd       d d d        t        j                  t        d      5  t        | j                  d| j
                  ddgdddd	       d d d        t        j                  t        d      5  t        | j                  d| j
                  ddgdddd	       d d d        t        j                  t        d      5  t        | j                  d| j
                  g ddg ddd	       d d d        t        j                  t        d      5  t        | j                  d| j
                  g dd	       d 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   hxY w# 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   y xY w)Nlags must be a non-negativematch#All values in lags must be positive)r   r   r    zinteger orders must be at leastr    r   T)r2   r=   Fr=   z)sequence orders must be strictly positiver   r   r-   z)sequence orders must contain non-negativeapplez%sequence orders must contain distinct)r   r   r    r   )r   r   r   r   r   r    )pytestraises
ValueErrorr
   r   r   	TypeErrorrL   s    r   test_ardl_order_exceptionsr      s#   	z)F	G TVVR	?
 ! 	TVVZ ! 
z)J	K 6TVVQa56	z)J	K 2TVVQ512	E
 
 	FFAtvv1vaB4	

 
D
 	
 	FFFFL15	
	
 
A
 	
 	FFFF 9=	
	
 
E
 8 	TVVQ	$78 8I ! !6 62 2
 
	
 	
	
 	
8 8s_   H>I%I%I%"+I20+I?>-J'J>III"%I/2I<?JJJ c           
      h   t        j                  t        d      5  t        | j                  d| j
                  ddgdddd	       d d d        t        j                  t        d
      5  t        | j                  d| j
                  dddgid	       d d d        y # 1 sw Y   VxY w# 1 sw Y   y xY w)Nz,order dictionary contains keys for exogenousr   r    r   r   r!   )r.   r/   otherFr   zexog contains variables thatr.   )r   r   r   r
   r   r   warnsr   r   s    r   test_ardl_order_keys_exceptionsr      s    	H
 	
 	FFFFF1q1	
	
 
$B
 ? 	TVVQA>? ?	
 	
? ?s   +B*)B(B%(B1c           	         t        j                  t              5  t        | j                  d| j
                  dd       d d d        t        j                  t        d      5  t        | j                  j                  dd      }t        | j                  d| j
                  d|d	
       d d d        y # 1 sw Y   uxY w# 1 sw Y   y xY w)Nr    rC   )deterministiczWhen using deterministic, trendr   Tr   constantr2   r9   )r   r;   )
r   r   r   r
   r   r   r   r   r   rP   )rL   r   s     r   "test_ardl_deterministic_exceptionsr      s    	y	! =TVVQ<=	$E
 L -FFLL4q
 	TVVQdKL L= =L Ls   %B3"AB?3B<?Cc                     t        j                  t        d      5  t        | j                  d| j
                  dd       d d d        y # 1 sw Y   y xY w)Nzhold_back must be >=r   r    r   rH   r   r   r   r
   r   r   r   s    r   test_ardl_holdback_exceptionsr   
  s>    	z)?	@ 0TVVQQ/0 0 0s   %A

Ac                 2   t         j                  j                  d      }t        j                  t
        d      5  t        | j                  d| j                  d|       d d d        t         j                  j                  t        j                  j                  d   df      }t         j                   |d<   t        j                  t
        d      5  t        | j                  d| j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r       zfixed must be anr   r    rX   r   )   r   )rR   rS   standard_normalr   r   r   r
   r   r   rJ   rK   rV   inf)rL   rX   s     r   test_ardl_fixed_exceptionsr     s    II%%h/E	z);	< 0TVVQ/0II%%y}}':':1'=q&ABEFF7E%L	z);	< 0TVVQ/0 0	0 00 0s   %D%DD
Dc	                 f   t        | ||||      \  }	}
}}}t        |	||
||||||||      }t        |j                  t              sJ t        |j
                  t        j                        sJ t        |j                  t        j                        sJ t        |j                  t        j                        sJ |j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ t        |j                  t              sJ |j                  t        |j                  t               sJ y y )N)rX   r=   rH   r~   rC   glob)r   r   r_   r[   r
   aicr   r   bichqicr~   r;   rC   dl_lagsrz   re   rd   )rL   r?   rA   r;   r=   rX   rE   rC   rH   r   r   r}   r~   rY   s                 r   test_ardl_select_orderr     s    !2eXx!Aq!Xv 		C cii&&&cggryy)))cggryy)))chh		***::99<<8###ckk4(((;;*S[[$"???"?r   c           	          t        | j                  d | j                  d d d dd      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr-   r7   r;   r   r
   r   r   r   r#   rV   rw   rL   rY   s     r   test_ardl_no_regressorsr   ?  s]    
T$/ 
ce  ::A!####r   c                     t        | j                  d| j                  d d      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr   r7   r   r   r   r   s     r   test_ardl_only_y_lagr   K  sJ    
tvvq$&&$c
2
6
6
8C::A!####r   c           	      l   t        | j                  d | j                  ddddd      j                         }|j                  j
                  d   dk(  sJ t        | j                  d | j                  dddddd	
      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr   r    r   r-   r7   r   r   	   T)r;   r=      r   r   s     r   test_ardl_only_xr   Q  s    
dffa!<C	ce  ::A!###
!A& 
ce  ::A!####r   c                     t        | j                  d | j                  d d      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr8   r   r   r   r   r   s     r   test_ardl_only_trendr   b  sJ    
tvvtTVVT
5
9
9
;C::A!####r   c                     t        | j                  d | j                  d dd      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr7   Tr;   rC   r   r!   r   r   s     r   test_ardl_only_seasonalr   h  sL    
tvvtTVVTt
D
H
H
JC::A!####r   c                     t        | j                  j                  dd      }t        | j                  d | j                  d d|      j                         }|j                  j                  d   dk(  sJ t        |       y )NTr   r   r7   )r;   r   r   r!   )	r   r   rP   r
   r   r   r#   rV   rw   )rL   r   rY   s      r   test_ardl_only_deterministicr   n  sh    (ANM
dffd#]	ce  ::A!####r   c                     t        | j                  d | j                  d dd      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr9   Tr   r   r,   r   r   s     r   test_ardl_no_endog_exogr   w  sL    
tvvtTVVT
E
I
I
KC::A!####r   c                     t        | j                  ddg| j                  d dd      j                         }|j                  j
                  d   dk(  sJ t        |       y )Nr   r!   r9   Tr   r      r   r   s     r   test_ardl_no_exogr   }  sP    
tvv1vtvvt4$
G
K
K
MC::A!####r   c           
         t        | j                  d| j                  ddd      }g d}|j                  |k(  sJ t        t	        j
                  | j                        dt	        j
                  | j                        ddd      }g d}|j                  |k(  sJ t        t	        j
                  | j                        dgt	        j
                  | j                        d dd	dd
      }g d}|j                  |k(  sJ y )Nr    Tr8   )r=   r;   )	constlrm.L1zlrm.L2zlry.L1zlry.L2zibo.L1zibo.L2zide.L1zide.L2Fr9   )r   r;   zy.L1y.L2zx0.L0zx0.L1zx0.L2zx1.L0zx1.L1zx1.L2zx2.L0zx2.L1zx2.L2r7   r!   )r=   r;   rC   r~   )zs(1,4)zs(2,4)zs(3,4)zs(4,4)r   )r
   r   r   rc   rR   ry   )rL   r   expecteds      r   test_ardl_parameter_namesr     s    
tvvq$&&!D
<C
H >>X%%%



466Arzz$&&11U$CH >>X%%%



466	



466	C @H>>X%%%r   c           	          dd l }t        | j                  d| j                  ddddgddd      j	                         }|j                         }t        ||j                  j                        sJ y )	Nr   r    r   r   r-   r9   Tr   )	matplotlib.figurer
   r   r   r   plot_diagnosticsr_   figureFigure)rL   close_figures
matplotlibrY   figs        r   test_diagnostics_plotr     sl    
	!QF+ 
ce  


 Cc:,,33444r   c                    t        | j                  d||      }t        | j                  d||      }|j                         }|j                         }t	        |j
                  |j
                         |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  d      }|j                  d      }t	        ||       t        |j                  |j                         |j                         }|j                         }t	        ||       t        |j                  |j                         y )Nr   r   r   )r	   r   r
   r   r   r#   re   r;   rC   r   r   rP   r   )	rL   r;   rC   arardlar_resardl_resar_fcast
ardl_fcasts	            r   test_against_autoregr     s
   	%(	;B:DVVXFxxzHFMM8??3>>X-----88tzz!!!;;$--'''r"H""2&JHj)x~~z'7'78~~H!!#JHj)x~~z'7'78r   start)Nr   r    r!   endr   dynamicc                 P   t        | j                  d||      }t        | j                  d||      }|j                         }|j                         }	|j	                  |||      }
|	j	                  |||      }t        |
j                  |j                         t        |
|       y )Nr   r   )r   r   r   )r	   r   r
   r   r   r   rP   r   )rL   r;   rC   r   r   r   r   r   r   r   r   r   s               r   &test_against_autoreg_predict_start_endr     s     
%(	;B:DVVXFxxzH~~EsG~DH!!3!HJx~~z'7'78Hj)r   c                 X   t        j                  t        d      5  t        | j                  d       d d d        t        j                  t        d      5  t        | j                  g d       d d d        t        j                  t        d      5  t        | j                  g d       d d d        t        j                  t        d      5  t        | j                  d| j
                  d	d
       d d d        y # 1 sw Y   xY w# 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   r   )r   r   r    )r   r    r    r   zhold_back must be r   r!   r   r   r   s    r   test_invalid_initr     s    	z)F	G TVVR	?
 ! 	TVVZ ! 
?
 # 	TVV\"# 
z)=	> 0TVVQQ/0 0 ! !# #0 0s/   C<DD%D <DDD D)c                 `   t        | j                  d| j                  dd      j                         }|j	                  d      }|j
                  d   dk(  sJ t        | j                  dg| j                  dg      j                         }|j	                  d      }|j
                  d   dk(  sJ y )Nr    r   Tr   r   r   )r
   r   r   r   r   rV   )rL   rY   vals      r   test_prediction_oos_no_new_datar     s    
tvvq$&&!D
1
5
5
7C
,,q/C99Q<1
tvvsDFFQC
(
,
,
.C
,,q/C99Q<1r   c                    t        | d dd|      \  }}}}}t        |d|dd      j                         }t        j                  t
        d      5  |j                  d       d d d        t        |t        j                        rt        j                  | j                        d d }	t        j                  t        d	      5  |j                  d|	
       d d d        t        j                  t
        d      5  |j                  d| j                  j                  d dd df   
       d d d        y y # 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   Fr    r   zexog_oos must ber   r   r   z!exog_oos must be a DataFrame whenr   zmust have the same columns)r   r
   r   r   r   r   r   r_   r   r   rR   ry   r   r   iloc)
rL   rX   rE   r   r   r}   r2   _rY   r   s
             r   test_prediction_exceptionsr     s"   )$a	JAq!UA
q!Q%
(
,
,
.C	z);	< Q!R\\"::dff%cr*]]@
 	, LL(L+	, ]]:-IJ 	8LL$&&++crc2A2g"6L7	8 	8 # 	, 	,	8 	8s$   D2 D>71E
2D;>E
Ec                    t        | j                  d| j                  ddg      j                         }|j	                         }|j	                  | j                        }t        ||       t        |j                  |j                         t        | j                  d| j                  ddg|      j                         }|j	                         }|j	                  |      }t        ||       t        |j                  |j                         y )Nr!   r   r   r   r   )r
   r   r   r   r   r   r   rP   )rL   rX   rY   directalts        r   test_prediction_replacementsr     s    
tvvq$&&1a&
)
-
-
/C[[]F
++466+
"CFC v||SYY/
tvvq$&&1a&
6
:
:
<C[[]F
++E+
"CFC v||SYY/r   c                    t        j                  | j                        }t        | j                  d|ddg      j                         }t        j                  t        d      5  |j                  t        j                  | j                        d d d df          d d d        t        j                  t        d      5  |j                  t        j                  | j                        d d        d d d        t        | j                  d| j                  ddg      j                         }t        j                  t        d	      5  |j                  | j                  j                  d d d df          d d d        t        j                  t        d      5  |j                  | j                  j                  d d        d d d        y # 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)
Nr!   r   r   zexog must have the same numberr   r   z&exog must have the same number of rowszexog must have the same columnsrR   ry   r   r
   r   r   r   r   r   r   r   rL   r   rY   s      r   test_prediction_wrong_shaper     s   


466A
tvvq!aV
$
(
(
*C	z)I	J 4DFF+ArrE234	B
 2 	DFF+CR012 tvvq$&&1a&
)
-
-
/C	z)J	K -QU+,-	B
 + 	Sb)*+ +4 42 2
- -+ +s0   #9G?3G0G&*G2GG#&G/2G;c                    t        j                  | j                        }t        | j                  d|      j                         }t        j                  t        d      5  |j                  t        j                  | j                        d d d df          d d d        t        j                  t        d      5  |j                  t        j                  | j                        d d        d d d        t        | j                  d| j                        j                         }t        j                  t        d      5  |j                  | j                  j                  d d d df          d d d        t        j                  t        d      5  |j                  | j                  j                  d d        d d d        y # 1 sw Y   1xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr!   r   zfixed must have the same numberr   r   z'fixed must have the same number of rowsr   r   r   s      r   !test_prediction_wrong_shape_fixedr   0  sy   


466A
tvvq
"
&
&
(C	z)J	K 5"**TVV,QU345	C
 3 	"**TVV,Sb123 tvvq
'
+
+
-C	z)J	K .$&&++a!e,-.	C
 , 	$&&++cr*+, ,5 53 3
. ., ,s0   !9G	=3G0G"*G.	GG"G+.G7c                 6   t        j                  | j                        }t        | j                  d|      j                         }t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d|d d        d d d        t        | j                  d| j                  dd	
      j                         }t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d| j                  j                  dd         d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr!   r   zfixed_oos must be providedr   r   zfixed_oos must have at least   r   Tr   zexog_oos must be providedzexog_oos must have at leastir   )rR   ry   r   r
   r   r   r   r   r   r   r   r   s      r   test_insuficient_oosr  B  s4   


466A
tvvq
"
&
&
(C	z)E	F R	z)G	H 'Rq"v&'
tvvq$&&!D
1
5
5
7C	z)D	E R	z)F	G 1Rdffkk#$/01 1 ' ' 1 1s0   !E+E7F7+F+E47F FFc                     t        j                  t        d      5  t        | j                  d| j
                  d       d d d        y # 1 sw Y   y xY w)NzThe number of regressors \(36\)r   r   r!   r   r   s    r   test_insuficient_datar  P  s<    	z)K	L $TVVR#$ $ $s   #AAc                     t        | j                  d      j                         }|j                  d      }|j                  d      }t	        ||       t        |j                  |j                         y )Nr   r   z
1990-07-01)r
   r   r   r   r   r   rP   )rL   rY   numericdates       r   test_forecast_dater  U  sR    
tvvq/


Cll2G<<%DGT"w}}djj1r   c                 \   t        | j                  d      j                         }t        | j                  d      j                         }|j	                  d      }|j	                  d      }t        |j                  |j                         t        |j                  |j                         y )Nr   z
2020-01-01r   )r
   r   r   r	   get_predictionr   predicted_meanvar_pred_mean)rL   rY   r   predar_preds        r   test_get_predictionr  ]  s    
tvvq/


CTVVQ##%F,/D###5GD'')?)?@D&&(=(=>r   r;   rC   c                 b   ddl m} t        | j                  d||      }|j	                         }|j                         }t        ||      sJ |j                  d      }t        ||      sJ |j                  dd d	      }t        ||      sJ t        |j                         t              sJ y )
Nr   )r   r   r   d   r
  K   F)r   alpha	in_sample)
r   r   r
   r   r   r   r_   plot_predictro   r   )rL   rC   r;   r   r   r   rY   r   s           r   test_ardl_smoke_plotsr  f  s    
 )
		C '')C



 Cc6"""


s

#Cc6"""


r

?Cc6"""ckkmW---r   c                 T   t        | ||||      \  }}	}
}}t        |||	||||
||	      }|j                         }t        |       |j	                          t        |||	||||
||	      }t        j                  |      }|j                         }t        |       |j	                          y )Nr   )r   r   r   rw   r   r
   	from_ardl)rL   r6   r4   r;   r=   rX   rE   rC   r   r   r}   r~   r   rY   r   uecmuecm_ress                    r   test_uecm_model_initr  }  s     #4eZ9#Aq!Z 		
C '')C#KKM		
D >>$DxxzH(r   c                     t        j                  t              5  t        j                  t        | j                  d| j                  ddd d            }d d d        j                  dk(  sJ y # 1 sw Y   xY w)Nr    r.   r0   r/   )r    r    r    )	r   r   r   r   r  r
   r   r   rh   )rL   r   s     r   test_from_ardl_noner    sc    	*	+ 
nnDFFAa$EF

 >>Y&&&	
 
s   :A..A7c           	      h   d}t        j                  | j                  | j                  gd      }|:|ddj	                  |j
                        z   z  }t        j                  ||gd      }t        j                  |||||||      }	|	j                         }
t        |
       |
j                          y )Nzlrm ~ lry + ibo + ider   )axisz | z + )r=   rC   )r   concatr   r   joinrQ   r   from_formular   rw   r   )rL   r6   r4   r;   r=   rX   rC   fmladfr   rY   s              r   test_uecm_model_formular'    s     #D	DFFDFF#!	,B

5==111YYE{+



C '')C#KKMr   c           
      	   t        j                  t        d      5  t        | j                  d| j
                  g d       d d d        t        j                  t        d      5  t        | j                  ddg| j
                  d       d d d        t        j                  t        d      5  t        | j                  d| j
                  dddgi       d d d        t        j                  t        d	      5  t        | j                  d| j
                  d        d d d        t        j                  t        d
      5  t        | j                  d| j
                  dddd       d d d        t        j                  t        d      5  t        | j                  d| j
                  dd       d d d        t        j                  t        d      5  t        | j                  d| j
                  d       d d d        t        | j                  d| j
                  ddgddd      }t        j                  t        d      5  t        j                  |       d d d        t        | j                  d| j
                  ddgddd      }t        j                  t        d      5  t        j                  |       d d d        t        | j                  ddg| j
                  d      }t        j                  t        d      5  t        j                  |       d d d        t        | j                  d| j
                  d      j                         }t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   kxY w# 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   }xY w# 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzorder must be Noner   r    r   zlags must be anr   zorder values must be positiver/   zModel must containzAll included exogr   r  zhold_back must ber   r,   r!   r   zThe number ofr   zUECM can only be created fromr  r
  T)r      )r   r   r   r   r   r   r   r
   r  r   NotImplementedErrorr   )rL   r   rY   s      r   test_uecm_errorsr+    sX   	y(<	= +TVVQ	*+	y(9	: (TVVaVTVVQ'(	y(G	H 1TVVQA01	z)=	> &TVVQ%&	z)<	= @TVVQ!A >?@	z)<	= 0TVVQQ/0	z	9 $TVVR#$466Aq6!A#FGD	z)H	I t466Aq6!A#FGD	z)H	I tA*D	z)H	I t
tvvq$&&!
$
(
(
*C	*	+ 	*	+ "D!"	*	+  B   9+ +( (1 1& &@ @0 0$ $    " "   s   %O%$%O2,'O?6#P<'P%P&#P3<Q Q:Q!Q'Q3	Q?%O/2O<?P	PP#&P03P= Q
QQ$'Q03Q<?RrE   use_tc                 j   t         j                  }t         g d   }| r*t        j                  |      }t        j                  |      }t	        |d|d      }|j                  |      }| r&|j                  d d j                         }||d   z  }n/|j                  j                  d d j                         }||d   z  }t        |j                  |       |j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ dt        |j!                               v sJ |j#                         j                  d	k(  sJ |j%                         j                  d
k(  sJ |j&                  j                  t         j                  j                  k(  sJ y )Nr-   r   )r,  r,   r   r   )r,   zCointegrating Vector)r,   r    )r,   r,   )rJ   rK   rR   ry   r   r   r#   copyr   r   	ci_paramsci_bserV   
ci_tvalues
ci_pvaluesrm   
ci_summaryci_conf_intci_cov_params	ci_resids)rE   r,  r   r   r   rY   r/  s          r   test_uecm_ci_reprr7    st    	A'(AJJqMJJqM
q!Q
C
'''
CJJrN'')	Yq\!	JJOOBQ',,.	Yx((	CMM9-::t###>>4'''>>4'''!S)9%::::??""f,,,$$...==)--"5"5555r   caser   r    r   r!   r,   c           	          t        t        j                  dt        g d   dddd      }|j                         }ddddd	d
}|j	                  |       }t        |j                  ||           dt        |      v sJ y )Nr   r-   r   r    gy$.?gw@gA`@g;@g<,$@r9  BoundsTestResult)r   rJ   rK   r   bounds_testr   statrm   )r8  r   rY   r   bounds_results        r   test_bounds_testr?  
  s    
	'(!A&	C '')CH OOD)MM&&7]!3333r   c           	      z   t        t        j                  dt        g d   dddd      }|j                         }|j	                  | dg dd      }|j
                  d	k\  j                         sJ |j
                  d
k  j                         sJ |j                  d	kD  j                         j                         sJ y )Nr   r-   r   r    F)r   r    r   r!   '  r8  
asymptoticseednsim              ?r   rJ   rK   r   r<  p_valuesall	crit_vals)r8  r   rY   r>  s       r   test_bounds_test_simulationrL    s    
	'(!A&	C '')COOe,V $ M ""c)..000""c)..000##c)..044666r   rD  c           	      v   t        t        j                  dt        g d   dddd      }|j                         }|j	                  dd| d      }|j
                  dk\  j                         sJ |j
                  d	k  j                         sJ |j                  dkD  j                         j                         sJ y )
Nr   r-   r   r    FrA  rB  rF  rG  rH  )rD  r   rY   r>  s       r   test_bounds_test_seedrN  0  s    
 	'(!A&	C '')COO5t& $ M ""c)..000""c)..000##c)..044666r   c            	      v   t        t        j                  dt        g d   dddd      } | j                         }|j	                  d      }dt        |      v sJ |j	                  dddg d	      }t        |j                  |j                         |j                  |j                  kD  j                         sJ y )
Nr   r-   r   r    r;  FrA  )r   r    r   )rC  rE  rD  )
r   rJ   rK   r   r<  rm   r   r=  rI  rJ  )r   rY   r>  bounds_result_sims       r   test_bounds_test_simulate_orderrQ  D  s    
	'(!A&	C '')COOA&M]!3333	e&y (  M&&(9(>(>?&&)?)??DDFFFr   )[typingr   numpyrR   numpy.testingr   pandasr   pandas.testingr   r   statsmodels.datasetsr   statsmodels.iolib.summaryr   statsmodels.tools.sm_exceptionsr   statsmodels.tsa.ar_modelr	   statsmodels.tsa.ardl.modelr
   r   r   r   statsmodels.tsa.deterministicr   load_pandasrL   rJ   r   fixturer*   r2   r4   r6   r;   r=   r?   rA   rC   rE   rH   rX   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markr   r   r   parametrizer   r   r   r   r   r   r   r  r  r  r  smoker  r  r  r'  r+  r7  r?  rL  rS   RandomStaterT   rN  rQ  r   r   r   <module>rc     s     )  -  , - @ ,  ?#K##%**	j 
 haI'>? @ 
	!A&1#q!f-	 
	!A& hay1 2 h'78 9 he}5 6 h1v. / h1Qq+I'JK L he}5 6 he}5 6 hbz2 3 h   hay1	 2	&{ &2"  5
 5F(8V?"	L0
0#@
#@L	",&^ 5 5 9* /2r
+RJ/* 0 , 3*080+$,$1$
2? "23dE]3. 4 4  .&+
+\'
8 B tUm44-06 1 560 14 24( 17 27  
	299  #QA		0E0Eq!f0MN7	7 Gr   