
    Vfd+                        d dl Z d dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
 e j                            e j                            e                    Ze j                            edd          Z ej        e          Zd ej        D             e_        ej                            ej                  e_        e                    ddg          Z ej        d	d
dg          d             Zd Z ej        d          d             Z ej        d          d             Zd%dZd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d  Z,d! Z-ej.        j/        d"             Z0d# Z1d$ Z2dS )&    N)assert_allclose)STLresultszstl_test_results.csvc                 6    g | ]}|                                 S  )strip).0cs     Blib/python3.11/site-packages/statsmodels/tsa/stl/tests/test_stl.py
<listcomp>r      s     66617799666    scenarioidxmoduleTF)scopeparamsc                     | j         S N)param)requests    r   robustr      s
    =r   c                  $   t           j                            t          dd          } t	          j        t          j        | d           j        d d df                   }|}|j	        d         }d}t	          j
        |d|z  z   df          }t	          j        |          }t	          j
        |          }t	          j
        |          }t          di d|d	|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|S ) Nr   zstl_co2.csv)headerr            ynnpns#   nt   nl   noni   nsjump   ntjumpnljumpisdegitdegildegrwtrendseasonworkr   )ospathjoincur_dirr   asarraypdread_csvilocshapezerosonesdict)		file_pathco2r   nobsnperiodr3   r0   r1   r2   s	            r   default_kwargs_baserD      s   Wi??I
*R[4888=aaadC
D
DCA71:DG8TAK'+,,D	BHTNNEXd^^F   
!
'!** 7 2	
 2 2 1 1 q q q a a a 2  e!" v#$ T% r   function)r   c                      t                      S r   )rD   r   r   r   default_kwargsrG   8   s       r   c            
      h   t                      } | d         d d         }|j        d         }t          j        |d| d         z  z   df          }t          j        |          }t          j        |          }t          j        |          }|                     t          ||||||                     | S )Nr   r   r   r   r   )r   r   r0   r1   r2   r3   )rD   r<   r   r=   r>   updater?   )kwargsr   rB   r3   r0   r1   r2   s          r   default_kwargs_shortrL   =   s     ""FsCRCA71:D8TAt,,a011D	BHTNNEXd^^F
MMqDRuV$GGG   Mr   c                    | d         }| d         }| d         }| d         }| d         }| d         }| d         }| d         }	| d	         }
| d
         }| d         }| d         }| d         }t          ||||||||	||
||          }|||fS )Nr   r   r    r"   r$   r-   r.   r/   r)   r+   r,   r&   r'   )endogperiodseasonalr1   low_passseasonal_deg	trend_deglow_pass_degr   seasonal_jump
trend_jumplow_pass_jump)r?   )rK   r   rN   r   r    r"   r$   r-   r.   r/   r)   r+   r,   
outer_iter
inner_iterclass_kwargss                   r   _to_class_kwargsr[   L   s    3KE	B	B	B	B7OE7OE7OEHFHFHFJJ  L Z//r   c                    t          |           \  }}}t          di |}|                    ||          }t          j        d                                         }t          |j        |j                   t          |j        |j	                   t          |j
        |j                   |d         |j        z
  |j	        z
  }t          |j        |           d S )NrX   rY   baselinerN   r   )r[   r   fitr   loc
sort_indexr   r1   rP   r2   weightsr0   resid)rG   rZ   outerinnermodresexpectedrc   s           r   test_baseline_classri   k   s    !1.!A!AL%




C
''Uu'
5
5C{:&1133HCIx~...CL(/222CK---!HN2X_DECIu%%%%%r   c                 V   t          |           \  }}}t          di |}|                    ||          }t          j        d                                         }t          |j        |j                   t          |j	        |j	                   t          |j
        |j                   d S )Nr]   shortr   r[   r   r_   r   r`   ra   r   rP   r2   r1   rb   r0   )rL   rZ   rd   re   rf   rg   rh   s          r   test_short_classrm   x   s    !12F!G!GL%




C
''Uu'
5
5C{7#..00HCL(/222CIx~...CK-----r   c                 `   d| d<   t          |           \  }}}t          di |}|                    ||          }t          j        d                                         }t          |j        |j                   t          |j	        |j	                   t          |j
        |j                   d S )Nr(   r,   r]   znljump-1r   rl   rG   rZ   rd   re   rf   rg   rh   s          r   test_nljump_1_classrp           N8!1.!A!AL%




C
''Uu'
5
5C{:&1133HCL(/222CIx~...CK-----r   c                 `   d| d<   t          |           \  }}}t          di |}|                    ||          }t          j        d                                         }t          |j        |j                   t          |j	        |j	                   t          |j
        |j                   d S )Nr(   r+   r]   zntjump-1r   rl   ro   s          r   test_ntjump_1_classrs      rq   r   c                 j   d| d<   d| d<   t          |           \  }}}t          di |}|                    ||          }t          j        d                                         }t          |j        |j                   t          |j	        |j	                   t          |j
        |j                   d S )Nr(   r,   r+   r]   znljump-1-ntjump-1r   rl   ro   s          r   test_nljump_1_ntjump_1_classru      s     N8 N8!1.!A!AL%




C
''Uu'
5
5C{./::<<HCL(/222CIx~...CK-----r   c                    t          |           \  }}}|d         }t          j        |d d d f         |d d d f         f          }|d         }t          j        t
          d          5  t          ||           d d d            n# 1 swxY w Y   d}t          j        t
          |          5  t          |d           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |d           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          |d	           d d d            d S # 1 swxY w Y   d S )
NrN   rO   zendog must have ndim <= 1matchrN   rO   z&period must be a positive integer >= 2r(   ig      @)r[   r   hstackpytestraises
ValueErrorr   )rG   rZ   _rN   endog2rO   rx   s          r   test_parameter_checks_periodr      s_   ).99L!Q!EYaaagaaag788F(#F	z)D	E	E	E ) )&(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )4E	z	/	/	/ # #%""""# # # # # # # # # # # # # # #	z	/	/	/ % %%$$$$% % % % % % % % % % % % % % %	z	/	/	/ % %%$$$$% % % % % % % % % % % % % % % % % %sH   )BBB/CCC3DDD7EEEc                    t          |           \  }}}|d         }|d         }d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            d S # 1 swxY w Y   d S )	NrN   rO   z-seasonal must be an odd positive integer >= 3rw   r   )rN   rO   rP   ig      *@r[   r{   r|   r}   r   rG   rZ   r~   rN   rO   rx   s         r   test_parameter_checks_seasonalr      s   ).99L!Q!E(#F;E	z	/	/	/ 4 4%33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	/	/	/ 5 5%44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	z	/	/	/ 7 7%66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s6   A  A$'A$B%%B),B)C++C/2C/c                 z   t          |           \  }}}|d         }|d         }d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d	           d d d            d S # 1 swxY w Y   d S )
NrN   rO   z?trend must be an odd positive integer >= 3 where trend > periodrw      )rN   rO   r1            3@r   r   s         r   test_parameter_checks_trendr      s:   ).99L!Q!E(#FME	z	/	/	/ 2 2%b11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	/	/	/ 2 2%b11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z	/	/	/ 3 3%c22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	z	/	/	/ 4 4%d33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4H   A  A$'A$B%%B),B)C**C.1C.D00D47D4c                 z   t          |           \  }}}|d         }|d         }d}t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          ||d	           d d d            d S # 1 swxY w Y   d S )
NrN   rO   zElow_pass must be an odd positive integer >= 3 where low_pass > periodrw   r   )rN   rO   rQ   r   r   r   r   r   s         r   test_parameter_checks_low_passr      sA   ).99L!Q!E(#F	 
 
z	/	/	/ 5 5%44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	z	/	/	/ 4 4%33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	/	/	/ 6 6%55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	z	/	/	/ 7 7%66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7r   c                    t          |           \  }}}|d         }|d         }t          j        t          d          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          ||d           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          ||d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          ||d	           d d d            n# 1 swxY w Y   t          j        t          d
          5  t	          ||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 )NrN   rO   zlow_pass_jump must be a positverw   r   )rN   rO   rW   g      ?zseasonal_jump must be a positve)rN   rO   rU   ztrend_jump must be a positve)rN   rO   rV   r   )rG   rZ   r~   rN   rO   s        r   test_jump_errorsr      s9   ).99L!Q!E(#F	z)J	K	K	K 9 9%a88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z)J	K	K	K ; ;%c::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)J	K	K	K 9 9%a88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z)J	K	K	K ; ;%c::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)G	H	H	H 6 6%155556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	z)G	H	H	H 8 8%377778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8sk   AA"%A"B##B'*B'	C((C,/C,D--D14D1E22E69E6F88F<?F<c                     t          | |          \  }}}|d         }|d         }t          ||          }|                                 d S )NrN   rO   ry   )r[   r   r_   )rG   r   rZ   r~   rN   rO   rf   s          r   test_defaults_smoker      sO    ).&AAL!Q!E(#F
E&
)
)
)CGGIIIIIr   c                    t          | |          \  }}}t          j        |d         d          }|d         }t          ||          }|                                }t          |j        t          j                  sJ t          |j        t          j                  sJ t          |j        t          j                  sJ t          |j	        t          j                  sJ d S )NrN   r   namerO   ry   )
r[   r9   Seriesr   r_   
isinstancer1   rP   rc   rb   )rG   r   rZ   r~   rN   rO   rf   rg   s           r   test_pandasr     s    ).&AAL!QIl7+#666E(#F
E&
)
)
)C
''))Cci+++++clBI.....ci+++++ck29-------r   c                 V   t          |           \  }}}t          di |}|                                }|d= |d         }t          j        ddd          }t          j        ||          |d<   t          di |}|                                }t          |j        |j                   d S )	NrO   rN   z1-1-1959i\  M)periodsfreq)indexr   )r[   r   r_   r9   
date_ranger   r   rP   )rG   rZ   r~   rf   rg   rN   r   res_implicit_periods           r   test_period_detectionr     s    ).99L!Q




C
''))CX!EM*c<<<EIe5999L




C''))CL"5">?????r   c                     t          |           \  }}}|d= t          j        |d                   |d<   t          j        t
          d          5  t          di | d d d            d S # 1 swxY w Y   d S )NrO   rN   zUnable to determine period fromrw   r   )r[   r9   r   r{   r|   r}   r   )rG   rZ   r~   s      r   test_no_periodr     s    ).99L!QXIl7&;<<L	z)J	K	K	K  l                 s   A))A-0A-c                 8   t          |           \  }}}t          di |                    ||          }|                                 t	          j        |d         d          |d<   t          di |                                }|                                 d S )Nr]   rN   CO2r   r   )r[   r   r_   plotr9   r   )rG   close_figuresrZ   rd   re   rg   s         r   	test_plotr   $  s    !1.!A!AL%





!
!Uu
!
E
ECHHJJJIl7&;%HHHL





!
!
#
#CHHJJJJJr   c                    t          |           \  }}}d|d<   d |d<   t          d
i |}|d         }|d         }t          t          j        d|z  dd|z  z
  z                      }||dz  dk    rdndz  }|j        d         |k    sJ d	|d<   t          d
i |}|d         }|d         }t          t          j        d|z  dd|z  z
  z                      }||dz  dk    rdndz  }|j        d         |k    sJ d S )N   rP   r1   rO   g      ?r(   r   r   r   r   )r[   r   intr   ceilconfig)rG   rZ   r~   rf   rO   rP   rh   s          r   test_default_trendr   /  sB   ).99L!Q!L L




C(#FJ'H273<1sX~+=>??@@HX\Q&&A-H:g(**** L




C(#FJ'H273<1sX~+=>??@@HX\Q&&A-H:g(******r   c                 p   t          |           \  }}}t          di |}|                                }t          j        |          }t          j        |          }|                                }t          |j        |j                   t          |j        |j                   |j	        |j	        k    sJ d S )Nr   )
r[   r   r_   pickledumpsloadsr   r1   rP   r   )	rG   rZ   rd   re   rf   rg   pklreloadedres2s	            r   test_pickler   D  s    !1.!A!AL%




C
''))C
,s

C|C  H<<>>DCItz***CL$-000:((((((r   )F)3r4   r   numpyr   numpy.testingr   pandasr9   r{   statsmodels.tsa.seasonalr   r5   dirnameabspath__file__r7   r6   r@   r:   r   columnsr   applystrr   	set_indexfixturer   rD   rG   rL   r[   ri   rm   rp   rs   ru   r   r   r   r   r   r   r   r   r   mark
matplotlibr   r   r   r   r   r   <module>r      s   				      ) ) ) ) ) )      ( ( ( ( ( (
'//"'//(33
4
4GLL)-CDD	
"+i
 
 66go666#))#)44 


Z/
0
0 he}555  65  @ j!!!! ! "!! j!!!  "!0 0 0 0>
& 
& 
&. . .	. 	. 	.	. 	. 	.
. 
. 
.% % % 
7 
7 
74 4 47 7 7&8 8 8$  	. 	. 	.@ @ @     + + +*	) 	) 	) 	) 	)r   