
    M/Ph              
          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                            dedddfedddfedddfgdg          d             Zej                            dddg          d             Ze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                            d"ed#d$d%d&fed'd$d(d&fed#dd%dfgdg          d)             ZdS )*    )Path)assert_allcloseassert_equalN)MSTLfunction)scopec                      t          t                    j                                        } | dz  }t	          j        |          S )Nzresults/mstl_test_results.csvr   __file__parentresolvepdread_csvcur_dir	file_paths     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/stl/tests/test_mstl.pymstl_resultsr   
   s7    8nn#++--G99I;y!!!    c                      t          t                    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      sB    8nn#++--G55I;yTFGGGGr   c                     | d         j         S )Ny)values)r   s    r   datar      s    3<r   c                 X   t          | d          }|                                }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 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/      s    
Wa
(
(
(C
''))Cci+++++clBI.....ci+++++ck29-------r   c                     t          | d          }|                                }t          |j        t          j                  sJ d S )N   r!   r"   )r   r%   r&   r)   r   	DataFramer,   s      r   @test_seasonal_is_datafame_when_input_pandas_and_multiple_periodsr4   &   sA    
Wf
-
-
-C
''))CclBL1111111r   z data, periods, windows, expectedr2      )r2         )r2   r6   g    .Ar   )indirectc                     t          | ||          }|                                }|j        j        dk    r|j        j        d         n|j        j        }||k    sJ d S )Nr#   r$   windowsr5   )r   r%   r)   ndimshape)r   r$   r;   expectedr-   r.   n_seasonal_componentss          r   "test_number_of_seasonal_componentsr@   ,   si     T7G
<
<
<C
''))C!$!2Q!6!61CL<M  !H,,,,,,r   zperiods, windows)r1   r5   )   r1   c                     t          j        t          d          5  t          g d| |           d d d            d S # 1 swxY w Y   d S )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 F 	???GWEEEEF F F F F F F F F F F F F F F F F Fs   >AAzdata, lmbdag?g      autoc                 V    d}t          | ||          }|                                 d S )Nr!   r6   rA   r#   r$   lmbdar   r%   )r   rM   r$   r-   s       r   test_fit_with_box_coxrO   K   s.     G
T7%
8
8
8CGGIIIIIr   c                     d}t          | |d          }|                                 t          |d          sJ t          |j        t
                    sJ d S )NrK   rI   rL   	est_lmbda)r   r%   hasattrr&   rQ   float)r   r$   r-   s      r   test_auto_fit_with_box_coxrT   V   s\    G
T7&
9
9
9CGGIII3$$$$$cmU+++++++r   c                 x    dddddddddddddd	}d
}t          | |d|          }|                                 d S )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   ^   sl     J G
G6j  C GGIIIIIr   c                     t          | d          }|                                }|                                 t          |d          }|                                }|                                 d S r    )r   r%   plot)r   r   close_figuresr-   r.   s        r   	test_plotri   u   s^    
T1
%
%
%C
''))CHHJJJ
Wa
(
(
(C
''))CHHJJJJJr   c                 P   t          | dddddddddd          }|                                }|d         }|d         }|d	d
g         }|d         }t          |j        |           t          |j        |           t          |j        |           t          |j        |           d S )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CL"3444CI~...CL"3444CI~.....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                 n   t          | ||          }|                                }t          | ||          }|                                }t          |j        |j                   t          |j        |j                   t          |j        |j                   t          |j        |j                   d S )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_MMMD88::D/9L  D 88::D...TZ(((...TZ(((((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 7 7 7 7 7 7 7      ) ) ) ) ) ) j!!!" " "!" j!!!H H "!H j!!!  "!. . .2 2 2 &	q$	vtQ	{D!$
 X   - - - + F F	 F 
C[4)dD\D&>:X   
  
, , ,  .   / / /8  
/?N""	
 
'7>
 X    ) )!  ) ) )r   