
    Vfd=              	          d dl Zd dlmZmZmZmZ d dlZd dl	Z	d dl
mZ g dZg ej        ej        ddddd	d
dddddddddddddddddddddd ej        ej        Zg ej        ej        d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<ej        ej        Zg d=Zg ej        ej        d>dddd	d
dddddddddddddddd?d@dAdBdCdDdEej        ej        Zg ej        ej        dFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`daej        ej        Z G db dc          Zdd Ze	j        j        de             Zdf Ze	j        j        e	j                            dgdhdig          e	j                            djdkdlg          e	j                            dmdndog          e	j                            dpdndog          dq                                                             ZdS )r    N)assert_allcloseassert_almost_equalassert_equalassert_raises)seasonal_decompose) {G:O@{GU@QV      Nr   r	   r
   r   r   r	   r
   r   r   r	   r
   r   r   r	   r
   r   r   r	   r
   r   r   r	   r
   r   r   r	   r
   r   p=
c@     i@     k@p=
ףn@     s@     8|@)\@     Z@)\<@      @R|@Rw@Rs@     p@\(l@     Xj@\(g@     h@p=
i@     g@\(d@      R@     "(\@     `B      B@     Y@p=
s`@gK7AS@gK7AQ@g{GZBgB`"WgCl{gsh|Og(\ZZ@g/Y@gx&1@gMb?gGz.@g+$gsh|@g";gQG@gʡELg/$<@gsh|_Bg{GBgOnb@g9vRgK7AU@gQk$g!rhAhgnH@g5^I&@g{G:DgOna@) M?ec]?H}?vq-?r(   r)   r*   r+   r(   r)   r*   r+   r(   r)   r*   r+   r(   r)   r*   r+   r(   r)   r*   r+   r(   r)   r*   r+   r(   r)   r*   r+   gp=
se@     Z@      T@gHzS@     S@      ]@     a@g\(c@gtA}˜?g37?g3?g|͍?gk?gvR~?gGZ*oG8?gAf?gQ5U?g}"O?gapI?gni5$?gG8-xW?gd@z?g]?g[[?g0/?gy?gg\8?g}ƅ!?gAJi?gcAJ?g@߾?gמY?g͍	K?g\*?gBfj?g4?c                   T    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )TestDecomposec           	          g d}t          j        |t          j        dt          |          d                    | _        d S )N i                  iI  i  i)  i  i  i  i        iQ        f      i     b   +   isii}   ii  i   1/1/1951Qstartperiodsfreq)pd	DataFrame
date_rangelendata)clsrP   s     Clib/python3.11/site-packages/statsmodels/tsa/tests/test_seasonal.pysetup_classzTestDecompose.setup_class1   sR    I I I <bm*<?II9<'> '> '> ? ?    c                 N   t          | j        j        d          }t          |j        t
          d           t          |j        t          d           t          |j        t          d           t          t          j        | j        j                  dd          }t          |j        t          d           t          |j        t          d           t          |j        t          d           t          | j        j        d d         d          }g d}g t          j        t          j        dd	d
dddddddddddddddddddddd d!d"t          j        t          j        }g t          j        t          j        d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=t          j        t          j        }t          |j        |d           t          |j        |d           t          |j        |d           d S )>N   period   rA   m)QQ@zGAQ@
ףp=TQEKr\   r]   r^   r_   r\   r]   r^   r_   r\   r]   r^   r_   r\   r]   r^   r_   r\   r]   r^   r_   r\   r]   r^   r_   r\   r]   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   gOn"R@gOn"P@gJ+6EgISgC,(g!rhPg~jX@gfffff.^@gV-g+gSe#@gffffff@gB`"{CgB`"@gx9D@g33333cDg}?5^I6@gB`";EgJ+Eg33333e@g!rhMTOn"T@g'1/gfg/4E@gx&@gJ+G)r   rP   valuesr   seasonalSEASONALtrendTRENDresidRANDOMnpabsMULT_SEASONAL
MULT_TRENDMULT_RANDOMnan)selfres_addres_multrb   rd   randoms         rR   test_ndarrayzTestDecompose.test_ndarray;   s~   $TY%5a@@@G,h:::GM5!444GM61555%bfTY-=&>&>ANNNH-}a@@@HNJ:::HNK;;; %TY%5crc%:1EEE* * *
) ) ) ) ) ) ) )))!'))/)17)9?)AG)))!'))/)17)9?)AG) )  ) "') ).) 06) 8>) @E) 	) 	) "$	)
D"& D"& D& D& D' D7 DD"D$*D,3D5;D=CDDD 'D)0D28D:ADCID D #D %,D .5D 7=D ?FD 	D #	D %*	D ,3	D 57F	D =?F	D
 	G,h:::GM5!444GM6155555rT   c                 "   t          | j        d          }| j                                        }t          j        dt          |          d          |_        t          |d          }t          |j        j	        
                                t          d           t          |j        j	        
                                t          d           t          |j        j	        
                                t          d           t          |j        j	        
                                t          d           t          |j        j	        
                                t          d           t          |j        j	        
                                t          d           t!          |j        j        j	        
                                | j        j        j	                   t          t#          j        | j                  dd          }t          t#          j        |          dd          }t          |j        j	        
                                t&          d           t          |j        j	        
                                t(          d           t          |j        j	        
                                t*          d           t          |j        j	        
                                t&          d           t          |j        j	        
                                t(          d           t          |j        j	        
                                t*          d           t!          |j        j        j	        
                                | j        j        j	                   d S )	NrV   rW   rF   ArH   rY   rA   rZ   )r   rP   copyrL   rN   rO   indexr   rb   ra   squeezerc   rd   re   rf   rg   r   rh   ri   rj   rk   rl   )rn   ro   freq_override_datares_add_overriderp   res_mult_overrides         rR   test_pandaszTestDecompose.test_pandas\   s   $TYq999!Y^^--#%=c*<&=&=C$I $I $I -.@KKKG,3;;==xKKKGM088::E1EEEGM088::FAFFF,5<DDFF$a	) 	) 	),29AACC!1	& 	& 	&,29AACC"A	' 	' 	'W%+2::<<Y_+	- 	- 	- &bfTY&7&7QGGG.rv6H/I/I3679 9 9H-4<<>>	 	 	HN199;;ZKKKHN199;;[!LLL-6=EEGG)1	. 	. 	.-3:BBDD&	+ 	+ 	+-3:BBDD'	, 	, 	,X&,3;;==Y_+	- 	- 	- 	- 	-rT   c                 .   d}t          j        d t          |          D             t          j                            |          z             }t          |j        d          }t          |d          }d}d}t          |j	        j        
                                |j	        ||           t          |j        j        
                                |j        ||           t          |j        j        
                                |j        ||           d S )Nd   c                     g | ]}|d z  S )rA    ).0xs     rR   
<listcomp>z4TestDecompose.test_pandas_nofreq.<locals>.<listcomp>   s    4441Q444rT   rA   rW   g:0yE>g|=)atolrtol)rL   Seriesrangerh   rq   randnr   ra   r   rb   rw   rd   rf   )rn   reset_randomstatenobsdtares_npresr   r   s           rR   test_pandas_nofreqz TestDecompose.test_pandas_nofreq   s   i44d444ryt7L7LLMM#CJq999 Q///+3355v!	. 	. 	. 	.	(0022FL!	. 	. 	. 	.	(0022FL!	. 	. 	. 	. 	. 	.rT   c                    t          j        g d          }t          | j        j        |d          }t          |j        t          d           t          |j        t          d           t          |j
        t          d           d S )N)      ?      ?r   r   r   rV   )filtrX   rY   rA   )rh   arrayr   rP   ra   r   rb   rc   rd   re   rf   rg   )rn   r   ro   s      rR   	test_filtzTestDecompose.test_filt   st    x@@@AA$TY%5DKKKG,h:::GM5!444GM6155555rT   c                 t   t          | j        j        dd          }t          j        g d          }t          j        g t          j        t          j        t          j        t          j        ddddd	d
dddddddddddddddddddddd           }t          j        g t          j        t          j        t          j        t          j        d!d"d#d$d%d&d'd(d)d*d+d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;          }t          |j        |d<           t          |j        |d<           t          |j	        |d=           t          t          j
        | j        j                  d>dd          }t          j        g d?          }t          j        g t          j        t          j        t          j        t          j        d@dddAd	d
dBddCddDdEdFddGddHddIddJdKdLdMdNdOdPdQ          }t          j        g t          j        t          j        t          j        t          j        dRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldm          }t          |j        |d           t          |j        |d<           t          |j	        |d           t          | j        j        d dn         dd          }t          j        g do          }g t          j        t          j        t          j        t          j        ddddd	d
ddddddddddddddddddddd}g t          j        t          j        t          j        t          j        dpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddd}t          |j        |d<           t          |j        |d<           t          |j	        |d=           d S )NrV   F)rX   	two_sided) q=
ף0S@RV@皙\333333Jr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   gMbX9&@gLg rh]@gbX9a@got@g/$p@g rhT@g;OvSg#~jcgEfgKcgl1LgDl\g%C,@gw/-Lgl@g^Ia@g;OnVgw/MDg#~jig"~rgA`RG@g rh!R@gI+?U@g^IWm@gw/@g rh1Z@rY   rA   rZ   ) V-?Gr?F_?V-?r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   g     te@g     n@g     @g     =@g     |@g     w@g     s@g     l@g     g@g     i@g     d@r,   r-   g     S@r.   r/   r0   g     c@gz6?gMb?g      ?gn?go?giq?gS:?gNbX9?g$(~k?g/L
F?g46<?gpΈ?g"~j?gn?gw/?g!rh?g镲q?gjMS?gV}b?gTN?gQ?gZd;?gtV?gŏ1w-!?g(0?gΈ @g\m?gW2ı?r[   )=
ףpMT@QW@|[(\oPr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   gx@g=
ףpNg~jl\@gƳb@gS㥛t@gQpp@g~jS@g r PgX9Țcg(\/ggʡcgNbX9lagB`"kNgQ]gS%#@g7A`EgB`"Bgq=
ף`@g%CWgoA;gX9ȢigHz7sgxE@gd;OwU@r`   gq=
ףl@gJ+C)r   rP   ra   rh   r   rm   r   rb   rd   rf   ri   )rn   ro   rb   rd   rf   rp   rq   s          rR   .test_one_sided_moving_average_in_stl_decomposez<TestDecompose.test_one_sided_moving_average_in_stl_decompose   s   $TY%5a/46 6 6 8 : : : ; ;  7"& 7"& 7"& 7"& 7& 7$ 7 7 7"(7*/71779?7AG7IM7 7"(7*072678>7@F7HN7 7 !'7 )-7 /57 7:7 <A7 CI7 !	7 #(	7 *.	7 06	7 8 8  5"& 5"& 5"& 5"& 5& 5' 5!5#*5,355<5>D5FM5"5$,5.658@5BI5 #5 %+5 -45 6=5 ?F5 HO5 "	5 $,	5 .6	5 8>	5 @F	5 HN	5
 "5
 $+5
 -45 6 6 	G,h:::GM5!444GM5!444%bfTY-=&>&>A057 7 7 8 - - - . .  )"& )"& )"& )"& )' )4 ) )"))+1)38):A)CI)!)#'))0)29);B)DH) ") $*) ,3) 59) ;B) DH) "	) $*	) ,0	) 28	) :?	) AF	)
 )
 !() * *  :"& :"& :"& :"& :& :% : ::!':)/:17:9>:@F:HN: :"(:*/:16:8>:@F:HN: !: #): +1: 38: :?: AF: HN: !	: #)	: +1	: 39	: ; ; 	H-x;;;HNE1555HNE1555 %TY%5crc%:1/46 6 68 & & & ' '& & & & & & &v &&&!&&(.&06&8>&@D&&&!'&)-&/5&7=&?E& & &  $& &,& .1& 38& :@& 	& 	& !%	&N"& N"& N"& N"& N% N NN"N$+N-3N5;N=DNN#N%-N/7N9@NBIN N !N #*N ,2N 4;N =DN 	N $	N &,	N .4	N 6<	N >D	N FM	N 	G,h:::GM5!444GM6155555rT   c                 8   t          j        t          j        d          d          j        }t	          |d          j        }t          j        t          j        dt                    d          j        }t           j        x|d<   |d<   t          ||           d S )N   rY      rY   rW   )dtyper   r[   )	rh   tilearangeTr   rd   floatrm   r   )rn   r   rd   expecteds       rR   test_2dzTestDecompose.test_2d   s    GBIaLL&))+"1Q///5729Qe444f==?%'V+hrlUH%%%%%rT   c                    t          j        d          }d}t          ||          j        }t	          |d         t           j                   t          ||d          j        }t          ||           t          ||d          j        }t          ||           t          |d d d f         |d          j        }t          ||           t          j        t          j        d          d          j        }t          ||d	          j        }t          ||           t          ||d          j        }t          ||           d S )
N   rV   rW   r      )rX   extrapolate_trendrK   r   r   )	rh   r   r   rd   r   rm   r   r   r   )rn   r   rK   rd   s       rR   test_interpolate_trendz$TestDecompose.test_interpolate_trend   sP   IbMM"1T2228U1Xrv&&&"1TQGGGME1%%%"1T5;= = ==B 	E1%%%"1QQQW:d568 8 88= 	E1%%% GBIbMM6**,"1TQGGGME1%%%"1T5;= = ==B 	E1%%%%%rT   c                 V   t          t          t          | j        j                   t          t          t          | j        dd           | j                            t                                                    }t          j	        |j
        d<   t          t          t          |           d S )NrZ   rV   rW   rY   )r   
ValueErrorr   rP   ra   astyper   ru   rh   rm   iloc)rn   r   s     rR   test_raiseszTestDecompose.test_raises  s    j"4di6FGGGj"4di	  	  	  	 IU##((**Fq	j"4a88888rT   N)__name__
__module____qualname__classmethodrS   rr   r{   r   r   r   r   r   r   r   rT   rR   r2   r2   0   s        ? ? [?6 6 6B!- !- !-F. . . 6 6 6N6 N6 N6`& & && & &49 9 9 9 9rT   r2   c                    t          j        ddd          }t          j        t          j        d          dz  dz  t          j        z            }|t          j                            |j                  z  }t          j	        |d|          }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t          j        ddd	          }t          j        t          j        d          dz  dz  t          j        z            }|t          j                            |j                  z  }t          j	        |d|          }t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t          j        t                    5  t          |j        d
           d d d            d S # 1 swxY w Y   d S )Nz
2000-01-31rV   rG   )rJ   rK   rY   y)namerv   r   MrW   )rL   rN   rh   sinr   pirq   standard_normalsizer   pytestraisesr   r   ra   )r   datesr   s      rR   !test_seasonal_decompose_too_shortr     sS   M,<<<E
ry||a!#be+,,A	"	"16	*	**A
	!#U+++A	z	"	"  1               M,===E
ry}}r!A%-..A	"	"16	*	**A
	!#U+++A	z	"	"  1              	z	"	" 0 018B////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s6   (CCC6FFF6GG!Gc            	          t          j        g d          } t          | d           t          j        | t          j        dt          |           d                    }t          |           d S )Nr4   rV   rW   rF   rG   rH   )rh   r   r   rL   rM   rN   rO   )r   rP   s     rR   test_seasonal_decompose_smoker   "  s    
 K K K 	L 	LA q####<2=z14Q.13 3 3 4 4D trT   c                     t          j        g d          } t           j        | | f         } t          | d          }t	          |j        d d df         |j        d d df                    t	          |j        d d df         |j        d d df                    t	          |j        d d df         |j        d d df                    d S )Nr4   rV   rW   r   r   )rh   r   c_r   r   rd   rb   rf   )r   r   s     rR    test_seasonal_decompose_multipler   0  s    
 K K K 	L 	LA 	adA
Qq
)
)
)CCIaaadOSYqqq!t_555CLA&QQQT(:;;;CIaaadOSYqqq!t_55555rT   modeladditivemultiplicativerK   rV   r   r   TFr   c                 $   t          j        g d          }||                                dz   z  }t           j        |dd          |d d         f         }t           j        ||f         }t          ||||          }|                                 d S )Nr4   r   r   )rX   r   r   )rh   r   minr_r   r   plot)r   rK   r   r   r   x2r   s          rR   test_seasonal_decompose_plotr   ;  s     	 K K K 	L 	LA 1A	qvq"v~	B
aeA
Qty/@B B BCHHJJJJJrT   )numpyrh   numpy.testingr   r   r   r   pandasrL   r   statsmodels.tsa.seasonalr   rc   rm   re   rg   rj   rk   rl   r2   r   marksmoker   r   
matplotlibparametrizer   r   rT   rR   <module>r      s?                       7 7 7 7 7 72 2 2
	) 	) 	) 	) 	) 	) 	) 	)		)	)	)!'	))/	)17	)9?	)		)	)	)!'	))/	)17	)9?	) 
	) 	) 	) !&	) (.	) 06	) 8=	) 
		) 		) 		) "$		)

<"& 
<"& 
<& 
<& 
<' 
<7 
<F 
<

<
<#
<%*
<,1
<39
<;B
<

<
<"
<$+
<-3
<5<
< 
< 
< $
< &,
< .5
< 7?
< 	
< 	
< "	
< $+	
< -/F	
< 57F	
<1 1 1
.bf .bf .f .f .f .f .f ...$.&,..4.6<.>D...$.&,..4.6<.>D. . . %. ',. .3. 5:. <B. 	. 	. !f	. ')f	.

rv rv w   ' !(*13:<C!(*13:<C    ") +2 4; =D 	  	 ")	 +2	 4;	 =D	
 v
 v]9 ]9 ]9 ]9 ]9 ]9 ]9 ]9@0 0 0$ 
 
 
6 6 6 :/?"@AA!R))tUm44,tUm<<	 	 =< 54 *) BA 
	 	 	rT   