U
    md+                     @   s  d dl Z d dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
 e je jeZe jeddZeeZdd ejD e_ejeje_edd	gZejd
ddgddd Zdd Zejdddd Zejdddd Zd<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*d+ Z(d,d- Z)d.d/ Z*d0d1 Z+d2d3 Z,d4d5 Z-ej.j/d6d7 Z0d8d9 Z1d:d; Z2dS )=    N)assert_allclose)STLresultszstl_test_results.csvc                 C   s   g | ]}|  qS  )strip).0cr   r   [/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/stl/tests/test_stl.py
<listcomp>   s     r
   scenarioidxmoduleTF)scopeparamsc                 C   s   | j S N)param)requestr   r   r	   robust   s    r   c            	      C   s   t jtdd} ttj| d djd d df }|}|j	d }d}t
|d|  df}t|}t
|}t
|}t||j	d |dd	d
dddddddd||||dS )Nr   zstl_co2.csv)headerr            #               )ynnpnsntnlnoninsjumpntjumpnljumpisdegitdegildegrwtrendseasonwork)ospathjoincur_dirr   Zasarraypdread_csvZilocshapezerosonesdict)		file_pathZco2r   nobsZnperiodr.   r+   r,   r-   r   r   r	   default_kwargs_base   s:    "



r;   function)r   c                   C   s   t  S r   )r;   r   r   r   r	   default_kwargs8   s    r=   c               
   C   sv   t  } | d d d }|jd }t|d| d   df}t|}t|}t|}| t||||||d | S )Nr   r   r   r   r   )r   r   r+   r,   r-   r.   )r;   r5   r   r6   r7   updater8   )kwargsr   r:   r.   r+   r,   r-   r   r   r	   default_kwargs_short=   s    



rA   c                 C   s   | d }| d }| d }| d }| d }| d }| d }| d }	| d	 }
| d
 }| d }| d }| d }t ||||||||	||
||d}|||fS )Nr   r   r    r!   r"   r(   r)   r*   r%   r&   r'   r#   r$   )endogperiodseasonalr,   low_passZseasonal_degZ	trend_degZlow_pass_degr   seasonal_jump
trend_jumplow_pass_jump)r8   )r@   r   rB   r   r    r!   r"   r(   r)   r*   r%   r&   r'   
outer_iter
inner_iterclass_kwargsr   r   r	   _to_class_kwargsL   s8    rL   c                 C   s   t | \}}}tf |}|j||d}tjd  }t|j|j t|j|j	 t|j
|j |d |j |j	 }t|j| d S )NrI   rJ   ZbaselinerB   )rL   r   fitr   loc
sort_indexr   r,   rD   r-   weightsr+   resid)r=   rK   outerinnermodresexpectedrR   r   r   r	   test_baseline_classk   s    
rX   c                 C   sb   t | \}}}tf |}|j||d}tjd  }t|j|j t|j	|j	 t|j
|j d S )NrM   shortrL   r   rN   r   rO   rP   r   rD   r-   r,   rQ   r+   )rA   rK   rS   rT   rU   rV   rW   r   r   r	   test_short_classx   s    
r[   c                 C   sj   d| d< t | \}}}tf |}|j||d}tjd  }t|j|j t|j	|j	 t|j
|j d S )Nr   r'   rM   znljump-1rZ   r=   rK   rS   rT   rU   rV   rW   r   r   r	   test_nljump_1_class   s    
r]   c                 C   sj   d| d< t | \}}}tf |}|j||d}tjd  }t|j|j t|j	|j	 t|j
|j d S )Nr   r&   rM   zntjump-1rZ   r\   r   r   r	   test_ntjump_1_class   s    
r^   c                 C   sr   d| d< d| d< t | \}}}tf |}|j||d}tjd  }t|j|j t|j	|j	 t|j
|j d S )Nr   r'   r&   rM   znljump-1-ntjump-1rZ   r\   r   r   r	   test_nljump_1_ntjump_1_class   s    
r_   c              	   C   s   t | \}}}|d }t|d d d f |d d d f f}|d }tjtdd t||d W 5 Q R X d}tjt|d t|dd W 5 Q R X tjt|d t|dd W 5 Q R X tjt|d t|d	d W 5 Q R X d S )
NrB   rC   zendog must have ndim <= 1matchrB   rC   z&period must be a positive integer >= 2r   ig      @)rL   r   Zhstackpytestraises
ValueErrorr   )r=   rK   _rB   Zendog2rC   ra   r   r   r	   test_parameter_checks_period   s    &rg   c              	   C   s   t | \}}}|d }|d }d}tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X d S )	NrB   rC   z-seasonal must be an odd positive integer >= 3r`   r   )rB   rC   rD   ig      *@rL   rc   rd   re   r   r=   rK   rf   rB   rC   ra   r   r   r	   test_parameter_checks_seasonal   s    rj   c              	   C   s   t | \}}}|d }|d }d}tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X tjt|d t||d	d W 5 Q R X d S )
NrB   rC   z?trend must be an odd positive integer >= 3 where trend > periodr`      )rB   rC   r,            3@rh   ri   r   r   r	   test_parameter_checks_trend   s    ro   c              	   C   s   t | \}}}|d }|d }d}tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X tjt|d t||dd W 5 Q R X tjt|d t||d	d W 5 Q R X d S )
NrB   rC   zElow_pass must be an odd positive integer >= 3 where low_pass > periodr`   rk   )rB   rC   rE   r   rm   rn   rh   ri   r   r   r	   test_parameter_checks_low_pass   s    rp   c              	   C   s  t | \}}}|d }|d }tjtdd t||dd W 5 Q R X tjtdd t||dd W 5 Q R X tjtdd t||dd	 W 5 Q R X tjtdd t||dd	 W 5 Q R X tjtd
d t||dd W 5 Q R X tjtd
d t||dd W 5 Q R X d S )NrB   rC   zlow_pass_jump must be a positver`   r   )rB   rC   rH   g      ?zseasonal_jump must be a positve)rB   rC   rF   ztrend_jump must be a positve)rB   rC   rG   rh   )r=   rK   rf   rB   rC   r   r   r	   test_jump_errors   s    rq   c                 C   s8   t | |\}}}|d }|d }t||d}|  d S )NrB   rC   rb   )rL   r   rN   )r=   r   rK   rf   rB   rC   rU   r   r   r	   test_defaults_smoke   s
    rr   c                 C   s   t | |\}}}tj|d dd}|d }t||d}| }t|jtjsPtt|jtjsbtt|j	tjsttt|j
tjstd S )NrB   r   namerC   rb   )rL   r3   Seriesr   rN   
isinstancer,   AssertionErrorrD   rR   rQ   )r=   r   rK   rf   rB   rC   rU   rV   r   r   r	   test_pandas  s    rx   c                 C   st   t | \}}}tf |}| }|d= |d }tjdddd}tj||d|d< tf |}| }t|j|j d S )NrC   rB   z1-1-1959i\  M)Zperiodsfreq)index)rL   r   rN   r3   Z
date_rangeru   r   rD   )r=   rK   rf   rU   rV   rB   r{   Zres_implicit_periodr   r   r	   test_period_detection  s    

r|   c              	   C   sN   t | \}}}|d= t|d |d< tjtdd tf | W 5 Q R X d S )NrC   rB   zUnable to determine period fromr`   )rL   r3   ru   rc   rd   re   r   )r=   rK   rf   r   r   r	   test_no_period  s
    r}   c                 C   sZ   t | \}}}tf |j||d}|  tj|d dd|d< tf | }|  d S )NrM   rB   ZCO2rs   )rL   r   rN   Zplotr3   ru   )r=   Zclose_figuresrK   rS   rT   rV   r   r   r	   	test_plot$  s    r~   c                 C   s   t | \}}}d|d< d |d< tf |}|d }|d }ttd| dd|   }||d dkrhdnd7 }|jd |kstd	|d< tf |}|d }|d }ttd| dd|   }||d dkrdnd7 }|jd |kstd S )
N   rD   r,   rC   g      ?r   r   r   r   )rL   r   intr   ceilconfigrw   )r=   rK   rf   rU   rC   rD   rW   r   r   r	   test_default_trend/  s     

r   c           	      C   sl   t | \}}}tf |}| }t|}t|}| }t|j|j t|j|j |j	|j	ksht
d S r   )rL   r   rN   pickledumpsloadsr   r,   rD   r   rw   )	r=   rK   rS   rT   rU   rV   ZpklZreloadedZres2r   r   r	   test_pickleD  s    


r   )F)3r/   r   numpyr   Znumpy.testingr   Zpandasr3   rc   Zstatsmodels.tsa.seasonalr   r0   dirnameabspath__file__r2   r1   r9   r4   r   columnsr   applystrr   Z	set_indexZfixturer   r;   r=   rA   rL   rX   r[   r]   r^   r_   rg   rj   ro   rp   rq   rr   rx   r|   r}   markZ
matplotlibr~   r   r   r   r   r   r	   <module>   sL   

 






