
    ,YHhf                     d   d Z ddlZddlZddlmZmZmZm	Z	 ddlm
Z ddlmZ ddlmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z# ed      Z$e$jK                  d      Z& ejN                  g d      Z( ed      Z) e       Z* e       Z+d Z,d Z-d Z.e!j^                  ja                  d ed       ed       edd      g      d        Z1e!j^                  ja                  d e!jd                   e,d       ed      ddd       e!jd                   e,d       ed      d d!d      g      d"        Z3e!j^                  ja                  d ed       ed       edd      g      e!j^                  ja                  d#de$jK                  e*jh                  d   d      g      e!j^                  ja                  d$dd%g      d&                      Z5d' Z6e!j^                  ja                  d(dd%g      e!j^                  ja                  d)d*e6g      d+               Z7d, Z8d- Z9d. Z: G d/ d0      Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAe!j^                  ja                  d7 e!jd                  d8d9       e!jd                  d:d9       e!jd                  d:d      g      d;        ZBd< ZCd= ZDd> ZEd? ZFe!j^                  ja                  d ed8       ed@       ed@dA      g      dB        ZGdC ZHe!j^                  ja                  d ed8       ed:      g      dD        ZIdE ZJy)Fz
Tests of the ARIMA class
    N)ARIMA
auto_arima	AutoARIMAARMAtoMA)_validation)pytest_error_str)	load_lynxload_wineindload_heartrate)RandomState)assert_array_almost_equalassert_almost_equalassert_allclose)apimean_squared_error*      )2gy:W@g{L@g0<@gl?3H@gd@g9@g(]@gp̲'@g\o@@g_sa7@g5}vu@g`sp@gc@gdVq@gq@gb0%@g Ac@g_iN^D@gikD0@g@gаu@g^) @gz3j@g@g@gܴ
@gIY@g[@gAm@gP@gu@gd@g{2蛔@gJ'L5@gVLI@g*@gG67@g$@gۤ@ggez@gyj8@gR+@gx@g9@g6>@g@m@gSrc@g1%"@g;%@gQ@T)	as_seriesc                     g }t        j                  ddd      }t        |       D ]*  }|j                  |t        j                  |      z          , t        j                  t        |       |      S )z:Helper fn to create a monotonic series with Datetime indexi     )days)index)datetimedaterangeappend	timedeltapdSeries)ntime_columnr   is       X/var/www/html/planif/env/lib/python3.12/site-packages/pmdarima/arima/tests/test_arima.pyseries_with_dt_indexr%   7   sa    K==q!$D1X >4("4"4!"<<=> 99U1X[11    c                  @   t        dd      } | j                  t              }| j                  J t	        | j                         dd       | j                         d   }t	        |dd       t	        | j                         d	d
       t	        | j                         dd
       t        j                  g d      }t        ||       t        j                  ddgddgddgddgddgddgddgddgddgddgg
      }| j                  ddd      \  }}t        ||       y )Nr   r   r   Tordersuppress_warningsgxf&@   decimalr   gMbX9?gSW~'@   gH<2G+@)
O 6?r0   r0   r0   r0   r0   r0   r0   r0   r0   g6\_gjI.?
   皙?	n_periodsreturn_conf_intalpha)r   fit_predicty
oob_preds_r   aicparamsaiccbicnparrayr   predict)armapreds	interceptexpected_predsexpected_intervals_	intervalss          r$   test_basic_armarH   B   s9   yD9DQE ??""" 
FA6 a I	5!4		Xq9
$6B XX + ,N e^4 	j!	j!	j!	j!	j!	j!	j!	j!	j!	j!#  <<"d&*   ,LAyi);<r&   c                  |   t        j                  g d      } t        ddd      }|j                  |        t	        dd      j                  |        t         j
                  j                  d      j                  | j                  d   d	      }t        | |ddd
       t	        dd      j                  | |       y )N)g     @@g      F@g      M@g     H@g      G@g     X@g     @X@r   FT)out_of_sample_sizeseasonalr+   r   r   r   r*   rJ   r      )XrJ   rK   r+   rO   )
r>   r?   r   fitr   randomr   randshaper   )vecarmrO   s      r$   test_issue_30rW   n   s    
((6
7C
q5&*,CGGCL 
	a044S9 			a %%ciilA6AsaA!%'
 
	a044SA4>r&   modelrN   r   r   r*   )rN   r   r   )r   r   r      )r*   seasonal_orderc                     | j                  t               t        j                  d   }| j                  dd      \  }}|j                  d   |k(  sJ |j                  |dfk(  sJ y )Nr   Tr2   )r5   r6   rN   )rQ   wineindrT   predict_in_sample)rX   expected_m_dimrB   confintss       r$   test_predict_in_sample_conf_intrb      sd     
IIg]]1%N--d$-OOE8;;q>^+++>>na0000r&   zy,model,start,end,exp_len   rL   rN   r/      2022010320220106c                 t    |j                  |        |j                  ||      }|j                  d   |k(  sJ y )N)startendr   )rQ   r_   rT   )r8   rX   rh   ri   exp_lenrB   s         r$   $test_predict_in_sample_non_int_indexrk      s:    * 
IIaL##%S#9E;;q>W$$$r&   rO   ra   Fc                     | j                  t        |       | j                  ||      }|r!t        |t              rt        |      dk(  sJ y t        |t        j                        sJ y )NrP   r5   rN   )rQ   r^   r_   
isinstancetuplelenr>   ndarray)rX   rO   ra   ress       r$   test_predict_in_sample_Xrs      s\     
IIgI

!
!!X
!
>C#u%#c(a-77-#rzz***r&   c                      t        | |      dz  S )z8A custom loss to test we can pass custom scoring metricsrN   r   )y_truey_predrF   s      r$   _two_times_mserw      s    ff-11r&   as_pdscoringmsec                 d   t         }t        j                  j                  d      j	                  t         j
                  d   d      }| r8t        j                  j                  |      }t        j                  t               }t        dd|d      j                  ||      }|j                          y )	Nr   r   r,   rN   r   rN   Tr1   r*   r+   ry   rJ   r8   rO   )hrr>   rR   r   rS   rT   r   	DataFramefrom_recordsr    r   rQ   oob)rx   ry   endogrO   arimas        r$   test_with_oob_and_Xr      s     E
		a %%bhhqk15ALL%%a(		"	$(!%') *-u): 
 
IIKr&   c                     t        dddd      j                  t              } | j                         }t	        j
                  |      rJ | j                  }|j                  d   dk(  sJ t        j                  d      } |t        dd  |      |k(  sJ t        ddd	
      j                  t              } t	        j
                  | j                               sJ t        j                  t              5  | j                  d       d d d        | j                  d      }t        j                  t              5  t        dd      j                  t               d d d        y # 1 sw Y   ^xY w# 1 sw Y   y xY w)Nr|   Trz   r1   r}   r8   r   r*   r+   rJ   5r4   r/   i  rM   )r   rQ   r   r   r>   isnanr9   rT   valget_scoring_metricpytestraises	TypeErrorr@   
ValueError)r   r   	oob_predsry   rF   s        r$   test_with_oobr      sR   	$(%') *-r 

 ))+Cxx}   I??1###$$U+G2cd8Y'3... 	T%')),r 
88EIIK    
y	! %$% 	"A 
z	" @I$7;;B?@ @% %@ @s   5E%;!E1%E.1E:c                     t         j                  t        j                  d   d      } t	        ddd      j                  t        |       }|j                         }t        j                  |      rJ t        j                  |j                  j                  j                  t        d	      sJ |j                  j                  j                  j                  d   t        j                  d   k(  sJ t        j                  |j                  j                  j                  | d	      sJ |j                  j                  j                  j                  d   | j                  d   k(  sJ t	        ddd      j                  t        d d
 | d d
d d f         }t        j                   |j"                        }|j%                  d| d
d d d f         }t        j                  | |t        d
d  |      d	      sJ t         j                  dd      }t        j                  |j'                         |j'                         d	      rJ |j%                  d|      }|j%                  d|      }t)        j*                  t,              5  t/        ||       d d d        t)        j*                  t0              5  |j3                  t        d
d  d        d d d        t)        j*                  t0              5  |j3                  t        d
d  |       d d d        t)        j*                  t0              5  |j3                  t        d
d  |d d d df          d d d        |j3                  t        d
d  | d
d d d f          t        j                  ||j%                  d|      d	      sJ 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)Nr   rd   r|   Tr1   r   r~   {Gz?rtolr   r4   rO   r/   rN   )rsrS   r   rT   r   rQ   r   r>   r   allclose
arima_res_datar   rX   exogr   r   ry   r@   r;   r   r   AssertionErrorr   r   update)	xregr   r   arima_no_oobry   rB   	xreg_testwith_oob_forecastsno_oob_forecastss	            r$   test_oob_for_issue_28r      sT   77288A;"D	$(%')),
 *- * 

 ))+Cxx} ;;u'',,22BTBBB!!''--a0BHHQK??? ;;u'',,114dCCC!!&&,,Q/4::a=@@@ 4!cBtH$(#qM " 3 
 $$\%9%9:G  2cdAg ?E;;sGBstHe44@@@ 1I{{5<<><+>+>+@tLLL i@#++a.7 , 9 
~	& H!"46FGH 
z	" ,BstHd+, 
z	" 1BstHi01 
z	" 8BstHi2A2&678 34$stQw-0;;)#++a9+E " " ")H H, ,1 18 8s0   N"3N/.N;)#O"N,/N8;OOc                     t         j                  t        j                  d   d      } t	        dddd      j                  t        |       }t	        ddddd	
      j                  t        d d | d dd d f         }|j                         }t        j                  |j                        }|j                  d| dd d d f         }t        j                  | |t        dd  |      d      sJ t        j                  |j                         |j                         d      rJ t         j                  dd      }|j                  t        dd  | dd d d f          t        j                  |j                  d|      |j                  d|      d      sJ t        j                  |j                         |j                               sJ |j                  d|d	      \  }}t        d ||fD              sJ y )Nr   rN   r   r   r   r   r   r   r[   r/      )r*   r\   maxiterrJ   r~   T)r*   r\   rJ   r   r+   ir   r   r   rm   c              3   P   K   | ]  }t        |t        j                           y w)N)rn   r>   rq   ).0as     r$   	<genexpr>z#test_oob_sarimax.<locals>.<genexpr>c  s     @Qz!RZZ(@s   $&)r   rS   r^   rT   r   rQ   r   r   r   ry   r@   r>   r   r;   r   all)	r   rQ   
fit_no_oobr   ry   no_oob_predsr   rB   confs	            r$   test_oob_sarimaxr   >  s   777==#Q'D
i,#%' (+sWs'= 
 Y&3*+ )-	/ 03sWTc]59$3$'] 03 0D	  '')C $$Z%7%78G%%d347m%DL;;sGGCDM<@tLLL {{3::<):):)<4HHH 1IgcdmT#$']3;;s{{1i0!))!Y7 " " "
 ;;szz|Z%6%6%8999 ++aD+AKE4@5$-@@@@r&   c                       e Zd Zej                  j
                  j                         j                  Z e	j                  ej                  j                  j                  dd            e_        ed= ej                   j#                  d      j%                  ej&                  d   d      Zej,                  j/                  dddg      ej,                  j/                  dddg      ej,                  j/                  d	ed
g      d                      Zy
)TestIssue2917002008YEARr   r   r,   dcvrO   Nc                     t        d|df|      j                  | j                  |      }||d dd d f   }nd }|j                  dd|      \  }}y )NrN   r   rM   rP   r,   T)r4   r5   rO   )r   rQ   dtar@   )selfr   r   rO   rX   xrrF   s          r$   test_oob_for_issue_29z!TestIssue29.test_oob_for_issue_29p  sc     Q1I)+--0SQS-? 	 =2A2q5BB}}q$"}E1r&   )__name__
__module____qualname__smdatasetssunspotsload_pandasr   r   r   Indextsa	datetoolsdates_from_ranger   r>   rR   r   rS   rT   r   r   markparametrizer    r&   r$   r   r   i  s    
++


*
*
,
1
1C))::66JKCIF99  #((1q9D[[S1a&)[[TAq6*[[S4,/F 0 + *Fr&   r   c                 <    h d}|D ]  } t        | |               y )N>   r:   r=   bser<   hqicresidr;   arrootsmarootspvaluesarparamsconf_intdf_modeldf_residmaparamsfittedvalues)getattr)r   attrsattrs      r$   _try_get_attrsr     s)    E  tr&   c                  .   t        dd      j                  t              } t        |        t        j                  t        j                  d   d      }t        dd      j                  t        |      } t        |        t        j                         5 }t        j                  j                  |d      }t        |d	      5 }t        j                  | |       d d d        t        j                  d
d      }| j                  d
|      }t        |d      5 }t        j                   |      }d d d        j                  d
|      }t#        ||       d d d        t%        j&                  t(              5  | j                  d
d        d d d        t%        j&                  t(              5  | j                  d
t        j                  d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   xxY w# 1 sw Y   y xY w)Nr|   Tr)   r   r   rd   r~   zsome_temp_file.pklwbr/   r   rb)r   rQ   r   r   r   rS   rT   tempfileTemporaryDirectoryospathjoinopenpickledumpr@   loadr   r   r   r   )	r   r   tdirflpnew_xreg_predsother_other_predss	            r$   test_more_elaborater     s   	T:>>>DE5 77288A;"D	T:>>t>LE5		$	$	& 8$
 WW\\$ 45"d^ 	"qKKq!	" 771a=h7 "d^ 	#qKKNE	# }}qH}=!&,7'8. 
z	" +T*+
 
z	" 4RWWQ]34 4-	" 	"	# 	#8 8.+ +
4 4sT   -G3G=G3G','G34G?)(HG$	G3'G0	,G33G<?HHc                     t        ddd      j                  t              } t        d| j	                         z
        dk  sJ t        d| j                         z
        dk  sJ t        d| j                         z
        dk  sJ | j                         }t        |d	d
gd       | j                         }t        |dgd       t        t        dddddddd	      } t        d| j	                         z
        dk  sJ y )N)rN   r   r   cTr*   trendr+   g`@g      ?      g+g+eXϿr,   r-   g3ı.n?r/   d   Fignore)max_pmax_dmax_q	max_orderrK   r   r+   error_actiong)\`@)r   rQ   abcabsr:   r<   r=   r   r   r   r   )rQ   r   r   s      r$   test_the_r_srcr    s    
isd
C
G
G
LC uswwy !C''' sSXXZ 3&&& sSWWY#%%% ||~H7G"4a@||~H6(A6 S!s#3$"*,C v	!"S(((r&   c                  l   t        ddd      j                  t              } t        |        t	        | j                         dz
        dk  sJ t	        | j                         dz
        dk  sJ t	        | j                         d	z
        dk  sJ | j                          | j                  d
dd       y )Nr   r   T)r*   r\   r+   r   i  r   i  i  r1   r2   r3   )
r   rQ   r^   r   r  r:   r<   r=   r_   r@   )rQ   s    r$   test_with_seasonalityr    s    
i,"&((+g  3 swwy4 3&&& sxxzD !C''' swwy4 3&&&  KK"d$K?r&   c                  p   t        ddd      } | j                  t               t        j                         5 }t
        j                  j                  |d      }t
        j                  j                  |d      }t        j                  | |       t        j                  d       t        j                  | |d	       t        j                  |      }t        j                  |      }|j                  d
      }|j                  d
      }t        j                  ||      sJ 	 d d d        y # 1 sw Y   y xY w)Nr(   r   Tr   z	first.pklz
second.pkl      ?rN   )compressr/   r   )r   rQ   r8   r   r   r   r   r   joblibr   timesleepr   r@   r>   r   )r   r   file_afile_bloaded_aloaded_bpred_apred_bs           r$   test_double_pickler    s    	EE	IIaL		$	$	& +$ dK0dL1 	E6"
 	

3 	E6A. ;;v&;;v&!!A!.!!A!.{{66***-+ + +s   C*D,,D5c                  >   t        ddd      } dD ]  \  }}}|r| j                  t               |dk(  rt        | d       n|dk(  rd	| _        t        j                         5 }t        j                  j                  |d
      }t        j                  | |       |r8t        j                  t              5  t        j                  |      }d d d        nt        j                  |      }|rj!                  d       d d d         y # 1 sw Y   (xY w# 1 sw Y   xY w)Nr(   r   Tr   ))r   FF)rN   TT)r,   TTrN   pkg_version_r,   z0.0.1z	model.pklrd   r   )r   rQ   r8   delattrr  r   r   r   r   r   r
  r   r   warnsUserWarningr   r@   )r   casedo_fitexpect_warningr   pickle_filerV   s          r$   test_for_older_versionr    s    	EE): )$fn
 IIaL 19E>*QY!(E((* 	)d'',,t[9KKK{+ \\+. 3 ++k2C3 3 kk+. a(	) 	))*3 3	) 	)s%   !AD3D	2DDDD	zorder,seasonal)r   r   r   r   r   r   r   r   r   r   c                     d }dD ]h  }t        | ||      j                  t              }|s|j                         j                  d   }D|j                         j                  d   |dz   k(  rhJ  y )N)FT)r*   r\   with_interceptr   r   )r   rQ   lynxr;   rT   )r*   rK   n_paramsrC   modls        r$   test_with_interceptr%  <  sv     H" 	:	5$,$-//2s4y 	 {{}**1-H ;;=&&q)X\999	:r&   c                      t         d d } t        | dddddddddddddd      }t        |j                         t              sJ y )NZ   r   r/   Tr1   r   start_pstart_qstart_Pstart_Qr   r   max_Pmax_QrK   stepwiser+   Dmax_Dr  )r"  r   rn   to_dictdict)trainr$  s     r$   test_to_dict_returns_dictr5  U  sP    "IEeQ1aQaq4#tr#+-D dllnd+++r&   c                      t        d      } t        j                  t              5  | j	                          d d d        y # 1 sw Y   y xY w)Nr  rZ   )r   r   r   AttributeErrorr2  )r$  s    r$   2test_to_dict_raises_attribute_error_on_unfit_modelr8  ^  s6    y!D	~	&   s   A  A	c                     t         d d } t        | dddddddddddddd      }t        j                  g d      t        j                  g d	      d
dt        j                  dddt        j                  g d      t        j                  g d      d
}|j                         }|j                         |j                         k(  sJ t        |d   |d   d       t        |d   |d   d       |d   |d   k(  sJ |d   |d   k(  sJ t        j                  |d         sJ t        |d   |d   d       t        |d   |d   d       t        |d   |d   d       t        |d   |d   d       t        |d   |d   d       y ) Nr'  r   r/   Tr1   r   r(  )gǝQ`?gg<=M3gIY=gU衃<)ZgٲזqgQYrg\:"sgtl)	sg.jZ6v`@g	S>@g,@gZP@gkNhgr/&fgv%XkYgw x@gSsg~Ձg甙g$30Uy@għyg/q̏@g!{g1trg/(3Z@geg!cg?g)bh;vgS=dgM;&@g[t.@g9g: EY^@g~bg6G!mgFJvgnyngs@gɺL@gw\`ZA@g@m|kg/Egc;7]@grmYxgghôqgǃhk{@g@ڐ@gKM@gB[gIf7+q~gKGp@gk WgƆg(HKiAg\0~jj@gLwgb@gfr:g3?igxgx@]͏wg.$g>xwg,Jvg	jy@gIi@gzAA@g)B}g^@Q}g{"}@g}'^<sgDDg_g:4vgC}`Vg>18F,q@g a2@gy˴Ȝg&}+gi;ߕ@gUsg%+izgCZErg֢;g. p@g5{/@gjSe\tg[@gm)@gd(1`g
z@g;f]rY   r  g>m>?@gN lA@gvg@)gQќGl@gG=ܱ?g58?g̖3@)g qWb̅@gH	{?gbcgDl'(A)
r   r   r*   r\   r   r:   r<   r=   r   r;   r   r-   r   gMbP?r   r*   r\   r   r:   r<   r=   r   r;   r,   )
r"  r   r>   r?   nanr2  keysr   r   r   )r4  r$  expectedactuals       r$   test_to_dict_is_accurater>  e  s   "IEeQ1aQaq4#tr#+-D
 88 = >*+0 &vv!"!xx 9 :(( = >G%HN \\^F;;=HMMO+++y)8I+>JF7OXg%6TB'?hw////"#x0@'AAAA88F5M"""uxBv(8!DuxBF5M8E?>x((8*<aHr&   c                     t        dd      j                  t              } t        j                         5 }t
        j                  j                  |d      }t        j                  | |       t        j                  |      }|j                         }t
        j                  j                  |d      }t        |d      5 }t        j                  | |       d d d        t        |d      5 }t        j                  |      }d d d        |j                         }d d d        t               y # 1 sw Y   XxY w# 1 sw Y   :xY w# 1 sw Y   .xY w)Nr(   Tr)   z
joblib.pklz
pickle.pklr   r   )r   rQ   r8   r   r   r   r   r   r
  r   r   r@   r   r   r   )r   dirnamejoblib_pathloadedjoblib_predspickle_pathr   pickle_predss           r$    test_serialization_methods_equalrF    s   	T:>>qAE		$	$	& ('ggll7L9E;'[)~~'ggll7L9+t$ 	"KKq!	" +t$ 	$[[^F	$~~'( lL9	" 	"	$ 	$( (s<   BE=D+E(D7>E+D4	0E7E 	<EEr   r   rN   r   c                     t         }|d d |dd  }}| j                  |       | j                  d      }| j                  |       | j                  d      }t	        j
                  ||      rJ y )N}   r   r   )r^   rQ   r@   r   r>   array_equal)rX   r   r4  testpreds1preds2s         r$   test_issue_104rN    so     E+uST{4E	IIe]]S])F	LL]]S])F ~~ff----r&   c                      t        d      } | j                  t               t        j                  t
              5 }| j                  d       d d d        dt              v sJ y # 1 sw Y   xY w)NrG  rZ   r   )rh   z#In-sample predictions undefined for)r   rQ   r^   r   r   r   r_   r   )modves     r$   test_issue_286rR    s`    
i
 CGGG	z	" 'bA&'04DR4HHHH' 's   A&&A/c                     t         }|d d |dd  }}| j                  |       | j                         }| j                  |d       | j                         }t	        j
                  ||d      sJ y )Nr   r   )r   r2   )atol)r^   rQ   r;   r   r>   r   )rX   r   r4  rK  params1params2s         r$   test_update_1_iterrW    sj     E+uST{4E	IIellnG 
LLqL!llnG ;;wd333r&   c                      t        j                  ddg      } t        j                  g d      }d}t        | ||      }t        j                  g d      }t        ||d       y )Nr  g333333?)g?g333333?g?r2      )g?g?g
ףp=
?gHzG?gN@a?gq?rd   r-   )r>   r?   r   r   )armamax_degequivalent_maema_expecteds        r$   test_ARMAtoMAr_    sQ    	3*	B	'	(BGRW-M88LMLm\1Er&   )K__doc__numpyr>   pandasr   pmdarima.arimar   r   r   r   r   r   pmdarima.compat.pytestr   pmdarima.datasetsr	   r
   r   numpy.randomr   numpy.testingr   r   r   statsmodelsr   r   sklearn.metricsr   r   r
  r   r   r   r   r  r   rS   r8   r?   r  r   r^   r"  r%   rH   rW   r   r   rb   paramrk   rT   rs   rw   r   r   r   r   r   r   r   r  r  r  r  r%  r5  r8  r>  rF  rN  rR  rW  r_  r   r&   r$   <module>rk     s     A A - 3 E E $  ! .   	     _GGBK bhh $ % d#
.{2)=X?* IIIm<11  $	"	
 	 $	"	
&%'&% IIIm< tRWWW]]1-=q%ABCdE]3+ 4 D+2
 4-0UN$;< = 1 @DA"L%AVF F2
'4T)@@0+<*)Z Y- 	Y- 	Y.	
:
:,9Ix:( I 	I 	Im<	.. I I 	I44 Fr&   