U
    md=                      @   s~  d dl Zd dlmZmZmZmZ d dlZd dl	Z	d dl
mZ 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ddddg Zeje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#ejejg Zejejd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?ejejg Zd@dAdBdCd@dAdBdCd@dAdBdCd@dAdBdCd@dAdBdCd@dAdBdCd@dAdBdCd@dAdBdCg ZejejdDd	d
dddddddddddddddddddEdFdGdHdIdJdKejejg ZejejdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgejejg ZG dhdi diZdjdk Ze	jjdldm Zdndo Ze	jje	jdpdqdrge	jdsdtduge	jdvdwdxge	jdydwdxgdzd{ ZdS )|    N)assert_allcloseassert_almost_equalassert_equalassert_raises)seasonal_decomposeg{G:O@g{GU@gQVg      Np=
c@     i@     k@p=
ףn@     s@     8|@)\@     Z@)\<@      @R|@Rw@Rs@     p@\(l@     Xj@\(g@     h@p=
i@     g@\(d@      R@     "(\@     `B      B@     Y@p=
s`@gK7AS@gK7AQ@g{GZBgB`"WgCl{gsh|Og(\ZZ@g/Y@gx&1@gMb?gGz.@g+$gsh|@g";gQG@gʡELg/$<@gsh|_Bg{GBgOnb@g9vRgK7AU@gQk$g!rhAhgnH@g5^I&@g{G:DgOna@gM?gec]?gH}?gvq-?gp=
se@     Z@      T@gHzS@     S@      ]@     a@g\(c@gtA}˜?g37?g3?g|͍?gk?gvR~?gGZ*oG8?gAf?gQ5U?g}"O?gapI?gni5$?gG8-xW?gd@z?g]?g[[?g0/?gy?gg\8?g}ƅ!?gAJi?gcAJ?g@߾?gמY?g͍	K?g\*?gBfj?g4?c                   @   sX   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd ZdS )TestDecomposec                  C   sf   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dddd g }t |t jd!t|d"d#| _d S )$N                  I    )                Q        f           b   +   s}   i     1/1/1951Qstartperiodsfreq)pd	DataFrame
date_rangelendata)clsrS    rU   \/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/tests/test_seasonal.pysetup_class1   s8                        zTestDecompose.setup_classc                 C   s  t | jjdd}t|jtd t|jtd t|jt	d t t
| jjddd}t|jtd t|jtd t|jtd t | j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
ddd	d
ddd	g}t
jt
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%t
jt
jg}t
jt
jd&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@t
jt
jg}t|j|d t|j|d t|j|d d S )AN   period   r?   mgQQ@gzGAQ@g
ףp=TgQEKr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   gOn"R@gOn"P@gJ+6EgISgC,(g!rhPg~jX@gfffff.^@gV-g+gSe#@gffffff@gB`"{CgB`"@gx9D@g33333cDg}?5^I6@gB`";EgJ+Eg33333e@g!rhMTOn"T@g'1/gfg/4E@gx&@gJ+G)r   rS   valuesr   seasonalSEASONALtrendTRENDresidRANDOMnpabsMULT_SEASONAL
MULT_TRENDMULT_RANDOMnan)selfres_addres_multr`   rb   randomrU   rU   rV   test_ndarray;   s                                                                 zTestDecompose.test_ndarrayc                 C   s  t | jdd}| j }tjdt|dd|_t |dd}t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jjj	
 | jjj	 t t| jddd}t t|ddd}t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jj	
 td t|jjj	
 | jjj	 d S )	NrX   rY   rI   ArK   r[   r?   r\   )r   rS   copyrO   rQ   rR   indexr   r`   r_   squeezera   rb   rc   rd   re   r   rf   rg   rh   ri   rj   )rl   rm   Zfreq_override_dataZres_add_overridern   Zres_mult_overriderU   rU   rV   test_pandas\   sd    
        zTestDecompose.test_pandasc                 C   s   d}t dd t|D tj| }t|jdd}t|dd}d}d}t|j	j
 |j	||d t|jj
 |j||d t|jj
 |j||d d S )	Nd   c                 S   s   g | ]}|d  qS )r?   rU   ).0xrU   rU   rV   
<listcomp>   s     z4TestDecompose.test_pandas_nofreq.<locals>.<listcomp>r?   rY   g:0yE>g|=)atolrtol)rO   Seriesrangerf   ro   Zrandnr   r_   r   r`   rt   rb   rd   )rl   reset_randomstateZnobsZdtaZres_npresrz   r{   rU   rU   rV   test_pandas_nofreq   s$    $   z TestDecompose.test_pandas_nofreqc                 C   sT   t dddddg}t| jj|dd}t|jtd t|jt	d t|j
td d S )Ng      ?g      ?rX   )filtrZ   r[   r?   )rf   arrayr   rS   r_   r   r`   ra   rb   rc   rd   re   )rl   r   rm   rU   rU   rV   	test_filt   s
    zTestDecompose.test_filtc              "   C   s  t | jjddd}t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ddddg }ttjtjtjt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#g }ttjtjtjtjd$d%d&d'd(d)d*d+d,d-d.d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>g }t|j|d? t|j|d? t|j	|d@ t t
| jjdAddd}tdBdCdDdEdBdCdDdEdBdCdDdEdBdCdDdEdBdCdDdEdBdCdDdEdBdCdDdEdBdCdDdEg }ttjtjtjtjdFd	d
dGdddHddIddJdKdLddMddNddOddPdQdRdSdTdUdVdWg }ttjtjtjtjdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsg }t|j|d t|j|d? t|j	|d t | jjd dt ddd}tdudvdwdxdudvdwdxdudvdwdxdudvdwdxdudvdwdxdudvdwdxdudvdwdxdudvdwg}tjtjtjt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"g}tjtjtjtjdydzd{d|d}d~dddddddddddddddddddddg}t|j|d? t|j|d? t|j	|d@ d S )NrX   F)rZ   	two_sidedgq=
ף0S@gRV@g\g333333Jr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   gMbX9&@gLg rh]@gbX9a@got@g/$p@g rhT@g;OvSg#~jcgEfgKcgl1LgDl\g%C,@gw/-Lgl@g^Ia@g;OnVgw/MDg#~jig"~rgA`RG@g rh!R@gI+?U@g^IWm@gw/@g rh1Z@r[   r?   r\   gV-?gGr?gF_?gV-?g     te@g     n@g     @g     =@g     |@g     w@g     s@g     l@g     g@g     i@g     d@r#   r$   g     S@r%   r&   r'   g     c@gz6?gMb?g      ?gn?go?giq?gS:?gNbX9?g$(~k?g/L
F?g46<?gpΈ?g"~j?gn?gw/?g!rh?g镲q?gjMS?gV}b?gTN?gQ?gZd;?gtV?gŏ1w-!?g(0?gΈ @g\m?gW2ı?r]   g=
ףpMT@gQW@g|[g(\oPgx@g=
ףpNg~jl\@gƳb@gS㥛t@gQpp@g~jS@g r PgX9Țcg(\/ggʡcgNbX9lagB`"kNgQ]gS%#@g7A`EgB`"Bgq=
ף`@g%CWgoA;gX9ȢigHz7sgxE@gd;OwU@r^   gq=
ףl@gJ+C)r   rS   r_   rf   r   rk   r   r`   rb   rd   rg   )rl   rm   r`   rb   rd   rn   ro   rU   rU   rV   .test_one_sided_moving_average_in_stl_decompose   s   
                                                                                                                                                                                           z<TestDecompose.test_one_sided_moving_average_in_stl_decomposec                 C   sZ   t t ddj}t|ddj}t t jdtddj}t j |d< |d< t|| d S )N   r[      r[   rY   )Zdtyper   r]   )	rf   tilearangeTr   rb   floatrk   r   )rl   rx   rb   expectedrU   rU   rV   test_2d   s
    zTestDecompose.test_2dc                 C   s   t d}d}t||dj}t|d t j t||ddj}t|| t||ddj}t|| t|d d d f |ddj}t|| t t ddj}t||d	dj}t|| t||ddj}t|| d S )
N   rX   rY   r      )rZ   extrapolate_trendrN   r   r   )	rf   r   r   rb   r   rk   r   r   r   )rl   rx   rN   rb   rU   rU   rV   test_interpolate_trend   s*    




z$TestDecompose.test_interpolate_trendc                 C   sP   t tt| jj t tt| jddd | jt }tj	|j
d< t tt| d S )Nr\   rX   rY   r[   )r   
ValueErrorr   rS   r_   Zastyper   rr   rf   rk   Ziloc)rl   rx   rU   rU   rV   test_raises  s    zTestDecompose.test_raisesN)__name__
__module____qualname__classmethodrW   rp   ru   r   r   r   r   r   r   rU   rU   rU   rV   r(   0   s   
	!#Pr(   c              	   C   s  t jdddd}ttdd d tj }|tj|j7 }t j	|d|d}t
t t| W 5 Q R X t jddd	d}ttdd d tj }|tj|j7 }t j	|d|d}t
t t| W 5 Q R X t
t t|jdd
 W 5 Q R X d S )Nz
2000-01-31rX   rJ   )rM   rN   r[   y)namers   r   MrY   )rO   rQ   rf   sinr   piro   Zstandard_normalsizer|   pytestZraisesr   r   r_   )r~   datesr   rU   rU   rV   !test_seasonal_decompose_too_short  s    r   c               "   C   s~   t 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dddd g } t| d!d" t| tjd#t| d$d%}t| d S )&Nr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rX   rY   rI   rJ   rK   )rf   r   r   rO   rP   rQ   rR   )rx   rS   rU   rU   rV   test_seasonal_decompose_smoke"  s<                        r   c               "   C   s   t 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dddd g } t j| | f } t| d!d"}t|jd d d#f |jd d d$f  t|jd d d#f |jd d d$f  t|jd d d#f |jd d d$f  d S )%Nr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rX   rY   r   r   )rf   r   c_r   r   rb   r`   rd   )rx   r   rU   rU   rV    test_seasonal_decompose_multiple0  s:                        &&r   modelZadditiveZmultiplicativerN   rX   r   r   TFr   c              "   C   s   t 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dddd g }|| d! 8 }t j|d"d  |d d" f }t j||f }t||||d#}|  d S )$Nr)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   r   )rZ   r   r   )rf   r   minZr_r   r   Zplot)r   rN   r   r   rx   Zx2r   rU   rU   rV   test_seasonal_decompose_plot;  s>                        r   )numpyrf   Znumpy.testingr   r   r   r   ZpandasrO   r   Zstatsmodels.tsa.seasonalr   ra   rk   rc   re   rh   ri   rj   r(   r   markZsmoker   r   Z
matplotlibZparametrizer   rU   rU   rU   rV   <module>   sf                                                                                                                                 a
