
    M/Ph,                         d dl mZ 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 d dlmZ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! Z0d" Z1d# Z2e
j3        j4        d$             Z5d% Z6d& Z7d' Z8dS ))    )	MONTH_ENDN)assert_allclose)co2)STLDecomposeResultresultszstl_test_results.csvc                 6    g | ]}|                                 S  )strip).0cs     b/var/www/html/test/jupyter/venv/lib/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_pathr   r    nobsnperiodr6   r3   r4   r5   s	            r   default_kwargs_baserF      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   )rF   r
   r   r   default_kwargsrI   ;   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!   r3   r4   r5   r6   )rF   r?   r"   r@   rA   updaterB   )kwargsr    rD   r6   r3   r4   r5   s          r   default_kwargs_shortrN   @   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'   r0   r1   r2   r,   r.   r/   r)   r*   )endogperiodseasonalr4   low_passseasonal_deg	trend_deglow_pass_degr   seasonal_jump
trend_jumplow_pass_jump)rB   )rM   r   rP   r"   r#   r%   r'   r0   r1   r2   r,   r.   r/   
outer_iter
inner_iterclass_kwargss                   r   _to_class_kwargsr]   O   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rZ   r[   baselinerP   r
   )r]   r   fitr   loc
sort_indexr   r4   rR   r5   weightsr3   resid)rI   r\   outerinnermodresexpectedre   s           r   test_baseline_classrk   n   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   ra   r   rb   rc   r   rR   r5   r4   rd   r3   )rN   r\   rf   rg   rh   ri   rj   s          r   test_short_classro   {   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
   rn   rI   r\   rf   rg   rh   ri   rj   s          r   test_nljump_1_classrr           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
   rn   rq   s          r   test_ntjump_1_classru      rs   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
   rn   rq   s          r   test_nljump_1_ntjump_1_classrw      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 )
NrP   rQ   z endog is required to have ndim 1matchrP   rQ   z&period must be a positive integer >= 2r+   ig      @)r]   r"   hstackpytestraises
ValueErrorr   )rI   r\   _rP   endog2rQ   rz   s          r   test_parameter_checks_periodr      s_   ).99L!Q!EYaaagaaag788F(#F	z)K	L	L	L ) )&(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )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 )	NrP   rQ   z-seasonal must be an odd positive integer >= 3ry   r   )rP   rQ   rR   ig      *@r]   r}   r~   r   r   rI   r\   r   rP   rQ   rz   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 )
NrP   rQ   z?trend must be an odd positive integer >= 3 where trend > periodry      )rP   rQ   r4            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 )
NrP   rQ   zElow_pass must be an odd positive integer >= 3 where low_pass > periodry   r   )rP   rQ   rS   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 )NrP   rQ   z low_pass_jump must be a positivery   r   )rP   rQ   rY   g      ?z seasonal_jump must be a positive)rP   rQ   rW   ztrend_jump must be a positive)rP   rQ   rX   r   )rI   r\   r   rP   rQ   s        r   test_jump_errorsr      s9   ).99L!Q!E(#F	z)K	L	L	L 9 9%a88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z)K	L	L	L ; ;%c::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)K	L	L	L 9 9%a88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	z)K	L	L	L ; ;%c::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)H	I	I	I 6 6%155556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	z)H	I	I	I 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 )NrP   rQ   r{   )r]   r   ra   )rI   r   r\   r   rP   rQ   rh   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 )NrP   r    namerQ   r{   )
r]   r<   Seriesr   ra   
isinstancer4   rR   re   rd   )rI   r   r\   r   rP   rQ   rh   ri   s           r   test_pandasr     s    ).&AAL!QIl7+#666E(#F
E&
)
)
)C
''))Cci+++++clBI.....ci+++++ck29-------r   c                 `   t          |           \  }}}t          di |}|                                }|d= |d         }t          j        ddt
                    }t          j        ||          |d<   t          di |}|                                }t          |j        |j                   d S )NrQ   rP   z1-1-1959i\  )periodsfreq)indexr
   )	r]   r   ra   r<   
date_ranger   r   r   rR   )rI   r\   r   rh   ri   rP   r   res_implicit_periods           r   test_period_detectionr     s    ).99L!Q




C
''))CX!EM*c	BBBE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 )NrQ   rP   zUnable to determine period fromry   r
   )r]   r<   r   r}   r~   r   r   )rI   r\   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_   rP   CO2r   r
   )r]   r   ra   plotr<   r   )rI   close_figuresr\   rf   rg   ri   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   rR   r4   rQ   g      ?r+   r   r   r   r
   )r]   r   intr"   ceilconfig)rI   r\   r   rh   rQ   rR   rj   s          r   test_default_trendr   2  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   ra   pickledumpsloadsr   r4   rR   r   )	rI   r\   rf   rg   rh   ri   pklreloadedres2s	            r   test_pickler   G  s    !1.!A!AL%




C
''))C
,s

C|C  H<<>>DCItz***CL$-000:((((((r   c                  "   t          j                    j        } |                     t                                                                                    } t          |                                           }t          |t                    sJ d S r   )r   loaddataresampler   meanffillr   ra   r   r   )r   ri   s     r   test_squezable_to_1dr   S  sg    8::?D==##((**0022D
d))--//Cc?+++++++r   )F)9statsmodels.compat.pandasr   r7   r   numpyr"   numpy.testingr   pandasr<   r}   statsmodels.datasetsr   statsmodels.tsa.seasonalr   r   r8   dirnameabspath__file__r:   r9   rC   r=   r   columnsr   applystrr   	set_indexfixturer   rF   rI   rN   r]   rk   ro   rr   ru   rw   r   r   r   r   r   r   r   r   r   mark
matplotlibr   r   r   r   r
   r   r   <module>r      s   / / / / / / 				      ) ) ) ) ) )      $ $ $ $ $ $ 9 9 9 9 9 9 9 9
'//"'//(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   