
    !g              
          d dl mZ d dlmZmZ d dlZd dlZd dlm	Z	  ej                  d      d        Z ej                  d      d        Z ej                  d      d	        Zd
 Zd Zej                   j#                  dedddfedddfedddfgdg      d        Zej                   j#                  dddg      d        Zej                   j#                  dedfedfedfedfgdg      d        Zd Zd Zej                   j.                  d         Zd! Zej                   j#                  d"ed#d$d%d&fed'd$d(d&fed#dd%dfgdg      d)        Zy)*    )Path)assert_allcloseassert_equalN)MSTLfunction)scopec                      t        t              j                  j                         } | dz  }t	        j
                  |      S )Nzresults/mstl_test_results.csvr   __file__parentresolvepdread_csvcur_dir	file_paths     `/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/stl/tests/test_mstl.pymstl_resultsr   
   s4    8n##++-G99I;;y!!    c                      t        t              j                  j                         } | dz  }t	        j
                  |dgdg      S )Nzresults/mstl_elec_vic.csvds)	index_colparse_datesr
   r   s     r   data_pdr      s<    8n##++-G55I;;yTFGGr   c                      | d   j                   S )Ny)values)r   s    r   datar      s    3<r   c                 n   t        | d      }|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 N   endogperiods)	r   fit
isinstancetrendr   Seriesseasonalresidweightsr   modress      r   ?test_return_pandas_series_when_input_pandas_and_len_periods_oner/      sy    
Wa
(C
'')Ccii+++cllBII...cii+++ckk299---r   c                     t        | d      }|j                         }t        |j                  t        j
                        sJ y )N   r!   r"   )r   r%   r&   r)   r   	DataFramer,   s      r   @test_seasonal_is_datafame_when_input_pandas_and_multiple_periodsr4   &   s1    
Wf
-C
'')CcllBLL111r   z data, periods, windows, expectedr2      )r2         )r2   r6   g    .Ar   )indirectc                     t        | ||      }|j                         }|j                  j                  dkD  r|j                  j                  d   n|j                  j                  }||k(  sJ y )Nr#   r$   windowsr5   )r   r%   r)   ndimshape)r   r$   r;   expectedr-   r.   n_seasonal_componentss          r   "test_number_of_seasonal_componentsr@   ,   sa     T7G
<C
'')C!$!2!2Q!61CLL<M<M  !H,,,r   zperiods, windows)r1   r5   )   r1   c                     t        j                  t        d      5  t        g d| |       d d d        y # 1 sw Y   y xY w)Nz)Periods and windows must have same length)match)r5   r7   r2      r!   r:   )pytestraises
ValueErrorr   )r$   r;   s     r   <test_raise_value_error_when_periods_and_windows_diff_lengthsrH   >   s=     
E
 F 	?GWEF F Fs   6?zdata, lmbdag?g      autoc                 D    d}t        | ||      }|j                          y )Nr!   r6   rA   r#   r$   lmbdar   r%   )r   rM   r$   r-   s       r   test_fit_with_box_coxrO   K   s      G
T7%
8CGGIr   c                     d}t        | |d      }|j                          t        |d      sJ t        |j                  t
              sJ y )NrK   rI   rL   	est_lmbda)r   r%   hasattrr&   rQ   float)r   r$   r-   s      r   test_auto_fit_with_box_coxrT   V   sB    G
T7&
9CGGI3$$$cmmU+++r   c                 f    dddddddddddddd	}d
}t        | |d|      }|j                          y )N         r   r5   r7   r2   F)periodr)   r'   low_passseasonal_deg	trend_deglow_pass_degseasonal_jump
trend_jumplow_pass_jumprobust
inner_iter
outer_iterrK   rI   )r#   r$   rM   
stl_kwargsrN   )r   rd   r$   r-   s       r   test_stl_kwargs_smokere   ^   sU    J G
G6jC GGIr   c                     t        | d      }|j                         }|j                          t        |d      }|j                         }|j                          y r    )r   r%   plot)r   r   close_figuresr-   r.   s        r   	test_plotri   u   sB    
T1
%C
'')CHHJ
Wa
(C
'')CHHJr   c                 .   t        | dddddddddd      }|j                         }|d   }|d   }|d	d
g   }|d   }t        |j                  |       t        |j                  |       t        |j
                  |       t        |j                  |       y )N)      r   r5   r7   )r[   r^   r_   r\   r`   r]   rb   rc   )r#   r$   rd   DataTrend
Seasonal24Seasonal168	Remainder)r   r%   r   observedr'   r)   r*   )r   r   r-   r.   expected_observedexpected_trendexpected_seasonalexpected_resids           r   'test_output_similar_to_R_implementationrw      s    
	
C '')C$V,!'*N$lM%BC!+.NCLL"34CII~.CLL"34CII~.r   zPdata, periods_ordered, windows_ordered, periods_not_ordered, windows_not_ordered)rV   rk   rl   )   rW      )rV   rl   rk   )rx   ry   rW   )rV   rk       A)rV   rz   rk   c                 |   t        | ||      }|j                         }t        | ||      }|j                         }t        |j                  |j                         t        |j                  |j                         t        |j
                  |j
                         t        |j                  |j                         y )Nr:   )r   r%   r   rr   r'   r)   r*   )	r   periods_orderedwindows_orderedperiods_not_orderedwindows_not_orderedmod1res1mod2res2s	            r   %test_output_invariant_to_period_orderr      s    . dO_MD88:D/9LD 88:D.TZZ(.TZZ(r   )pathlibr   numpy.testingr   r   pandasr   rE   statsmodels.tsa.seasonalr   fixturer   r   r   r/   r4   markparametrizer@   rH   rO   rT   re   
matplotlibri   rw   r    r   r   <module>r      s    7   ) j!" "" j!H "H j! ".2 &	q$	vtQ	{D!$
 X  -- +F	F 
C[4)dD\D&>:X  

,.  /8  
/?N""	
 
'7>
 X   )! )r   