U
    md#                  	   @   s  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m	Z	m
Z
 d dlZd dlZd dlmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ zd d
lm Z! W n e"k
r   Y nX ej#jdd Z$ej#jdd Z%ej#jdd Z&ej#jdd Z'ej#jdd Z(ej#jdd Z)ej#jdd Z*ej#jdd Z+ej#jdd Z,ej#jdd Z-ej#jej#.dee/d d!d"fee/d#d$fgej#.d%d&d!gej#.d'dd(gd)d* Z0dS )+    )lmapN)BytesIO)assert_assert_equal)elnino	macrodata)
month_plotplot_acf	plot_pacfplot_predictquarter_plotseasonal_plot)arima_process)AutoReg)ARIMA)pyplotc                 C   sz   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||dd t||d	 t||d d
 d S )No         ?g쿩r   ?  d   Zdistrvs
   axlagsr   r   alpha)pltfigureadd_subplotnpr_tspArmaProcessrandomRandomStategenerate_samplestandard_normalr	   close_figuresfigr   armaarmaprocessrsacf r4   a/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/graphics/tests/test_tsaplots.pytest_plot_acf   s    


r6   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||tddd	 t||d
dd t||d dd d S Nr   r   r   r   r   r         r   r   F)r   r   zero)r   r    r:   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r	   aranger,   r4   r4   r5   test_plot_acf_irregular/   s    


r<   c                 C   sl   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||d t||d d d S )	Nr   r   r   r   r   r   r   r   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r
   r-   r.   r   r/   r0   r1   r2   pacfr4   r4   r5   test_plot_pacf?   s    


r?   c                 C   s<  t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t }t||d |j|dd	 t }	t  }
|
d}t||d
d |
j|	dd	 t }t  }|d}ddi}t|||d |j|dd	 |d |	d |d | }|	 }| }t||k t||k t||k d S )Nr   r   r   r   r   r   r   rgbaformat-)r   Zls
linestylesdashdotr   vlines_kwargsr   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r   r
   savefigseekreadr   )r-   r.   r   r/   r0   r1   r2   r>   buffZbuff_linestyleZfig_linestylebuff_with_vlinesfig_with_vlinesrG   plainZ	linestylewith_vlinesr4   r4   r5   test_plot_pacf_kwargsN   s<    







rP   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t }t||d |j|dd	 t }	t  }
|
d}d
di}t|||d |
j|	dd	 |d |	d | }|	 }t||k d S )Nr   r   r   r   r   r   r   r@   rA   rD   rE   rF   r   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r   r	   rH   rI   rJ   r   )r-   r.   r   r/   r0   r1   r2   r3   rK   rL   rM   rG   rN   rO   r4   r4   r5   test_plot_acf_kwargsw   s*    





rQ   c           
      C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}tj|d d d< t }t||dd	 |j|d
d |d t  }|d}t }	t||dd	 |j|	d
d |	d t| |	 k d S )Nr   r   r   r   r   r      Zdrop)r   missingr@   rA   r   Zconservative)r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   nanr   r	   rH   rI   r   rJ   )
r-   r.   r   r/   r0   r1   r2   r3   rK   Zbuff_conservativer4   r4   r5   test_plot_acf_missing   s&    





rU   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||tddd	 t||d
dd t||d dd d S r7   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r
   r;   r=   r4   r4   r5   test_plot_pacf_irregular   s    


rV   c                 C   sX  t  j}|jtt|d< |dj	
 }tdd |jjD }t|j|dd}t||_t|}tj|dd|_t|}tj|dd|_t|}ztd	~ t|}d
d |jd  D }ddddddddddddg}t||D ]0\}}t|tr||ks tq||kstqW 5 Q R X W n$ tjk
rR   tjdd Y nX d S )NYEARc                 S   s"   g | ]}d  |d |d gqS )rC   r8   r   )join).0xr4   r4   r5   
<listcomp>   s     z#test_plot_month.<locals>.<listcomp>zel nino)datesZylabelZMSfreqMZDE_dec                 S   s   g | ]}|  qS r4   Zget_text)rY   _r4   r4   r5   r[      s     r   JanFeb)u   MärZMrzAprZMaiJunJulAugSepZOktNovZDezz!Failure due to unsupported locale)reason)r   load_pandasdatarW   astypeintapplystr	set_indexTZunstackpdto_datetimeindexvaluesr   DatetimeIndexPeriodIndexcalendardifferent_localeZaxesget_xticklabelszip
isinstancetupleAssertionErrorlocaleErrorpytestZxfail)r-   dtar\   r.   labelsexpectedZlblexpr4   r4   r5   test_plot_month   sD    
r   c                 C   s   t  j}tdjt|jt	t
|jt	t
}t|jj| |jt|dd t|j tjt|dd|_t|j tjt|dd|_t|j d S )NQT)ZinplacezQS-Octr]   )r   rk   rl   r   rX   r|   yearrm   rn   ro   rp   Zquarterr   Zunemprv   rq   rs   rt   rw   ru   rx   )r-   r   r\   r4   r4   r5   test_plot_quarter   s    
 

r   c           
      C   s   t jd}|dd}|dt t dd t j d d d f  7 }| }t t ddd	}| }t	j
||gd
dgdj}|dd
 }ddddddddddddg}t||}| d }dd | D }	t||	 d S )Nr            g      (@r9   r8   rR   )r   r8   rl   monthsru   rb   rc   Marrd   Mayre   rf   rg   rh   Octri   Decr   c                 S   s   g | ]}|  qS r4   r`   )rY   tlr4   r4   r5   r[   '  s     z&test_seasonal_plot.<locals>.<listcomp>)r$   r(   r)   Zrandnsinr;   piZravelZtilers   Z	DataFramerr   groupbyr   Zget_axesr{   r   )
r-   r2   rl   r   Zdfgroupedr   r.   r   outputr4   r4   r5   test_seasonal_plot  s2    .
r   model_and_args   F)r   Z	old_names)r   r   r   )order
use_pandasTr    g?c              	   C   s  |\}}t jd}|d}tddD ]0}||  d||d   d||d    7  < q(|dd  }| rtjdd	|jd d
 d}||jd d  }	|d }
tj||d d d}n|jd d }	|jd d
 }
||f|	 }t
||	|
|d}t|tjstd S )Nr   i  r   g?r8   r   r   z1960-1-1r_      )r^   Zperiodsir   )r    )r$   r(   r)   r+   rangers   Z
date_rangeshapeZSeriesfitr   r}   r!   ZFigurer   )r   r   r    modelkwargsr2   yiru   startendresr.   r4   r4   r5   test_predict_plot+  s     
.r   )1Zstatsmodels.compat.pythonr   ry   ior   r   numpyr$   Znumpy.testingr   r   Zpandasrs   r   Zstatsmodels.datasetsr   r   Zstatsmodels.graphics.tsaplotsr   r	   r
   r   r   r   Zstatsmodels.tsar   r&   Zstatsmodels.tsa.ar_modelr   Zstatsmodels.tsa.arima.modelr   Z
matplotlibr   r!   ImportErrormarkr6   r<   r?   rP   rQ   rU   rV   r   r   r   Zparametrizedictr   r4   r4   r4   r5   <module>   sX    



(



1

