
    VfdZ                        d dl mZmZ d dlmZ d dlmZmZ d dlZ	d dl
Zd dlZd dlmZmZmZmZmZmZmZmZ  ej        dddg	          d
             Z ej        dg d	          d             Z ej        dg d	          d             Zej        j        d             Zej        j        d             Zej        j        d             Zej        j        d             Zej        j        d             Z ej!        Z"d e"#                                D             Z$ej        %                    de$          d             Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d  Z0d! Z1ej        2                    ed"#          d$             Z3d% Z4d& Z5d' Z6d( Z7d) Z8d* Z9ej        %                    d+ddg          ej        %                    d,d d-g          ej        %                    d.ddg          ej        %                    d/d d-g          ej        %                    d0dd1g          ej        %                    d2ddg          d3                                                                         Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAej        %                    d; ejB        d d<           ejC         e	jD        d<                     ejE        d=d>d<?           ejF        d=d>d<?          g          d@             ZG G dA dBe          ZHdC ZIdS )D    )PD_LT_1_0_0is_int_index)pytest_warns)HashableTupleN)CalendarFourierCalendarSeasonalityCalendarTimeTrendDeterministicProcessDeterministicTermFourierSeasonality	TimeTrendmoduleTF)scopeparamsc                 l    t          j        ddd          }| j        r|                    d          S |S )N
2000-01-01iA  Bperiodsfreq)pd
date_rangeparam	to_periodrequestidxs     Hlib/python3.11/site-packages/statsmodels/tsa/tests/test_deterministic.py
time_indexr!      s9    
-c
<
<
<C} "}}S!!!J    )rangeperioddatetimefibint64c                    | j         }|dv r3t          j        ddd          }|dk    r|                    d          }n|dk    rt          j        dd	          }n|d
k    r't          j        t          j        d	                    }nc|dk    rOddg}t          d          D ]&}|	                    |d         |d         z              't          j        |          }nt                      |S )N)r$   r%   r      Mr   r$   r#   r   {   r'   r&      q   )r   r   r   r   
RangeIndexIndexnparanger#   appendNotImplementedError)r   r   r   r&   _s        r    indexr7      s     ME&&&mL#C@@@H--$$C	'		mAs##	'		hry~~&&	%!fs 	* 	*AJJs2wR())))hsmm!###Jr"   )Nr$   Flistc                     t          j        ddd          }| j        d S | j        dk    r|                    d          S | j        dk    rt	          |          S |S )Nr   i  r   r   r$   r8   )r   r   r   r   r8   r   s     r    forecast_indexr:   5   sb    
-c
<
<
<C}t	(	"	"}}S!!!	&	 	 CyyJr"   c                    t          dd          }|                    |            |dnt          |          }d }t          |           r*t	          j        t	          j        |           dk              s0t          |           t          j	        u rt          |           dk    r	|t          }t          |          5  |                    || |           d d d            n# 1 swxY w Y   t          |           t          |           t!          |j        t$                    sJ t!          |j        t(                    sJ t          j        d          |k    sJ t          j        d          |k    sJ t          j        d          |k    sJ t          j        d	          |k    sJ t-          d
          |k    sJ t          dd          }|                    |            t          |           d S )NT   S   r,               cttcttn   Fr   )r   	in_samplelenr   r2   anydifftyper   r1   maxUserWarningr   out_of_samplestrhash
isinstanceorderint	_constantboolfrom_stringr   )r7   r:   ttstepswarntt0s         r    test_time_trend_smokerX   A   s   	4		BLL (BBc..A.AEDU	F275>>Q&''	 KK28##E

W$$& 	d		 7 7
~6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7GGGHHHbh$$$$$blD))))) ''2---- &&",,,, %%++++ %%++++r??b    
E1

CMM%HHHHHs   :CC"%C"c                 l   t          d          }|                    |            |dnt          |          }d }t          |           r*t	          j        t	          j        |           dk              s0t          |           t          j	        u rt          |           dk    r	|t          }t          |          5  |                    || |           d d d            n# 1 swxY w Y   t          |j        t                     sJ t#          |           t%          |           t          | t          j        t          j        f          rj| j        ret          j        |           }|                    |            |                    || |           t          j        t/          |                      d S d S d S )NrC   r=   r,   r>   )r   rD   rE   r   r2   rF   rG   rH   r   r1   rI   rJ   r   rK   rN   r$   rP   rL   rM   DatetimeIndexPeriodIndexr   
from_indexr8   )r7   r:   srU   rV   s        r    test_seasonality_smoker^   a   s   BAKK (BBc..A.AEDU	F275>>Q&''	 KK28##E

W$$& 	d		 6 6	un5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6ah$$$$$FFFGGG%"*BN;<< , ,"5))	E	un555tE{{+++++	, , , ,s   9CC!$C!c                 
   t          dd          }|                    |            |dnt          |          }d }t          |           r*t	          j        t	          j        |           dk              s0t          |           t          j	        u rt          |           dk    r	|t          }t          |          5  |                    || |           d d d            n# 1 swxY w Y   t          |j        t                     sJ t          |j        t$                    sJ t'          |           t)          |           t+          j        t.          d          5  t          dd           d d d            d S # 1 swxY w Y   d S )	NrC   r<   r=   r,   r>   z2 \* order must be <= periodmatch   )r   rD   rE   r   r2   rF   rG   rH   r   r1   rI   rJ   r   rK   rN   r$   floatrO   rP   rL   rM   pytestraises
ValueError)r7   r:   frU   rV   s        r    test_fourier_smokerh   }   s   AAKK (BBc..A.AEDU	F275>>Q&''	 KK28##E

W$$& 	d		 6 6	un5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6ah&&&&&ags#####FFFGGG	z)H	I	I	I  A                 s$   :CC"%C"E88E<?E<c                    t          dd          }|                    |            |dnt          |          }|                    || |           t	          |           t          |           t          |j        t                    sJ t          |j	        t                    sJ t          |j        t                    sJ |j        J d S )NAr<   rO   r=   )r
   rD   rE   rK   rL   rM   rN   rO   rP   constantrR   r   base_period)r!   r:   r@   rU   s       r    test_calendar_time_trend_smokern      s    	3a	(	(	(BLL (BBc..A.AEUJ777GGGHHHbh$$$$$bk4(((((bgs#####>!!!!!r"   c                 n   t          dd          }|                    |            |dnt          |          }|                    || |           t	          |j        t                    sJ t	          |j        t                    sJ t          |           t          |           t          |           d S )Nrj   r<   r=   )r   rD   rE   rK   rN   rO   rP   r   rL   reprrM   )r!   r:   cfrU   s       r    test_calendar_fourier_smokerr      s    	a	 	 BLL (BBc..A.AEUJ777bh$$$$$bgs#####GGGHHHHHHHHr"   c                 J    g | ] \  }}|                                 D ]}||f!S  )keys).0kvk2s       r    
<listcomp>rz      s5    CCCA!&&((CCBaWCCCCr"   freq_periodc                    |\  }}t          ||          }|                    |            |dnt          |          }|                    || |           t	          |j        t                    sJ t	          |j        t                    sJ t          |           t          |           t          |           t          ||          }||k    sJ d S )Nr=   )
r	   rD   rE   rK   rN   r$   rL   r   rp   rM   )r!   r:   r{   r   r$   csrU   cs2s           r    test_calendar_seasonalityr      s    LD&	VT	*	*BLL (BBc..A.AEUJ777bi%%%%%bgs#####GGGHHHHHH
fd
+
+C999999r"   c                      t          j        dd          } t          dd          }t          j        t
          d          5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr   
   rj   r<   rk    CalendarTimeTrend terms can onlyr`   )r   r0   r
   rd   re   	TypeErrorrD   )r7   r@   s     r    test_forbidden_indexr      s    M!R  E	3a	(	(	(B	y(J	K	K	K  
U                 s   A%%A),A)c                     t          dddd          }t          ddd          }||k    sJ t          |           t          |           |j        J |j        J d S )Nr*   T   z1960-1-1rO   rm   rk   )r
   rL   rm   )r!   r@   ct2s      r    test_calendar_time_trend_baser      sq    	3A:	F	F	FB
CQ
/
/
/C9999GGGHHH>%%%?"""""r"   c                 h   t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   t          dd          }t          j        t          d          5  |                    t          j        dd	d
                     d d d            d S # 1 swxY w Y   d S )NzThe combination of freq=r`   Hrj   r   Wzfreq is B but index contains2000-1-1r   Dr   )rd   re   rf   r	   rD   r   r   )r!   r}   s     r    test_invalid_freq_periodr      s=   	z)C	D	D	D & &C%%%& & & & & & & & & & & & & & &	S#	&	&B	z)G	H	H	H F F
R]:rDDDEEEF F F F F F F F F F F F F F F F F Fs   9= =/+B''B+.B+c                  f   t          ddd          } t          j        dd          }t          j        t
          d          5  |                     |t          j                   d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     |t          j        f           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     |t          j        t          j        f           d d d            n# 1 swxY w Y   t          j	        g d	          }t          j        t
          d          5  t          j        t          j        t          j        f}|                     ||           d d d            d S # 1 swxY w Y   d S )
Nrj   Tr   rk   r      r   r`   r   r,   r,   r<   r            )
r
   r   r0   rd   re   r   _check_index_typerZ   r[   r1   )r@   r   typess      r    test_check_index_typer      s   	3A	.	.	.B
-2

C	y(J	K	K	K 4 4
S""23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	y(J	K	K	K 7 7
S2#3"56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	y(J	K	K	K F F
S2#3R^"DEEEF F F F F F F F F F F F F F F
(,,,
-
-C	y(J	K	K	K ) )!2>2=A
S%((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )sH   !A00A47A4"CCC*-D##D'*D':F&&F*-F*c                      t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )Nz freq is not understood by pandasr`   unknownTr   rk   )rd   re   rf   r
   rt   r"   r    test_unknown_freqr      s    	z)K	L	L	L 4 4)T33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   <A A c                     t          d          }t          j        t          d          5  |                    d| t          j        d                     d d d            d S # 1 swxY w Y   d S )N   rk   z!The number of values in forecast_r`   r      )r   rd   re   rf   rK   r   r0   )r7   rT   s     r    test_invalid_formcast_indexr      s    				B	z)L	M	M	M 7 7
UBM"$5$56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   *A##A'*A'c                     t          j        g d          } t          j        t                    5  t          j        |            d d d            n# 1 swxY w Y   t          j        dd          g d         } t          j        t                    5  t          j        |            d d d            d S # 1 swxY w Y   d S )N)r   r,   r,   r<   r   r   r   rC   r   r   )r   )r   r,   r<   r   r   r   )	r   r1   rd   re   r   r   r\   r   rf   )r7   s    r    test_seasonal_from_index_errr      s3   H...//E	y	!	! & &u%%%& & & & & & & & & & & & & & &M*b1112D2D2DEE	z	"	" & &u%%%& & & & & & & & & & & & & & & & & &s#   AAAB55B9<B9c                    t          d          }|                    |           }|j        | j        d         dfk    sJ t          j        |dk              sJ t
          j                            |j        |            d }t          |           r*t          j
        t          j        |           dk              s.t          |           t
          j        u rt          |           dk    rt          }t!          |          5  |                    d|           }d d d            n# 1 swxY w Y   t          j        |dk              sJ t          d          }|                    |           }|j        | j        d         dfk    sJ t          dd	          }|                    |           }|j        | j        d         dfk    sJ t%          |j                  d
dgk    sJ t          dd	          }|                    |           }t          j        ||gd          }t
          j                            ||           t          dd	          }|                    | d d                   }	t!          |          5  |                    d| d d                   }
d d d            n# 1 swxY w Y   |                    d| d d         | dd                    }t          j        |	|
gd          }t-          | t
          j        t
          j        f          r t
          j                            ||           t          j        |	|gd          }t
          j                            ||d           d S )NTrl   r   r,   r>      Fr<   rl   rO   trendtrend_squared)axisi2   )rU   r7   r:   )check_index_type)r   rD   shaper2   allr   testingassert_index_equalr7   r   rF   rG   rH   r1   rI   rJ   r   rK   r8   columnsconcatassert_frame_equalrN   rZ   r0   )r7   rT   constrV   const_fcastemptyt2finalexpectedshort	remainderdirectcombineds                r    test_time_trendr     s   	D	!	!	!BLLE;5;q>1-----6%1*J!!%+u555DU rwu~~': ; ; UrxCJJ$8$8	d		 2 2&&r5112 2 2 2 2 2 2 2 2 2 2 2 2 2 26+"#####	E	"	"	"BLLE;5;q>1-----	E	+	+	+B	e		B8A*****
99999	D	*	*	*BLLEy%1---HJ!!%222	D	*	*	*BLLtt%%E	d		 6 6$$Rtt55	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6dsdE#$$K   F y%+!444H%"*BM:;; 7

%%h666y%q111HJ!!(EE!JJJJJs$   >D!!D%(D%<J''J+.J+c                 b   t          d          }|                    |           }|j        sJ |j        | j        d         dfk    sJ t          j                            |j        |            t          j	        |
                    d          dk              sJ t          |j                  d t          dd          D             k    sJ t          j        | j        d         df          }t          d          D ]}d||d d|f<   t          j                            |t          j        |                     d }t#          |           r*t          j        t          j        |           dk              s.t)          |           t          j        u rt-          |           dk    rt.          }t1          |          5  |                    d| 	          }d d d            n# 1 swxY w Y   |j        dt7          |           dz  f         dk    sJ t          j	        |
                    d          dk              sJ t          d
d          }|                    |           }|j        d         dk    sJ |j        d         
                                dk    sJ |j        dk    sJ t;          j        t>          d          5  t          dd           d d d            n# 1 swxY w Y   t;          j        t>          d          5  t          d           d d d            d S # 1 swxY w Y   d S )NrC   r$   r   r,         ?c                     g | ]}d | d	S )zs(,12)rt   )rv   is     r    rz   z$test_seasonality.<locals>.<listcomp>4  s     !E!E!E1,q,,,!E!E!Er"   r   r>   rU   r7   rb   r   )r$   initial_period)r   r<   zinitial_period must be inr`   zperiod must be >= 2) r   rD   is_dummyr   r   r   r   r7   r2   r   sumr8   r   r#   zerosassert_equalasarrayr   rF   rG   rH   r1   rI   rJ   r   rK   ilocrE   r   rd   re   rf   )r7   r]   exogr   r   rV   fcasts          r    test_seasonalityr   -  s   2A;;uD::%+a."-----J!!$*e4446$((1++$%%%%%!E!Ea!E!E!EEEEExQ,--H2YY ! ! BJHbj&6&6777DU rwu~~': ; ; UrxCJJ$8$8	d		 7 7b667 7 7 7 7 7 7 7 7 7 7 7 7 7 7:aUb()S00006%))A,,!#$$$$$1Q///A;;uD9T?c!!!!9Q<$$$$q    	z)D	E	E	E 2 22b11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z)>	?	?	?  1                 s6   ;GG#&G#K  K$'K$L$$L(+L(c                     t          j        |           }|j        dk    sJ |                    d|           }t	          j        | d          }t          j                            |j	        |           d S )Nr   rC   r   )
r   r\   r$   rK   r   _extend_indexr   r   r   r7   )r!   rT   r   new_idxs       r    test_seasonality_time_indexr   O  sk    		
	+	+B9>>>>2Z88E-j"==GJ!!%+w77777r"   c                    t          dd          }|                    |           }|j        dk    sJ |j        | j        d         d|j        z  fk    sJ t	          j        | j        d                   dz  }t          |          D ]p\  }}|dz  dz   }|dz  rt          j        nt          j        } |dt          j	        z  |z  |z            }t          j
                            ||         |d           qg }	t          d|j        z            D ],}|dz  rd	nd
}|	                    | d|dz  dz    d           -t          |j                  |	k    sJ d S )NrC   r   )r$   rO   r   r<   r,   g:0yE>)atolcossin(r   )r   rD   rO   r   r2   r3   	enumerater   r   pir   assert_allcloser#   r4   r8   r   )
r7   rg   termslocr   coljfnr   colss
             r    test_fourierr   X  sw   r###AKKE7a<<<<;5;q>1qw;77777
)EKN
#
#b
(CE"" D D3FQJA*RVVBF2a"%i!mc)**

""5:xd"CCCCD1qw; 0 01u(UU5r..Q!VqL...////$&&&&&&r"   zbug in old pandas)reasonc                      t          j        d          } t          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )N)d   r<   zindex must be a pandasr`   )r2   r   rd   re   r   r   _index_like)r   s    r    test_index_liker   j  s    
(8

C	y(@	A	A	A + +%c***+ + + + + + + + + + + + + + + + + +s   AAAc                     t          j        t           j                            d                    }t          j        |          }d|z  |d         z  }d|z                      t           j                  }t          j        d          fd|D             }t          j	        |          }t          dd          }|j        dk    sJ |                    |          }g }t          d|j        z            D ],}|dz  rd	nd
}|                    | d|dz  dz    d           -t          |j                  |k    sJ |dz  }dt           j        z  |t          j        |          z
  z  }	g }
t          d          D ]H}|dz  dz   }|dz  rt           j        nt           j        }|
                     |||	z                       It          j        |
          }
t           j                            |
|j                   d S )N  r   r/   Q r   c                 B    g | ]}t          j        |d           z   S )r]   )unitr   	Timedeltarv   valbases     r    rz   z)test_calendar_fourier.<locals>.<listcomp>w  s-    BBBCTBL3////BBBr"   r   r<   r   r   r   r,   z,freq=D)r   )r2   absrandomstandard_normalcumsumastyper'   r   	Timestampr1   r   rO   rD   r#   r4   r8   r   r   floorr   r   column_stackr   r   values)reset_randomstateincoffsetr7   rq   r   r   r   r   r   r   scaler   s               @r    test_calendar_fourierr   q  s   
&**400
1
1C
)C..C
s(SW
C#o%%bh//F<
##DBBBB6BBBEHUOOE	a	 	 B8q====LLED1rx<   4 41u(UU5r22Q!VqL2223333$&&&&
I
C
be)sRXc]]*
+CH1XX ) )Q
A*RVVBF53;((((x((HJx66666r"   c                 D   t          j        t           j                            d                    }t          j        |          }d|z  |d         z  }d|z                      t           j                  }t          j        d          fd|D             }t          j	        |          }t          ddd	
          }|j        d	k    sJ |                    |          }g d}t          |j                  |k    sJ d|dz  z   }g }t          d          D ]}|                    ||z             t          j        |          }t           j                            ||j                   t          ddd
          }t          j        dd          }	t          j                            |                    |          |	                    |                     t          ddd
          }
t          j        dd          }t          j                            |
                    |          |                    |                     t          ddd
          }|j        dk    sJ |                    |          }g d}t          |j                  |k    sJ d S )Nr   r   r/   r   r   c                 @    g | ]}t          j        |d           z   S )r]   r   r   s     r    rz   z,test_calendar_time_trend.<locals>.<listcomp>  s*    ===sTBLc***===r"   r   Tr   r   )r   r   r   trend_cubedr,   r   r<   r?   )r   rm   r@   )r   r   r   r  ztrend**4)r2   r   r   r   r   r   r'   r   r   r1   r
   rO   rD   r8   r   r#   r4   r   r   r   r   rS   r   )r   r   r   r7   r?   r   r   r   r   ctt2r@   r   cttttr   s                @r    test_calendar_time_trendr    sv   
&**400
1
1C
)C..C
s(SW
C#o%%bh//F<
##D====f===EHUOOE
CQD
A
A
AC9>>>>MM%  E===D$&&&&
f	"
"CH1XX " "q!!!!x((HJx666
CQD
A
A
AC(EtLLLDJ!!#--"6"6u8M8MNNN	3A4	@	@	@B

'4T
J
J
JCJ!!",,u"5"5s}}U7K7KLLLc4qdCCCE;!OOE""EIIID$&&&&&&r"   c                     d} t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||d
z  f         dk    sJ t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||dz  f         dk    sJ t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||dz  f         dk    sJ d S )Nr   
2000-01-03r   X  r   r   r   r,   r   r      r   r   r   rb   
r   r   r	   rD   r2   r   r   r#   r   r   r$   r7   r}   r   r   s        r    test_calendar_seasonal_period_wr    s   FM,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" - -z!QW*%,,,,,M,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" + +z!QU(#s*****M,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" + +z!QU(#s*****+ +r"   c                  H   d} t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||d
z  f         dk    sJ d S )Nr   r  r   r  r  r   r,   r   r      r
  r  s        r    test_calendar_seasonal_period_dr    s    FM,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" , ,z!QV)$+++++, ,r"   c                  H   d} t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||d
z  f         dk    sJ d S )NQr   r*   r  r  r   r,   r   r   r   r
  r  s        r    test_calendar_seasonal_period_qr    s    FM,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" + +z!QU(#s*****+ +r"   c                  ^   d} t          j        ddd          }t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||d
z  f         dk    sJ t          d|           }|                    |          }t	          j        |                    d          dk              sJ t          |j        d	                   D ]}|j	        ||d
z  dz  f         dk    sJ d S )Nrj   r   r*   r  r  r   r,   r   r   rC   r  r   r
  r  s        r    test_calendar_seasonal_period_ar    s<   FM,S#>>>E	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" , ,z!QV)$+++++	S	0	0	0BLLE6%))A,,#%&&&&&5;q>"" 3 3z!a"f]*+s222223 3r"   rl   rO   r,   seasonalfourierr$   r   dropc           	         |r|rd S t          | ||||||          }|                                }t          j                            |j        |            |                    d          }t          |t          j                  sJ d S )N)rl   rO   r  r  r$   r  r   )	r   rD   r   r   r   r7   rK   rN   	DataFrame)	r!   rl   rO   r  r  r$   r  dpr   s	            r    test_deterministic_processr    s      G 	
 
 
B LLNNEJ!!%+z:::R  EeR\*******r"   c                     t          j        t          d          5  t          | ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | ddg	           d d d            d S # 1 swxY w Y   d S )
Nzseasonal and fourierr`   Tr<   r   )r  r  r$   zAll additional termsr,   )r  additional_terms)rd   re   rf   r   r   )r!   s    r    !test_deterministic_process_errorsr  	  s:   	z)?	@	@	@ M MZ$!LLLLM M M M M M M M M M M M M M M	y(>	?	?	? N NZ$!MMMMN N N N N N N N N N N N N N N N N Ns!   <A A "BB
Bc                      t          j        g d          } t          | dddd          }t          j        t
          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )	Nr   Tr<   rl   rO   r  r$   zThe index in the deterministicr`   r   rC   )r   r1   r   rd   re   r   r#   r   r  s     r    test_range_errorr"    s    
(,,,
-
-C	d!d1
 
 
B 
y(H	I	I	I  
B                 s   A**A.1A.c                  p   t          j        ddd          } t          | ddd          }|                    dd	           |                    dd
           |                    dd	           |                    dd           |                    dd           |                    dd           t	          j        t                    5  |                    dd           d d d            n# 1 swxY w Y   t          j        ddd          } t          | ddd          }|                    dd	           |                    dd
           |                    dd	           t	          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   |                    dd           |                    dd           |                    dd           t          j        dd          } t          | dddd          }|                    dd           |                    dd           |                    dd           |                    dd           t	          j        t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r*   x   r  Tr,   )rl   rO   r  z2001-1-1z2008-1-1z2015-1-1z2013-1-1r   r         z1990-1-1z2010-1-1zstart must be non-negativer`   i   rC   r   i)	r   r   r   r#   rd   re   rf   period_ranger0   r!  s     r    test_range_index_basicr)    sP   
-
c
:
:
:C	cDD	I	I	IBHHZ$$$HHZ$$$HHZ$$$HHQHHS#HHS#	z	"	" ) )
Z((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) /*3
<
<
<C	cDD	I	I	IBHHZ$$$HHZ$$$HHZ$$$	z)E	F	F	F  
S               HHQHHS#HHS#
-3

C	d!d2
 
 
B HHQHHS#HHS#HHS#	z	"	"  
a                 s6   C++C/2C/=F  F$'F$J++J/2J/c                     t          j        d                              t           j                  } t	          | dddd          }t          j        dd          } t	          | dddd          }t
          j                            |	                                |	                                           t
          j                            |
                    dd          |
                    dd                     d S )	Nr$  Tr,   rC   r   r   r   r%  )r2   r3   r   r'   r   r   r0   r   r   rD   r#   )r   r  dp2s      r    test_range_castingr,  =  s    
)C..


)
)C	d!d2
 
 
B -3

C
d!d2  C J!!",,..#--//BBBJ!!"((3"4"4ciiS6I6IJJJJJr"   c                      t          j        ddd          } t          | d          }t          j        t
          d          5  |                    dd	           d d d            d S # 1 swxY w Y   d S )
Nr   i  rb   Tr   zThe step of the index is not 1r`   r   i  )r   r0   r   rd   re   rf   r#   r!  s     r    test_non_unit_ranger.  J  s    
-3
"
"C	cD	1	1	1B	z)I	J	J	J  
S                 s   A''A+.A+c                    t          dd          g}t          | |          }t          | dd          }t          j                            |                                |                                           t          j        t          d          5  t          | ||z              d d d            n# 1 swxY w Y   t          j        t          d          5  t          | dd|           d d d            d S # 1 swxY w Y   d S )	NTr,   rk   )r  r   z%One or more terms in additional_termsr`   )rl   rO   r  )	r   r   r   r   r   rD   rd   re   rf   )r!   	add_termsr  r+  s       r    test_additional_termsr1  Q  s   4q)))*I	j9	E	E	EB
zD
B
B
BCJ!!",,..#--//BBB	A
 
 
 
 
 	Y)>	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A
 
 
 
 
 	Q	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   B66B:=B:C==DDc                 H   t          dd          }t          | d|gd          }|                                j        d         dk    sJ t          | |gd          }t          j                            |                                |                                           d S )NTr,   r   )rl   r  r  r<   r  r  )r   r   rD   r   r   r   r   )r!   rT   r  r+  s       r    test_drop_two_consantsr4  d  s    	D	*	*	*B	TRDt
 
 
B <<>>"a''''
zRDt
L
L
LCJ!!",,..#--//BBBBBr"   r7   r'  r   r*   r  c                 8   t          t          j        dd          dd          }t          | dd          }t          j                            |                                |                                           t          j                            |                    d          |                    d                     t          j                            |                    dd          |                    dd                     t          j                            |                    dd	          |                    dd	                     t          j                            |                    dd
          |                    dd
                     d S )Nr   r'  Tr<   r   %      r   r%     )	r   r   r0   r2   r   assert_array_equalrD   rK   r#   )r7   r   r  s      r    test_determintic_term_equivr:  n  s8     a 5 5ANNND	ed!	<	<	<BJ!!$.."2"2BLLNNCCCJ!!$"4"4R"8"8":J:J2:N:NOOOJ!!$**S#"6"6c8J8JKKKJ!!$**R"5"5rxxC7H7HIIIJ!!$**R"5"5rxxC7H7HIIIIIr"   c            	           e Zd Zedeedf         fd            ZdefdZg dZ	de
j        de
j        fdZ	 dd	ede
j        d
e
j        de
j        fdZdS )	DummyTermreturn.c                     dS )N)Dummyrt   selfs    r    _eq_attrzDummyTerm._eq_attr  s    zr"   c                     dS )Nr?  rt   r@  s    r    __str__zDummyTerm.__str__  s    wr"   )const1const2trend1trend2normal1normal2dummy1_1dummy1_2always_drop1always_drop2dummy2_1dummy2_2r7   c                    |j         d         }t          j        |j         d         df          }t          ddd          D ]}|dk    rd}n|dk    rt          j        |          }nn|dk    r t          j                            |          }nH|dk    rt          j        |          }d|d d d<   n%|dk    rd}nt          j        |          }d|dd d<   |x|d d |f<   |d d |dz   f<   t          j	        || j
        |          S )	Nr   rC   r<   r,   r      r   r   r7   )r   r2   r   r#   r3   r   r   r   r   r  r   )rA  r7   nobsr   r   values         r    rD   zDummyTerm.in_sample  s   {1~%+a."-..q"a 	2 	2AAvva	$a	11$77accc

aadd,11E!!!Q$K%1q5//|E4<uEEEEr"   NrU   r:   c                     |                      |||          }t          j                            |df          }t	          j        || j        |          S )NrC   rS  )r   r2   r   r   r   r  r   )rA  rU   r7   r:   fcast_indexr   s         r    rK   zDummyTerm.out_of_sample  sM     ((~FF	))5"+66|E4<{KKKKr"   )N)__name__
__module____qualname__propertyr   r   rB  rL   rD  r   r   r1   r  rD   rP   rK   rt   r"   r    r<  r<    s        %#.    X      GFrx FBL F F F F2 $(		L 	L	L x	L 		L
 
	L 	L 	L 	L 	L 	Lr"   r<  c                     t          j        dd          } t                      }t          |           |t	                      k    sJ t          | |gd          }|                                }|j        dk    sJ |                    d          }|j        dk    sJ t          |j
                  t          |j
                  k    sJ d}|D ]#t          fd	|D                       d
k    sJ $d S )Nr   r'  Tr3  )r'  r   r6  )r6  r   )r   r   dummynormalc                     g | ]}|v d 	S )r,   rt   )rv   r   	valid_cols     r    rz   ztest_drop.<locals>.<listcomp>  s#    999#	S(8(8A(8(8(8r"   r,   )r   r0   r<  rL   r   r   rD   r   rK   r8   r   r   )r7   r]  r  in_sampoosvalidr`  s         @r    	test_droprd    s   M!S!!EKKEJJJIKK	eugD	I	I	IBllnnG=H$$$$


2

C9W_ 5 555551E @ @	9999999::a?????@ @r"   )Jstatsmodels.compat.pandasr   r   statsmodels.compat.pytestr   typingr   r   numpyr2   pandasr   rd   statsmodels.tsa.deterministicr   r	   r
   r   r   r   r   r   fixturer!   r7   r:   marksmokerX   r^   rh   rn   rr   
_supportedr   items	cs_paramsparametrizer   r   r   r   r   r   r   r   r   r   r   r   skipifr   r   r  r  r  r  r  r  r  r"  r)  r,  r.  r1  r4  r0   r1   r3   r   r(  r:  r<  rd  rt   r"   r    <module>rs     s   ? ? ? ? ? ? ? ? 2 2 2 2 2 2 " " " " " " " "         	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 he}555  65 
JJJ    ( h'F'F'FGGG  HG   > , , ,6   2 
" 
" 
" 	 	 	 
	'CCCCC	 	22  32  # # #F F F) ) )4 4 4
7 7 7& & &(K (K (KV  D8 8 8' ' '$ K(;<<+ + =<+7 7 7:"' "' "'J+ + +0, , ,+ + +3 3 3  dE]331a&))dE]33QF++D":..$//+ + 0/ /. ,+ 43 *) 43+(N N N  ! ! !H
K 
K 
K  
 
 
&C C C a3  jsC888
c:::	 J J J5L 5L 5L 5L 5L! 5L 5L 5Lp@ @ @ @ @r"   