
    !g                        d dl mZ d dlZ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mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ  ej8                  d      d        Zd Zej>                  j@                  d        Z!edddfeddifedddfei fgZ"e"dd Z"e"D  cg c]"  }  e#| d          jI                  d      d   dd $ c} Z%ej>                  jM                  de"e%      ej>                  jM                  dg d      d                Z'd! Z( ej8                  d"      d#        Z)d$ Z*ej>                  jM                  d%ddg      d&        Z+yc c} w )'    )	MONTH_ENDN)assert_allclose)AutoReg)ARIMA)PredictionResults)Fourier)ETSModel)STLForecast)STLDecomposeResult)ExponentialSmoothingmodule)scopec           	         t         j                  j                  d      }|j                  d      }t	        j
                  dt        d      }t        dd      }|j                  |      }t        j                  t        j                  |t        j                  dgdgg      z              }t        dd      D ]  }||xx   d||dz
     z  ||   z   z  cc<     t	        j                  ||	      S )
Nih:i  z1980-1-1)freqperiods         g?)index)nprandomRandomStatestandard_normalpd
date_ranger   r   	in_samplesqueezeasarrayarrayrangeSeries)requestrserrr   fouriertermsdetis           g/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/forecasting/tests/test_stl.pydatar+      s    			y	)B


S
!CMM*9cBEb!nGe$E
**RZZ1#s(< <=
>C1c] ,A#AE
"SV++,99S&&    c                    t        | t        ddi      }|j                  i       }|j                  d       t	        |j                         j                         t              sJ t	        |j                  t              sJ t	        |j                  t              sJ t	        |j                  t              sJ t        |j                  d      sJ y )Norderr   r   r   model_kwargs
fit_kwargs%   forecast)r
   r   fitr5   
isinstancesummaryas_textstrstlr   resultr   modelhasattrmodel_result)r+   stlfress      r*   
test_smokerB   "   s    tU'91EFD
((b(
!CLLckkm++-s333cggs###cjj/222cii'''3##Z000r,   c                    t        | t        ddi      }|j                  i       }|j                  j	                         }|j
                  d   j                         }|j                  |j
                  d         }t        |      dk(  sJ y )Nr.   r/   r0   r2   r   r      )	r
   r   r6   r<   plotaxesget_shared_x_axesget_siblingslen)r+   r@   rA   pltgrouper_viewsibss         r*   test_sharexrM   -   ss    tU'91EFD
((b(
!C
**//
C88A;002L$$SXXa[1Dt9>>r,   r/   c)r.   trendrO   Tr   F)lags	old_names.config)idshorizon)r         c                    |\  }}t        |       }|j                         }| |j                  z
  } ||fi |}i }	|t        u rd|	d<    |j                  di |	}
t	        | ||      j                  |	      }t        j                  |j                        dd  }t        j                  |d|dz  z         }|
j                  |      |d | z   }|j                  |      }t        ||d	       t        |
d
      sy |j                  | j                  d   | j                  d   |z   dz
        }t        |t              sJ t        |j                  |d	       | j                  d   dz  }|j                  || j                  d   |z   dz
         |j                  || j                  d   |z   dz
  d       |j                  || j                  d   |z   dz
  |dz         t        | d      r| j                   ||dz  z      }|j                  || j                  d   |z   dz
  |j#                  d            }|j                  || j                  d   |z   dz
  |j%                               }|j                  || j                  d   |z   dz
  |      }t        |j                  |j                  d	       t        |j                  |j                  d	       y y )NFdispr0   r2   ir   r   g-C6?)rtolget_predictionr   r   T)dynamicr   z%Y-%m-%d )r   r6   seasonalr	   r
   r   r   tiler5   r   r>   r]   shaper7   r   predicted_meanr   strftimeto_pydatetime)r+   rU   rW   r=   kwargsr;   stl_fitresidsmod	fit_kwargrA   r@   r`   fcastactualpredhalflocabrN   s                        r*   test_equivalence_forecastrr   A   s    ME6
d)CggiGG$$$F

!&
!CI!	&
#''
I
CtU8<< = D zz'**+CD1HwwxW]!23HLL!HXg$66E]]7#FFE-3()tzz!}djjmg.E.IJDd-...D''T:::a=ADdjjmg59:djjmg594Hdjjmg59419MtWjj	)*$**Q-')A-s||J7O   
 $**Q-')A-s7H7H7J   
 djjmg&=&A3O((!*:*:F((!*:*:F r,   c                     G d d      t        j                  t        d      5  t        |        d d d         G fdd      }t        j                  t        d      5  t        | |      j	                          d d d         G d d	       G fd
d      }t        j                  t        d      5  t        | |      j	                         j                          d d d         G d d       G fdd      }t        j                  t        d      5  t        | |      j	                         j                          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   y xY w)Nc                       e Zd Zd Zy)!test_exceptions.<locals>.BadModelc                      y Nr_   selfargsrf   s      r*   __init__z*test_exceptions.<locals>.BadModel.__init__p       r,   N__name__
__module____qualname__r{   r_   r,   r*   BadModelru   o       	r,   r   zmodel must exposematchc                       e Zd Z fdZy)#test_exceptions.<locals>.NoForecastc                             S rw   r_   )ry   rz   rf   r   s      r*   r6   z'test_exceptions.<locals>.NoForecast.fitw   s    :r,   Nr~   r   r   r6   )r   s   r*   
NoForecastr   v   s    	r,   r   zThe model's resultc                       e Zd Zd Zy)"test_exceptions.<locals>.BadResultc                      y rw   r_   rx   s      r*   r5   z+test_exceptions.<locals>.BadResult.forecast~   r|   r,   N)r~   r   r   r5   r_   r,   r*   	BadResultr   }   r   r,   r   c                       e Zd Z fdZy)"test_exceptions.<locals>.FakeModelc                             S rw   r_   )ry   rz   rf   r   s      r*   r6   z&test_exceptions.<locals>.FakeModel.fit   s    ;r,   Nr   )r   s   r*   	FakeModelr      s    	r,   r   zThe model result does notc                       e Zd Zd Zy))test_exceptions.<locals>.BadResultSummaryc                     t               S rw   )objectrx   s      r*   r8   z1test_exceptions.<locals>.BadResultSummary.summary   s	    8Or,   N)r~   r   r   r8   r_   r,   r*   BadResultSummaryr      s    	r,   r   c                       e Zd Z fdZy))test_exceptions.<locals>.FakeModelSummaryc                             S rw   r_   )ry   rz   rf   r   s      r*   r6   z-test_exceptions.<locals>.FakeModelSummary.fit   s    #%%r,   Nr   )r   s   r*   FakeModelSummaryr      s    	&r,   r   zThe model result's summary)pytestraisesAttributeErrorr
   r6   r8   	TypeError)r+   r   r   r   r   r   r   s       @@@r*   test_exceptionsr   n   s:     
~-@	A $D(#$X  
~-A	B ,D*%))+, H  
~-H	I 5D)$((*22459 &8 & 
y(D	E <D*+//199;< <;$ $, ,5 5< <s/   E&E;)E*)E6EE'*E36E?functionc                      t         j                  j                  j                         j                  } t        j                  | j                  d         | _        | j                  d d df   S )Nr   )
statsmodelsdatasetssunspotsload_pandasr+   r   arangerb   r   iloc)dfs    r*   r   r      sL    				&	&	2	2	4	9	9Byy!%BH771a4=r,   c                     t        | t        ddid      }|j                         }|j                         }|j                  j
                  dk(  sJ |j                  j
                  dk(  sJ y )Nr.   )r   r   r      )r=   r1   period)i5  )r
   r   r6   r]   rc   rb   var_pred_mean)r   
stlf_modelstlf_resrm   s       r*   test_get_predictionr      sj    Wi,@J ~~H""$D$$...##v---r,   not_implementedc                 v    G fdd       G fdd       G fdd      }t        | |d      }|j                         }t        j                  t        d	
      5  |j                         }d d d        t        j                  t        j                  j                              sJ y # 1 sw Y   >xY w)Nc                       e Zd Z fdZy)#test_no_var_pred.<locals>.DummyPredc                 N    || _         || _        d }rt        |      | _        y y )Nc                      t         rw   )NotImplementedErrorr_   r,   r*   fz7test_no_var_pred.<locals>.DummyPred.__init__.<locals>.f   s    ))r,   )rc   
row_labelspropertyr5   )ry   rc   r   r   r   s       r*   r{   z,test_no_var_pred.<locals>.DummyPred.__init__   s,    "0D(DO*  ( r,   Nr}   )r   s   r*   	DummyPredr      s    	,r,   r   c                   $    e Zd Zd Zd Z fdZy)"test_no_var_pred.<locals>.DummyResc                     || _         y rw   )_res)ry   rA   s     r*   r{   z+test_no_var_pred.<locals>.DummyRes.__init__   s	    DIr,   c                 :     | j                   j                  |i |S rw   )r   r5   rx   s      r*   r5   z+test_no_var_pred.<locals>.DummyRes.forecast   s    %499%%t6v66r,   c                 v     | j                   j                  |i |} |j                  |j                        S rw   )r   r]   rc   r   )ry   rz   rf   rm   r   s       r*   r]   z1test_no_var_pred.<locals>.DummyRes.get_prediction   s5    +499++T<V<DT00$//BBr,   N)r~   r   r   r{   r5   r]   )r   s   r*   DummyResr      s    		7	Cr,   r   c                       e Zd Zd Z fdZy)"test_no_var_pred.<locals>.DummyModc                 $    t        |      | _        y rw   )r   _mod)ry   ys     r*   r{   z+test_no_var_pred.<locals>.DummyMod.__init__   s    aDIr,   c                 L     | j                   j                  |i |} |      S rw   )r   r6   )ry   rz   rf   rA   r   s       r*   r6   z&test_no_var_pred.<locals>.DummyMod.fit   s&    $))--00CC= r,   N)r~   r   r   r{   r6   )r   s   r*   DummyModr      s    	!	!r,   r   r   )r=   r   zThe variance ofr   )
r
   r6   r   warnsUserWarningr]   r   allisnanr   )r   r   r   stl_modstl_resrm   r   r   s    `    @@r*   test_no_var_predr      s    	, 	,
C 
C! ! ((2>GkkmG	k):	; (%%'(66"((4--.///( (s   !B//B8),statsmodels.compat.pandasr   numpyr   numpy.testingr   pandasr   r   statsmodels.datasetsr   statsmodels.tsa.ar_modelr   statsmodels.tsa.arima.modelr   statsmodels.tsa.base.predictionr   statsmodels.tsa.deterministicr   )statsmodels.tsa.exponential_smoothing.etsr	   statsmodels.tsa.forecasting.stlr
   statsmodels.tsa.seasonalr   r   0statsmodels.tsa.statespace.exponential_smoothingr   fixturer+   rB   mark
matplotlibrM   MODELSr:   splitIDSparametrizerr   r   r   r   r   )rN   s   0r*   <module>r      s   /  )    , - = 1 > 7 9
 h	'  	'1   i#./GT?+qu-.rN	
 
.45s1Q4ysB$5 6s3J/(G 0 4(GV#<L j! ". *T5M:$0 ;$0S 6s   &'E