
    !g,                     L   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                   j#                  ej                   j%                  e            Zej                   j+                  edd      Z e	j.                  e      Zej2                  D  cg c]  } | j5                          c} e_        ej6                  j9                  ej4                        e_        ej=                  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
jf                  jh                  d#        Z5d$ Z6d% Z7d& Z8yc c} w )(    )	MONTH_ENDN)assert_allclose)co2)STLDecomposeResultresultszstl_test_results.csvscenarioidxmoduleTF)scopeparamsc                     | j                   S N)param)requests    _/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/stl/tests/test_stl.pyrobustr      s    ==    c                  8   t         j                  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work )ospathjoincur_dirr   asarraypdread_csvilocshapezerosonesdict)		file_pathr   r   nobsnperiodr0   r-   r.   r/   s	            r   default_kwargs_baserA      s_   Wi?I
**R[[48==adC
DCA771:DG88TAK'+,D	BHHTNEXXd^F 

''!*  	
             !" #$ % r   function)r   c                      t               S r   )rA   r1   r   r   default_kwargsrD   ;   s      r   c            
      F   t               } | d   d d }|j                  d   }t        j                  |d| d   z  z   df      }t        j                  |      }t        j                  |      }t        j                  |      }| j                  t        ||||||             | S )Nr   r   r   r   r   )r   r   r-   r.   r/   r0   )rA   r:   r   r;   r<   updater=   )kwargsr   r?   r0   r-   r.   r/   s          r   default_kwargs_shortrI   @   s     "FsCRA771:D88TAt,,a01D	BHHTNEXXd^F
MMqDRuV$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seasonalr.   low_passseasonal_deg	trend_deglow_pass_degr   seasonal_jump
trend_jumplow_pass_jump)r=   )rH   r   rK   r   r   r   r!   r*   r+   r,   r&   r(   r)   
outer_iter
inner_iterclass_kwargss                   r   _to_class_kwargsrX   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 |}|j                  ||      }t        j                  d   j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         |d   |j                  z
  |j                  z
  }t        |j                  |       y )NrU   rV   baselinerK   r1   )rX   r   fitr   loc
sort_indexr   r.   rM   r/   weightsr-   resid)rD   rW   outerinnermodresexpectedr`   s           r   test_baseline_classrf   n   s    !1.!AL%


C
''Uu'
5C{{:&113HCIIx~~.CLL(//2CKK-!HNN2X__DECIIu%r   c                 `   t        |       \  }}}t        di |}|j                  ||      }t        j                  d   j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         y )NrZ   shortr1   rX   r   r\   r   r]   r^   r   rM   r/   r.   r_   r-   )rI   rW   ra   rb   rc   rd   re   s          r   test_short_classrj   {   s    !12F!GL%


C
''Uu'
5C{{7#..0HCLL(//2CIIx~~.CKK-r   c                 j   d| d<   t        |       \  }}}t        di |}|j                  ||      }t        j                  d   j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         y )Nr%   r)   rZ   znljump-1r1   ri   rD   rW   ra   rb   rc   rd   re   s          r   test_nljump_1_classrm           N8!1.!AL%


C
''Uu'
5C{{:&113HCLL(//2CIIx~~.CKK-r   c                 j   d| d<   t        |       \  }}}t        di |}|j                  ||      }t        j                  d   j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         y )Nr%   r(   rZ   zntjump-1r1   ri   rl   s          r   test_ntjump_1_classrp      rn   r   c                 t   d| d<   d| d<   t        |       \  }}}t        di |}|j                  ||      }t        j                  d   j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         y )Nr%   r)   r(   rZ   znljump-1-ntjump-1r1   ri   rl   s          r   test_nljump_1_ntjump_1_classrr      s     N8 N8!1.!AL%


C
''Uu'
5C{{./::<HCLL(//2CIIx~~.CKK-r   c                 l   t        |       \  }}}|d   }t        j                  |d d d f   |d d d f   f      }|d   }t        j                  t
        d      5  t        ||       d d d        d}t        j                  t
        |      5  t        |d       d d d        t        j                  t
        |      5  t        |d       d d d        t        j                  t
        |      5  t        |d	       d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   SxY w# 1 sw Y   y xY w)
NrK   rL   z endog is required to have ndim 1matchrK   rL   z&period must be a positive integer >= 2r%   ig      @)rX   r   hstackpytestraises
ValueErrorr   )rD   rW   _rK   endog2rL   ru   s          r   test_parameter_checks_periodr}      s	   ).9L!Q!EYYagag78F(#F	z)K	L )&()4E	z	/ #%"#	z	/ %%$%	z	/ %%$% %) )# #% %% %s0   DD>D/D*DDD'*D3c                    t        |       \  }}}|d   }|d   }d}t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        y # 1 sw Y   nxY w# 1 sw Y   HxY w# 1 sw Y   y xY w)	NrK   rL   z-seasonal must be an odd positive integer >= 3rt   r   )rK   rL   rM   ig      *@rX   rx   ry   rz   r   rD   rW   r{   rK   rL   ru   s         r   test_parameter_checks_seasonalr      s    ).9L!Q!E(#F;E	z	/ 4%34	z	/ 5%45	z	/ 7%67 7	4 45 57 7s#   B3)B?C3B<?CCc                 *   t        |       \  }}}|d   }|d   }d}t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d	       d d d        y # 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   TxY w# 1 sw Y   y xY w)
NrK   rL   z?trend must be an odd positive integer >= 3 where trend > periodrt      )rK   rL   r.            3@r   r   s         r   test_parameter_checks_trendr      s    ).9L!Q!E(#FME	z	/ 2%b12	z	/ 2%b12	z	/ 3%c23	z	/ 4%d34 42 22 23 34 4/   C%)C1C=D	%C.1C:=D	Dc                 *   t        |       \  }}}|d   }|d   }d}t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d       d d d        t        j                  t        |      5  t	        ||d	       d d d        y # 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   TxY w# 1 sw Y   y xY w)
NrK   rL   zElow_pass must be an odd positive integer >= 3 where low_pass > periodrt   r   )rK   rL   rN   r   r   r   r   r   s         r   test_parameter_checks_low_passr      s    ).9L!Q!E(#F	 
 
z	/ 5%45	z	/ 4%34	z	/ 6%56	z	/ 7%67 75 54 46 67 7r   c                     t        |       \  }}}|d   }|d   }t        j                  t        d      5  t	        ||d       d d d        t        j                  t        d      5  t	        ||d       d d d        t        j                  t        d      5  t	        ||d	       d d d        t        j                  t        d      5  t	        ||d	       d d d        t        j                  t        d
      5  t	        ||d       d d d        t        j                  t        d
      5  t	        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)NrK   rL   z low_pass_jump must be a positivert   r   )rK   rL   rT   g      ?z seasonal_jump must be a positive)rK   rL   rR   ztrend_jump must be a positive)rK   rL   rS   r   )rD   rW   r{   rK   rL   s        r   test_jump_errorsr      sL   ).9L!Q!E(#F	z)K	L 9%a89	z)K	L ;%c:;	z)K	L 9%a89	z)K	L ;%c:;	z)H	I 6%156	z)H	I 8%378 89 9; ;9 9; ;6 68 8sG   E'EE E,=E8/FEE E),E58FFc                 r    t        | |      \  }}}|d   }|d   }t        ||      }|j                          y )NrK   rL   rv   )rX   r   r\   )rD   r   rW   r{   rK   rL   rc   s          r   test_defaults_smoker      s>    ).&AL!Q!E(#F
E&
)CGGIr   c                    t        | |      \  }}}t        j                  |d   d      }|d   }t        ||      }|j	                         }t        |j                  t        j                        sJ t        |j                  t        j                        sJ t        |j                  t        j                        sJ t        |j                  t        j                        sJ y )NrK   r   namerL   rv   )
rX   r7   Seriesr   r\   
isinstancer.   rM   r`   r_   )rD   r   rW   r{   rK   rL   rc   rd   s           r   test_pandasr     s    ).&AL!QIIl7+#6E(#F
E&
)C
'')Ccii+++cllBII...cii+++ckk299---r   c                 J   t        |       \  }}}t        di |}|j                         }|d= |d   }t        j                  ddt
              }t        j                  ||      |d<   t        di |}|j                         }t        |j                  |j                         y )NrL   rK   z1-1-1959i\  )periodsfreq)indexr1   )	rX   r   r\   r7   
date_ranger   r   r   rM   )rD   rW   r{   rc   rd   rK   r   res_implicit_periods           r   test_period_detectionr     s    ).9L!Q


C
'')CX!EMM*c	BEIIe59L


C'')CLL"5">">?r   c                     t        |       \  }}}|d= t        j                  |d         |d<   t        j                  t
        d      5  t        di | d d d        y # 1 sw Y   y xY w)NrL   rK   zUnable to determine period fromrt   r1   )rX   r7   r   rx   ry   rz   r   )rD   rW   r{   s      r   test_no_periodr     sb    ).9L!QXIIl7&;<L	z)J	K l  s   	AA'c                    t        |       \  }}}t        di |j                  ||      }|j                          t	        j
                  |d   d      |d<   t        di |j                         }|j                          y )NrZ   rK   CO2r   r1   )rX   r   r\   plotr7   r   )rD   close_figuresrW   ra   rb   rd   s         r   	test_plotr   '  sr    !1.!AL%



!
!Uu
!
ECHHJIIl7&;%HL



!
!
#CHHJr   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 y )N   rM   r.   rL   g      ?r%   r   r   r   r1   )rX   r   intr   ceilconfig)rD   rW   r{   rc   rL   rM   re   s          r   test_default_trendr   2  s   ).9L!Q!L L


C(#FJ'H2773<1sX~+=>?@HX\Q&A-H::g(*** L


C(#FJ'H2773<1sX~+=>?@HX\Q&A-H::g(***r   c                    t        |       \  }}}t        di |}|j                         }t        j                  |      }t        j
                  |      }|j                         }t        |j                  |j                         t        |j                  |j                         |j                  |j                  k(  sJ y )Nr1   )
rX   r   r\   pickledumpsloadsr   r.   rM   r   )	rD   rW   ra   rb   rc   rd   pklreloadedres2s	            r   test_pickler   G  s    !1.!AL%


C
'')C
,,s
C||C H<<>DCIItzz*CLL$--0::(((r   c                      t        j                         j                  } | j                  t              j                         j                         } t        |       j                         }t        |t              sJ y r   )r   loaddataresampler   meanffillr   r\   r   r   )r   rd   s     r   test_squezable_to_1dr   S  sP    88:??D==#((*002D
d)--/Cc?+++r   )F)9statsmodels.compat.pandasr   r2   r   numpyr   numpy.testingr   pandasr7   rx   statsmodels.datasetsr   statsmodels.tsa.seasonalr   r   r3   dirnameabspath__file__r5   r4   r>   r8   r   columnsstripr	   applystr	set_indexfixturer   rA   rD   rI   rX   rf   rj   rm   rp   rr   r}   r   r   r   r   r   r   r   r   mark
matplotlibr   r   r   r   )cs   0r   <module>r      s   / 	   )   $ 9
''//"''//(3
4GGLL)-CD	
"++i
 &-oo617796##))#))4 


Z/
0 he}5 6@ j!! "! j! "0>
&.	.	.
.% 
747&8$	.@  +*	),E
 7s    F!